Grouped Bar Chart

Cluster bars together to compare sub-categories side by side for each primary dimension.

npm install @plocks/charts

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 }} /> ); }
Scan to open this page on your phoneplocks.dev/charts/GroupedBarChart