Grouped Bar Chart
Cluster bars together to compare sub-categories side by side for each primary dimension.
Source
LLM docs
Package
npm install @plocks/chartsExamples
6
Properties
50
Playground
Basics
Bar chart grouping multiple series side-by-side for comparison.
Loading demo…
import { GroupedBarChart } from '@plocks/charts';
import { SERIES } from './data';
export function Demo() {
return (
<GroupedBarChart
title="Product revenue by segment"
subtitle="Comparison vs targets"
h={320}
series={SERIES}
barSpacing={0.15}
innerBarSpacing={0.2}
xAxis={{ show: true, title: 'Segment' }}
yAxis={{
show: true,
title: 'Revenue (USD thousands)',
labelFormatter: (value) => `$${value}`,
}}
grid={{ show: true }}
legend={{ show: true, position: 'bottom' }}
animation={{ duration: 450 }}
colorOptions={{ hash: false }}
/>
);
}Experiment Variant By Geo
Loading demo…
import { GroupedBarChart } from '@plocks/charts';
import { SERIES } from './data';
export function Demo() {
return (
<GroupedBarChart
title="Experiment conversion uplift by region"
subtitle="Completed purchases per 100 sessions"
h={340}
series={SERIES}
barSpacing={0.22}
innerBarSpacing={0.18}
xAxis={{
show: true,
title: 'Region',
}}
yAxis={{
show: true,
title: 'Conversion rate (%)',
labelFormatter: (value) => `${value.toFixed(1)}%`,
ticks: [3, 4, 5, 6],
}}
grid={{ show: true }}
legend={{ show: true, position: 'bottom' }}
multiTooltip
liveTooltip
valueLabels={{
show: true,
position: 'outside',
formatter: ({ value }) => `${value.toFixed(1)}%`,
color: '#1F1F24',
fontWeight: '600',
offset: 8,
}}
animation={{ duration: 420 }}
/>
);
}Feature Usage By Platform
Loading demo…
import { GroupedBarChart } from '@plocks/charts';
import { SERIES } from './data';
export function Demo() {
return (
<GroupedBarChart
title="Feature usage by platform"
subtitle="Weekly active users per capability (in thousands)"
h={360}
series={SERIES}
barSpacing={0.18}
innerBarSpacing={0.16}
xAxis={{
show: true,
title: 'Product capability',
}}
yAxis={{
show: true,
title: 'Weekly active users (thousands)',
labelFormatter: (value) => `${value}k`,
}}
grid={{ show: true }}
legend={{ show: true, position: 'bottom' }}
valueLabels={{
show: true,
position: 'inside',
formatter: ({ value }) => `${value}k`,
color: 'rgba(255,255,255,0.96)',
fontWeight: '600',
minBarHeightForInside: 24,
}}
animation={{ duration: 420 }}
/>
);
}Sales Pipeline By Industry
Loading demo…
import { GroupedBarChart } from '@plocks/charts';
import { SERIES } from './data';
export function Demo() {
return (
<GroupedBarChart
title="Sales pipeline by industry"
subtitle="Qualified pipeline this quarter (USD millions)"
h={360}
series={SERIES}
barSpacing={0.2}
innerBarSpacing={0.22}
xAxis={{
show: true,
title: 'Industry vertical',
}}
yAxis={{
show: true,
title: 'Pipeline value (USD millions)',
labelFormatter: (value) => `$${value.toFixed(1)}M`,
ticks: [0, 2, 4, 6],
}}
grid={{ show: true }}
legend={{ show: true, position: 'bottom' }}
valueLabels={{
show: true,
position: 'outside',
formatter: ({ value }) => `$${value.toFixed(1)}M`,
color: '#2F2F35',
fontWeight: '600',
offset: 10,
}}
animation={{ duration: 440 }}
/>
);
}Student Assessment By Grade
Loading demo…
import { GroupedBarChart } from '@plocks/charts';
import { SERIES } from './data';
export function Demo() {
return (
<GroupedBarChart
title="Assessment results by grade level"
subtitle="Spring benchmark proficiency rates"
h={360}
series={SERIES}
barSpacing={0.18}
innerBarSpacing={0.18}
xAxis={{
show: true,
title: 'Subject area',
}}
yAxis={{
show: true,
title: 'Students meeting or exceeding standard (%)',
labelFormatter: (value) => `${value}%`,
ticks: [60, 70, 80, 90, 100],
}}
grid={{ show: true }}
legend={{ show: true, position: 'bottom' }}
valueLabels={{
show: true,
position: 'inside',
formatter: ({ value }) => `${Math.round(value)}%`,
color: 'rgba(255,255,255,0.94)',
fontWeight: '600',
minBarHeightForInside: 20,
}}
animation={{ duration: 430 }}
/>
);
}Supplier On Time By Partner
Loading demo…
import { GroupedBarChart } from '@plocks/charts';
import { SERIES } from './data';
export function Demo() {
return (
<GroupedBarChart
title="On-time delivery by logistics partner"
subtitle="Share of shipments delivered within committed window"
h={360}
series={SERIES}
barSpacing={0.18}
innerBarSpacing={0.16}
xAxis={{
show: true,
title: 'Logistics partner',
}}
yAxis={{
show: true,
title: 'On-time shipments (%)',
labelFormatter: (value) => `${value}%`,
ticks: [80, 85, 90, 95, 100],
}}
grid={{ show: true }}
legend={{ show: true, position: 'bottom' }}
valueLabels={{
show: true,
position: 'inside',
formatter: ({ value }) => `${Math.round(value)}%`,
color: 'rgba(255,255,255,0.95)',
fontWeight: '600',
minBarHeightForInside: 22,
}}
animation={{ duration: 440 }}
/>
);
}Related charts
Further reading
React Native design for iOS, Android, and Web.
Quick Links
Resources