Skip to content

React Native bar chart component animated fully on UI thread and non dependecies

Notifications You must be signed in to change notification settings

nachourpi/react-native-animated-charts

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

8 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

react-native-animated-chart

A React Native bar chart component animated fully on UI thread and with non external dependecies

Installation

Run npm install react-native-animated-charts in your project directory.

Usage

This snippet would produce the output shown in the above gif

import React, { Component } from 'react';
import {View, Dimensions, StyleSheet} from 'react-native';
import {BarChart} from 'react-native-animated-charts'


let WIDTH = Dimensions.get('window').width;
let HEIGHT = Dimensions.get('window').height;

export default class Test extends Component {

    constructor() {
        super()

        this.state = {
            dataY:[10,2,1.2,4.5,3],
            labels:['10k','2k','1.2k','4.5k','3k']
        }
    }

    recalculate = ()=>{
        let values = Array.from({length: 5}, () => Math.round(10*Math.random() * 5)/10)
        this.setState({
            dataY:values,
            labels: values.map(v=>(Math.round(v*10)/10)+'k')
        })
    }
    render() {
        return (
                <View style={styles.container}>
                    <BarChart 
                        labels={this.state.labels} 
                        dataY={this.state.dataY} 
                        color={'#a7bd4f'} 
                        height={HEIGHT * .6}
                        containerStyles={styles.barChart}
                    />
                    <TouchableOpacity onPress={this.recalculate} style={styles.button}>
                        <Text style={styles.buttonText}>Recalculate</Text>
                    </TouchableOpacity>
                </View>
        );
      }
}

const styles = StyleSheet.create({
    container: {
        alignItems:"center"
    },
    button: {
        backgroundColor:"#a7bd4f",
        marginTop:30,
        width:WIDTH*.4,
        height:40, 
        borderRadius:30,
        alignItems:"center",
        justifyContent:"center"
    },
    buttonText: {
        color:"white",
        fontSize:18
    },
    barChart: {
        backgroundColor:"transparent",
        height:HEIGHT*.6,
        width:WIDTH,
        marginTop:20
    },
});


Props

The barChart renders data passed by props:

  • dataY: An array containing numeric values to render bars on y-axis.
  • labels: An array of string labels to be shown above the bars . Other styling props:
  • color: A color for the bars.
  • height: A fixed height for the chart.
  • containerStyles: Styles for the barchart container View component.

Pending Tasks

  • Make property for filling x-axis labels.
  • Make the barchart compatible with flex heights, currently it only supports receiving a fixed height

Contributing

This is project is still in beta at the moment, but is still very basic, so if you want to work on the above mention tasks, or you find a bug just open a PR or an issue and ping me!

About

React Native bar chart component animated fully on UI thread and non dependecies

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages