BarChart
Bar chart with gradient fills, labels, and range lines. Supports vertical/horizontal layout with standard, grouped, stacked, stacked-normalized, stacked-diverging, marimekko, waterfall, and histogram variants.
Import
import {
BarChart,
BarSeries,
Bar,
BarLabel,
GuideBar,
RangeLines,
BarTargetMarker,
StackedBarChart,
StackedBarSeries,
StackedNormalizedBarChart,
StackedNormalizedBarSeries,
MarimekkoChart,
MarimekkoBarSeries,
HistogramBarChart,
HistogramBarSeries
} from 'reaviz';
BarChart Props
| Prop | Type | Default | Description |
|---|
data | ChartDataShape[] | [] | Chart data |
width | number | auto | Width in pixels |
height | number | auto | Height in pixels |
margins | Margins | — | Chart margins |
series | ReactElement<BarSeriesProps> | <BarSeries /> | Series component |
xAxis | ReactElement<LinearAxisProps> | <LinearXAxis type="category" /> | X axis component |
yAxis | ReactElement<LinearAxisProps> | <LinearYAxis type="value" /> | Y axis component |
gridlines | `ReactElement \ | null` | <GridlineSeries /> | Gridlines (null to hide) |
brush | `ReactElement \ | null` | null | Brush selection component |
secondaryAxis | ReactElement[] | — | Additional axis components |
className | string | — | SVG CSS class |
containerClassName | string | — | Container div CSS class |
BarSeries Props
| Prop | Type | Default | Description |
|---|
type | BarType | 'standard' | Chart type (see variants below) |
layout | `'vertical' \ | 'horizontal'` | 'vertical' | Bar direction |
animated | boolean | true | Enable animations |
colorScheme | ColorSchemeType | 'cybertron' | Color scheme name or function |
padding | number | 0.1 | Padding between bars |
groupPadding | number | 16 | Padding between groups |
bar | `BarElement \ | BarElement[]` | <Bar /> | Bar element(s) |
tooltip | `ReactElement \ | null` | <TooltipArea /> | Tooltip component |
valueMarkers | `ReactElement<LinearValueMarkerProps>[] \ | null` | — | Reference lines at specific values |
binSize | number | — | Size of each bin for histogram data |
Bar Props
| Prop | Type | Default | Description |
|---|
gradient | `ReactElement<GradientProps> \ | null` | <Gradient /> | Gradient fill |
mask | `ReactElement<MaskProps> \ | null` | — | SVG pattern mask |
rx | number | 0 | Horizontal corner radius |
ry | number | 0 | Vertical corner radius |
cursor | string | 'auto' | CSS cursor on hover |
minHeight | number | — | Minimum bar height |
activeBrightness | number | 0.5 | Brightness increase on hover |
glow | Glow | — | Glow effect |
label | `ReactElement<BarLabelProps> \ | null` | null | Value label on bar |
guide | `ReactElement<GuideBarProps> \ | null` | null | Background guide bar |
rangeLines | `ReactElement<RangeLinesProps> \ | null` | null | Range indicator lines |
targetMarker | `ReactElement<BarTargetMarkerProps> \ | null` | <BarTargetMarker /> | Target/goal marker |
tooltip | `ReactElement<ChartTooltipProps> \ | null` | — | Per-bar tooltip |
onClick | (event: ClickEvent) => void | — | Click handler |
onMouseEnter | (event) => void | — | Mouse enter handler |
onMouseLeave | (event) => void | — | Mouse leave handler |
BarLabel Props
| Prop | Type | Default | Description |
|---|
position | `'top' \ | 'center' \ | 'bottom'` | 'top' | Label placement |
fill | string | '#000' | Text color |
fontSize | number | 13 | Font size |
fontFamily | string | 'sans-serif' | Font family |
padding | number | 5 | Label padding from bar edge |
className | string | — | CSS class |
GuideBar Props
| Prop | Type | Default | Description |
|---|
fill | string | '#eee' | Guide bar fill color |
opacity | number | 0.15 | Guide bar opacity |
RangeLines Props
| Prop | Type | Default | Description |
|---|
position | `'top' \ | 'bottom'` | 'top' | Line placement |
strokeWidth | number | 1 | Line thickness |
color | string | — | Line color |
BarTargetMarker Props
| Prop | Type | Default | Description |
|---|
fill | string | '#fff' | Target line color |
positiveDeltaFill | string | '#00C49F' | Color when above target |
negativeDeltaFill | string | '#FF7361' | Color when below target |
targetStrokeWidth | number | 2 | Target line thickness |
deltaStrokeWidth | number | 1 | Delta line thickness |
Basic Usage
Single Series (Vertical)
const data = [
{ key: 'DLP', data: 13 },
{ key: 'SIEM', data: 2 },
{ key: 'Tic', data: 7 },
];
<BarChart
width={350}
height={250}
data={data}
/>
Horizontal Layout
<BarChart
width={350}
height={250}
data={data}
xAxis={<LinearXAxis type="value" />}
yAxis={<LinearYAxis type="category" />}
series={<BarSeries layout="horizontal" />}
/>
Grouped Multi-Series
const data = [
{ key: 'Q1', data: [
{ key: 'Sales', data: 10 },
{ key: 'Revenue', data: 15 },
]},
{ key: 'Q2', data: [
{ key: 'Sales', data: 25 },
{ key: 'Revenue', data: 20 },
]},
];
<BarChart
width={550}
height={350}
data={data}
series={<BarSeries type="grouped" colorScheme="cybertron" />}
/>
Stacked
<StackedBarChart
width={550}
height={350}
data={multiSeriesData}
series={<StackedBarSeries colorScheme="cybertron" />}
/>
Stacked Normalized (Percentage)
<StackedNormalizedBarChart
width={550}
height={350}
data={multiSeriesData}
series={<StackedNormalizedBarSeries colorScheme="cybertron" />}
/>
Marimekko
<MarimekkoChart
width={550}
height={350}
data={multiSeriesData}
series={<MarimekkoBarSeries colorScheme="cybertron" />}
/>
Histogram
<HistogramBarChart
width={550}
height={350}
data={data}
series={<HistogramBarSeries binSize={25} />}
/>
Customization
Rounded Corners
<BarChart
data={data}
series={<BarSeries bar={<Bar rx={4} ry={4} />} />}
/>
Bar Labels
<BarChart
data={data}
series={
<BarSeries
bar={<Bar label={<BarLabel position="top" fill="#333" />} />}
/>
}
/>
Guide Bars (Hover Background)
<BarChart
data={data}
series={
<BarSeries
bar={<Bar guide={<GuideBar />} />}
/>
}
/>
Range Lines
<BarChart
data={data}
series={
<BarSeries
bar={<Bar rangeLines={<RangeLines position="top" strokeWidth={3} />} />}
/>
}
/>
Custom Gradient
import { Gradient, GradientStop } from 'reaviz';
<BarChart
data={data}
series={
<BarSeries
bar={
<Bar
gradient={
<Gradient
stops={[
<GradientStop offset="5%" stopOpacity={0.1} />,
<GradientStop offset="90%" stopOpacity={0.7} />,
]}
/>
}
/>
}
/>
}
/>
Pattern Mask
import { Stripes } from 'reaviz';
<BarChart
data={data}
series={<BarSeries bar={<Bar mask={<Stripes />} />} />}
/>
Custom Padding
// Tighter bars
<BarSeries padding={0.05} />
// More spacing
<BarSeries padding={0.3} />
// Group spacing for grouped/stacked
<BarSeries type="grouped" groupPadding={24} />
Value Markers (Reference Lines)
import { LinearValueMarker } from 'reaviz';
<BarChart
data={data}
series={
<BarSeries
valueMarkers={[
<LinearValueMarker value={50} color="#D740BE" />,
]}
/>
}
/>
Click Handling
<BarChart
data={data}
series={
<BarSeries
bar={
<Bar
cursor="pointer"
onClick={({ value, nativeEvent }) => console.log(value)}
/>
}
/>
}
/>
No Gridlines
<BarChart data={data} gridlines={null} />
Bar Types
| Type | Data Shape | Description |
|---|
'standard' | ChartDataShape[] | Single series bars |
'grouped' | ChartNestedDataShape[] | Multi-series side by side |
'stacked' | ChartNestedDataShape[] | Multi-series stacked |
'stackedNormalized' | ChartNestedDataShape[] | Stacked to 100% |
'stackedDiverging' | ChartNestedDataShape[] | Diverging from center |
'marimekko' | ChartNestedDataShape[] | Proportional area (vertical only) |
'waterfall' | ChartDataShape[] | Cumulative running total |
Variant Components
| Component | Description |
|---|
BarChart | Base chart — all types via type prop on series |
StackedBarChart | Pre-configured stacked with range lines |
StackedNormalizedBarChart | Stacked to 100% with percentage Y-axis |
MarimekkoChart | Proportional area chart (vertical only) |
HistogramBarChart | Histogram with bin-based distribution |
BarSeries | Default series |
StackedBarSeries | Series pre-set to type="stacked" with range lines |
StackedNormalizedBarSeries | Series pre-set to type="stackedNormalized" with percentage tooltips |
MarimekkoBarSeries | Series pre-set to type="marimekko" |
HistogramBarSeries | Series for histogram data with range tooltips |