Prop | Type | Description | Default value |
---|---|---|---|
data | Array of barDataItem | An item object represents a bar in the bar chart. It is described in the next table. | _ |
width | number | Width of the Bar chart | width of the parent |
height | number | Height of the Bar chart (excluding the bottom label) | 200 |
onPress | Function | Callback function called on press of a Bar (takes item and index as parameter) | null |
onLongPress | Function | Callback function called on long press of a Bar (takes item and index as parameter) | null |
onPressOut | Function | Callback function called on press out of a Bar (takes item and index as parameter) | null |
focusBarOnPress | boolean | used to focus a bar on press by applying styles defined in focusedBarConfig | false |
focusedBarConfig | FocusedBarConfig | styles for the focused bar including color, width, opacity, borderRadius etc | _ |
maxValue | number | Maximum value shown in the Y axis | 200 |
yAxisOffset | number | Starting (minimum) value in the Y axis (value at the origin) | 0 |
mostNegativeValue | number | The most negative value shown in the Y axis (to be used only if the data set has negative values too) | _ |
noOfSections | number | Number of sections in the Y axis | 10 |
noOfSectionsBelowXAxis | number | Number of sections in the Y axis below X axis (in case the data set has negative values too) | 0 |
stepValue | number | Value of 1 step/section in the Y axis | 20 |
stepHeight | number | Height of 1 step/section in the Y axis | 20 |
spacing | number | Distance between 2 consecutive bars in the Bar chart | 20 |
backgroundColor | ColorValue | Background color of the Bar chart | _ |
scrollref | any | ref object that can be used to control the horizontal ScrollView inside which the chart is rendered | React.useRef() |
scrollToIndex | number | scroll to a particular index on chart load | _ |
disableScroll | boolean | To disable horizontal scroll | false |
showScrollIndicator | boolean | To show horizontal scroll indicator | false |
indicatorColor | String | (iOS only) The color of the scroll indicators - ('black', 'white' or 'default') | default |
showLine | boolean | To show a Line chart over the Bar chart with the same data | false |
lineData | Array of items | The data object for the line chart (use only when showLine is true) | data |
lineConfig | lineConfigType | Properties of the Line chart shown over the Bar chart (lineConfigType) is described below | defaultLineConfig |
lineData2 | Array of items | The data object for the second line chart (use only when showLine is true) | _ |
lineConfig2 | lineConfigType | Properties of the second Line chart shown over the Bar chart (lineConfigType) is described below | defaultLineConfig |
lineBehindBars | boolean | When set to true, the line chart will appear behind the Bars in case of overlap | false |
autoShiftLabels | boolean | When set to true, automatically shifts the X axis labels for negative values | false |
scrollToEnd | boolean | When set to true, the chart automatically scrolls to the rightmost bar | false |
scrollAnimation | boolean | When set to true, scroll animation is visible when the chart automatically scrolls to the rightmost bar | true |
scrollEventThrottle | number | (only for iOS) see https://reactnative.dev/docs/scrollview#scrolleventthrottle-ios | 0 |
onScroll | Function | callback function called when the chart is scrolled horizontally | _ |
initialSpacing | number | distance of the first bar from the Y axis | 40 |
renderTooltip | Function | tooltip component appearing above the bar when it is pressed, takes item and index as parameters | null |
leftShiftForTooltip | number | The distance by which the tooltip component should shift towards left | 0 |
leftShiftForLastIndexTooltip | number | The distance by which the tooltip component of the last bar should shift towards left | 0 |
The lineConfig
prop describes the properties of the line chart that is displayed when we set the showLine
prop to true. The properties allowed by the lineConfig prop are-
type lineConfigType = {
initialSpacing?: number;
spacing?: number;
curved?: boolean;
curvature: number;
curveType: CurveType; //CurveType is an enum defined below
isAnimated?: boolean;
delay?: number;
thickness?: number;
color?: ColorValue | String | any;
hideDataPoints?: boolean;
dataPointsShape?: String;
dataPointsWidth?: number;
dataPointsHeight?: number;
dataPointsColor?: ColorValue | String | any;
dataPointsRadius?: number;
textColor?: ColorValue | String | any;
textFontSize?: number;
textShiftX?: number;
textShiftY?: number;
sfiftX?: number;
shiftY?: number;
startIndex?: number;
endIndex?: number;
showArrow?: boolean;
arrowConfig?: arrowType;
isSecondary?: boolean;
};
type arrowType = {
length?: number;
width?: number;
strokeWidth?: number;
strokeColor?: string;
fillColor?: string;
showArrowBase?: boolean;
};
CurveType -
enum CurveType {
CUBIC,
QUADRATIC,
}
The default value of the lineConfig object is -
defaultLineConfig = {
initialSpacing: initialSpacing,
curved: false,
curvature: 0.2,
curveType: CurveType.CUBIC,
isAnimated: false,
thickness: 1,
color: 'black',
hideDataPoints: false,
dataPointsShape: 'circular',
dataPointsWidth: 4,
dataPointsHeight: 4,
dataPointsColor: 'black',
dataPointsRadius: 3,
textColor: 'gray',
textFontSize: 10,
textShiftX: 0,
textShiftY: 0,
shiftY: 0,
delay: 0,
startIndex: 0,
endIndex: lineData.length - 1,
showArrow: false,
arrowConfig: {
length: 10,
width: 10,
strokeWidth: 1,
strokeColor: 'black',
fillColor: 'none',
showArrowBase: true,
},
isSecondary: false,
};
type FocusedBarConfig = {
color?: ColorValue; // default lightgreen
sideColor?: ColorValue;
topColor?: ColorValue;
gradientColor?: ColorValue;
width?: number;
borderRadius?: number;
roundedTop?: boolean;
roundedBottom?: boolean;
opacity?: number;
barInnerComponent?: (item?: barDataItem, index?: number) => ReactNode;
};
Alert!
These props are correlated:
- maxValue
- noOfSections
- stepValue
They must follow the relation:
maxValue = noOfSections * stepValue;
So, all the three must be used together. Using any 1 or 2 of them may produce absurd results
You can add a line chart to your <BarChart/>
component by passing the showLine
prop.
The properties of this line chart can be controlled using the lineConfig
prop which is an object. The lineConfig
object is described below-
Property | Type | Description | Default value |
---|---|---|---|
initialSpacing | number | distance of the first data point from the Y axis | initialSpacing for the Bar Chart |
curved | boolean | To show curved line joining the data points | false |
isAnimated | boolean | To show animates Line Chart | false |
delay | number | Delay (in milliseconds) before starting the animation of the line | 0 |
thickness | number | Thickness of the Line | 1 |
color | ColorValue | Color of the Line | 'black' |
hideDataPoints | boolean | To hide data points along the Line chart | false |
dataPointsShape | String | Shape of the data points ('rectangular' or 'circular') | 'circular' |
dataPointsWidth | number | Width of data points (when data points' shape is rectangular) | 4 |
dataPointsHeight | number | Height of data points (when data points' shape is rectangular) | 4 |
dataPointsColor | ColorValue | Color of the data points | 'black' |
dataPointsRadius | number | Radius of data points (when data points' shape is circular) | 3 |
textColor | ColorValue | Color of the dataPointText | 'gray' |
textFontSize | number | Font size of the dataPointText | 10 |
textShiftX | number | To shift the dataPointText text horizontally | 0 |
textShiftY | number | To shift the dataPointText text vertically | 0 |
shiftY | number | To shift the Line chart up or down by the given quantity m | 0 |
startIndex | number | Start index for data line (used to display data lines having breaks) | 0 |
endIndex | number | End index for data line (used to display data lines having breaks) | lineData.length -1 |
Key | Value type | Description |
---|---|---|
value | number | Value of the item representing height of the bar |
barWidth | number | Width of the bar |
onPress | function | Function called on pressing the bar |
onLongPress | function | Function called on long pressing the bar |
onPressOut | Function | Callback function called on press out of a bar |
disablePress | boolean | Prop to disable the press action, defaults to false |
frontColor | ColorValue | Color of the bar |
sideColor | ColorValue | Color of the side view of the bar, only for 3 D |
sideWidth | number | Width of the side view of the bar, only for 3 D |
topColor | ColorValue | Color of the top view of the bar, only for 3 D |
barStyle | object | style object for the Bars |
showGradient | boolean | Prop to enable linear gradient for the bar color, defaults to false |
gradientColor | ColorValue | Along with frontColor, this prop constitutes the 2 colors for gradient |
label | string | Label text appearing below the bar (under the X axis) |
labelWidth | number | Width of the Label text appearing below the bar (under the X axis) |
labelTextStyle | object | Style object for the label text appearing below the bar |
labelComponent | Component | Custom label component appearing below the bar |
topLabelComponent | Component | Custom component appearing above the bar |
topLabelContainerStyle | object | Style object for the container of the custom component appearing above the bar |
cappedBars | boolean | To show caps on the top of bar |
capThickness | number | Thickness of the bar cap |
capColor | ColorValue | Color of the bar cap |
capRadius | number | Border radius of the bar cap |
barBorderRadius | number | Border radius of the bar |
barBorderTopLeftRadius | number | Top left border radius of the bar |
barBorderTopRightRadius | number | Top right border radius of the bar |
barBorderBottomLeftRadius | number | Bottom left border radius of the bar |
barBorderBottomRightRadius | number | Bottom right border radius of the bar |
barMarginBottom | number | margin at the bottom of the bar (above X axis) |
spacing | number | Distance of the next Bar from the currennt Bar |
barBackgroundPattern | Component | A svg component containing the background pattern for bars |
patternId | String | ID of the pattern component |
leftShiftForTooltip | number | The distance by which the tooltip component should shift towards left |
showXAxisIndex | boolean | show small graduation at the X axis for the corresponding bar |
Prop | Type | Description | Default value |
---|---|---|---|
xAxisLength | number | X axis length | width of the chart |
xAxisColor | ColorValue | X axis color | black |
xAxisThickness | number | X axis thickness | 1 |
yAxisColor | ColorValue | Y axis color | black |
yAxisThickness | number | Y axis thickness | 1 |
yAxisExtraHeight | number | Extra length of Y axis at the top | (height / 20) |
xAxisType | RuleType | solid or dotted/dashed | solid |
yAxisLabelWidth | number | Width of the Y axis Label container | 35 |
yAxisTextStyle | object | Style object for the Y axis text style | _ |
yAxisTextNumberOfLines | number | Number of lines for y axis label text | 1 |
yAxisLabelContainerStyle | object | Style object for the Y axis label container | _ |
trimYAxisAtTop | boolean | Removes the extra length of the Y axis from the top | false |
horizontalRulesStyle | object | Style object for the horizontal rules container | _ |
showFractionalValues | boolean | Allow fractional values for the Y axis label | false |
roundToDigits | number | Rounds the y axis values to given number of digits after decimal point | 1 |
yAxisLabelPrefix | String | The String prepended to the y axis label text (for example- '$') | '' |
yAxisLabelSuffix | String | The String appended to the y axis label text | '' |
hideYAxisText | boolean | To hide Y axis label text | false |
formatYLabel | (label: string) => string | a callback function that takes the label generated by the library and modifies it. | _ |
yAxisSide | String | Tells which side of the chart, should the y axis be present, defaults to 'left' | 'left' |
rulesLength | number | Length of the horizontal rules | width of the chart |
rulesColor | ColorValue | Color of the horizontal rules | lightgray |
rulesThickness | number | Thickness of the horizontal rules | 1 |
hideRules | boolean | To hide the horizontal rules | false |
rulesType | RuleType | solid or dotted/dashed | solid |
dashWidth | number | width of each dash | 4 |
dashGap | number | gap between 2 dashes | 8 |
rulesConfigArray | Array | Array of rulesConfig objects, used to customise the properties (like color, type etc) of specific rules | _ |
showReferenceLine1 | boolean | show reference line | false |
referenceLine1Config | referenceConfigType | properties of reference line like thickness, color etc (described below the table) | _ |
referenceLine1Position | number | position of reference line | containerHeight / 2 |
showReferenceLine2 | boolean | show second reference line | false |
referenceLine2Config | referenceConfigType | properties of reference line like thickness, color etc (described below the table) | _ |
referenceLine2Position | number | position of second reference line | 3*containerHeight / 2 |
showReferenceLine3 | boolean | show third reference line | false |
referenceLine3Config | referenceConfigType | properties of reference line like thickness, color etc (described below the table) | _ |
referenceLine3Position | number | position of third reference line | containerHeight / 3 |
referenceLinesOverChartContent | boolean | used to render the reference lines over the rest of the chart content. | true |
showVerticalLines | boolean | To show vertical lines | false |
verticalLinesColor | ColorValue | Color of the vertical lines | lightgray |
verticallinesThickness | number | Thickness of the vertical lines | 1 |
verticalLinesHeight | number | Height of the vertical lines | chart height |
verticalLinesStrokeDashArray | Array | Array of 2 numbers denoting the dashWidth and dashGap of the lines. Used to render dashed/dotted vertical line | '' |
verticalLinesShift | number | vertical lines are aligned with bars. Shift them left or right using +ve or -ve value of verticalLinesShift | 0 |
verticalLinesZIndex | number | Z index of the vertical lines | -1 |
noOfVerticalLines | number | Number of vertical lines displayed | data.length |
verticalLinesSpacing | number | Distance between consecutive vertical lines | spacing |
showXAxisIndices | boolean | To show the pointers on the X axis | false |
xAxisIndicesHeight | number | Height of the pointers on the X axis | 2 |
xAxisIndicesWidth | number | Width of the pointers on the X axis | 4 |
xAxisIndicesColor | ColorValue | Color of the pointers on the X axis | black |
showYAxisIndices | boolean | To show the pointers on the Y axis | false |
yAxisIndicesHeight | number | Height of the pointers on the Y axis | 2 |
yAxisIndicesWidth | number | Width of the pointers on the Y axis | 4 |
yAxisIndicesColor | ColorValue | Color of the pointers on the X axis | black |
yAxisLabelTexts | Array | Array of label texts to be displayed along y axis | null |
xAxisLabelTexts | Array | Array of label texts to be displayed below x axis | null |
xAxisLabelTextStyle | object | Style of label texts to be displayed below x axis | null |
rotateLabel | boolean | To rotate the X axis labels (by 60deg) | false |
hideAxesAndRules | boolean | To hide axes, rules, labels altogether | false |
hideOrigin | boolean | To hide the y Axis label at origin (i.e. 0) | false |
labelWidth | number | Width of the Label text appearing below the bar (under the X axis) | barWidth |
xAxisTextNumberOfLines | number | Number of lines for x axis label text | 1 |
xAxisLabelsHeight | number | Height of X axis labels container | xAxisTextNumberOfLines * 18 |
xAxisLabelsVerticalShift | number | prop to adjust the vertical position of X axis labels (move X axis labels up or down) | 0 |
labelsExtraHeight | number | used to display large rotated labels on X-axis (use this only when using the rotateLabel prop) | 0 |
secondaryYAxis | secondaryYAxisType | displays and controls the properties of the secondary Y axis on the right side | null |
secondaryData | Array of items | the secondary data that will be rendered along the secondary Y axis | undefined |
Note If you are setting yAxisSide to 'right', make sure to specify the width of the chart, using the width
prop.
type RuleType = 'solid' | 'dashed' | 'dotted';
type RulesConfig = {
rulesLength?: number;
rulesColor?: ColorValue;
rulesThickness?: number;
rulesType?: RuleType;
dashWidth?: number;
dashGap?: number;
};
ReferenceConfigType has following properties-
type referenceConfigType = {
thickness: number;
width: number;
color: ColorValue | String | any;
type: ruleTypes;
dashWidth: number;
dashGap: number;
labelText: String;
labelTextStyle: object;
zIndex: number;
stripBehindBars: boolean;
};
Use this prop to render a secondary Y axis on the right side of the chart. secondaryYAxis is an object of type of secondaryYAxisType You can control the properties of secodary Y axis by passing an object of properties. Following is the type definition of the secondaryYAxisType object
type secondaryYAxisType = {
noOfSections?: number,
maxValue?: number,
mostNegativeValue?: nuepValue?: number,
stepHeight?: number,
showFractionalValues?: boolean,
roundToDigits?: number,
showYAxisIndices?: boolean,
yAxisIndicesHeight?: number,
yAxisIndicesWidth?: number,
yAxisIndicesColor?: ColorValue,
yAxisSide?: yAxisSides,
yAxisOffset?: number,
yAxisThickness?: number,
yAxisColor?: ColorValue,
yAxisLabelContainerStyle?: any,
yAxisLabelTexts: Array<string> | undefined,
yAxisTextStyle?: any,
yAxisTextNumberOfLines?: number,
yAxisLabelWidth?: number,
hideYAxisText?: boolean,
yAxisLabelPrefix?: string,
yAxisLabelSuffix?: string,
hideOrigin?: boolean,
formatYLabel?: (label: string) => string;
};
All the properties are optional. If you don't set a property in the secondaryYAxis, it takes the default values from the primary Y axis.
Prop | Type | Description | Default value |
---|---|---|---|
barWidth | number | Width of the bar | 30 |
barStyle | object | style object for the Bars | _ |
isThreeD | boolean | Prop to render 3 dimensional bars | false |
frontColor | ColorValue | Color of the bar | 'black' for 2D, '#C0CA3A' for 3D |
sideColor | ColorValue | Color of the side view of the bar, only for 3 D | '#887A24' |
topColor | ColorValue | Color of the top view of the bar, only for 3 D | '#D9E676' |
sideWidth | number | Width of the side view of the bar, only for 3 D | barWidth / 2 |
showGradient | boolean | Prop to enable linear gradient for the bar color | false |
gradientColor | ColorValue | Along with frontColor, gradientColor constitutes the 2 colors for gradient | white |
roundedTop | boolean | To show rounded top | white |
roundedBottom | boolean | To show rounded bottom | white |
activeOpacity | number | activeOpacity on pressing the bar | 0.2 |
disablePress | boolean | Prop to disable the bar press action | false |
barBorderWidth | number | Border width of the bar | 0 |
barBorderColor | ColorValue | Border color of the bar | 'gray' |
barBorderRadius | number | Border radius of the bar | 0 |
barBorderTopLeftRadius | number | Top left border radius of the bar | barBorderRadius | 0 |
barBorderTopRightRadius | number | Top right border radius of the bar | barBorderRadius | 0 |
barBorderBottomLeftRadius | number | Bottom left border radius of the bar | barBorderRadius | 0 |
barBorderBottomRightRadius | number | Bottom right border radius of the bar | barBorderRadius | 0 |
barMarginBottom | number | margin at the bottom of the bar (above X axis) | 0 |
barBackgroundPattern | Component | A svg component containing the background pattern for bars | _ |
patternId | String | ID of the pattern component | _ |
minHeight | number | Minimum height of the Bars | 0 |
Prop | Type | Description | Default value |
---|---|---|---|
isAnimated | boolean | To show animates BarChart. Animation occurs onLoad and on value change | false |
animationDuration | number | Duration of the animations | 800 |
animationEasing | Easing | Easing applied to the animation | Easing.ease |
Alert!
While rendering an Animated Bar chart, y axis labels may not appear sometimes. This can be fixed using a key prop as shown -
<BarChart key={'xyz'} data={data} isAnimated />
Prop | Type | Description | Default value |
---|---|---|---|
onEndReached | Function | Callback function called when the chart is scrolled upto end | _ |
onStartReached | Function | Callback function called when the chart is scrolled upto start | _ |
endReachedOffset | number | distance before end of scroll when onEndReached should be triggered | 80 |
Prop | Type | Description | Default value |
---|---|---|---|
cappedBars | boolean | To show caps on the top of bars | false |
capThickness | number | Thickness of the bar caps | 6 |
capColor | ColorValue | Color of the bar caps | gray |
capRadius | number | Border radius of the bar caps | 0 |
pointerConfig is an object, when passed as a prop, creates a magical effect. It lets the user scroll over chart to move the pointer along the chart. To know more about pointerConfig, see pointerConfig in the Line chart props page
Prop | Type | Description | Default value |
---|---|---|---|
horizontal | boolean | Render horizontal BarChart | false |
rtl | boolean | Render the chart from right to left | false |
shiftX | number | Shift the chart towards left or right by given value (only in horizontal charts) | 0 |
shiftY | number | Shift the chart upwards or downwards by given value (only in horizontal charts) | 0 |
rotateYAxisTexts | number | angle by which the Y axis label texts should rotate in horizontal charts | -90 |
yAxisAtTop | boolean | In horizontal BarCharts the Y axis appears at bottom by default. Set it to true for otherwise | false |
intactTopLabel | boolean | To rotate the top label component to make it intact with the Bars | false |
The structure of stackData is-
[
{
stacks:
[
{
value: 10, color: 'red', onPres: someFunction
},
{
value: 20, color: 'blue', marginBottom: 1, onPres: someFunction
},
...
],
label: 'Jan',
...otherProps,
},
{
stacks:
[
{
value: 8, color: 'red', onPres: someFunction
},
{
value: 17, color: 'blue', marginBottom: 1, onPres: someFunction
},
...
],
label: 'Feb',
...otherProps,
},
...
]
The stackData passed to the BarChart component is an array of objects.
Each object contains a mandatory key named stacks.
The value corresponding to the stacks key is an array of objects, each object representing a section of the stack.
Prop | Type | Description | Default value |
---|---|---|---|
stackData | Array of stack arrays | A stack array represents a stack of bars in the bar chart. It is described in the next table | false |
barBorderRadius | number | Border radius of each bar of the stack | 0 |
barBorderTopLeftRadius | number | Top left border radius of each bar of the stack | barBorderRadius | 0 |
barBorderTopRightRadius | number | Top right border radius of each bar of the stack | barBorderRadius | 0 |
barBorderBottomLeftRadius | number | Bottom left border radius of each bar of the stack | barBorderRadius | 0 |
barBorderBottomRightRadius | number | Bottom right border radius of each bar of the stack | barBorderRadius | 0 |
stackBorderRadius | number | Border radius of the top and bottom bars of the stack | |
stackBorderTopLeftRadius | number | Top left border radius of the top bar of the stack | |
stackBorderTopRightRadius | number | Top right border radius of the top bar of the stack | |
stackBorderBottomLeftRadius | number | Bottom left border radius of the bottom bar of the stack | |
stackBorderBottomRightRadius | number | Bottom right border radius of the bottom bar of the stack |
Note The frontColor
prop is replaced by color
prop in Stacked Bar charts.
Key | Value type | Description |
---|---|---|
stacks array | Array of stack items | A stack is made of 1 or more objects of the type described in the next table |
label | string | Label text appearing below the stack (under the X axis) |
labelTextStyle | Style object for the label text appearing below the stack | |
barWidth | number | |
spacing | number | |
borderRadius | number | |
borderTopLeftRadius | number | |
borderTopRightRadius | number | |
borderBottomLeftRadius | number | |
borderBottomRightRadius | number |
A single stack item can be depicted as-
Key | Value type | Description |
---|---|---|
value | number | Value of the item representing height of the stack item |
color | ColorValue | Color of the stack item |
onPress | function | Function called on pressing the stack item |
onLongPress | function | Function called on long pressing the stack item |
onPressOut | Function | Callback function called on press out of a bar |
marginBottom | number | margin below a particular stack section |
barBorderRadius | number | Border radius of a stack section |
borderTopLeftRadius | number | borderTopLeftRadius for a stack section |
borderTopRightRadius | number | borderTopRightRadius for a stack section |
borderBottomLeftRadius | number | borderBottomLeftRadius for a stack section |
borderBottomRightRadius | number | borderBottomRightRadius for a stack section |
showGradient | boolean | Prop to enable linear gradient for the bar color, defaults to false |
gradientColor | ColorValue | Along with frontColor, this prop constitutes the 2 colors for gradient |
barWidth | number | Width of the bar |
showXAxisIndex | boolean | show small graduation at the X axis for the corresponding stack |