Edilitics | Data to Decisions

Grouped Bar Chart

Compare two to ten measures side by side per category. One dimension, multiple measures, grouped bars per category.

A grouped bar chart (also called a clustered bar chart) places multiple measures side by side within each category, so viewers can compare values both across measures and across categories in a single view.

Drop one categorical or date field into Column and two or more numeric fields into Row. Each measure becomes a separate bar within each category cluster. Bar height encodes the value. Position within the cluster encodes which measure you are looking at.

When to Use

The grouped bar chart works when the question involves comparing the same set of measures across the same categories at the same time. Revenue versus cost by region. Planned versus actual versus forecast by quarter. Budget versus spend by department. The grouped layout lets viewers read across each cluster to compare measures within a category, and read across clusters to compare the same measure across categories.

Cluster width collapses with too many measures or too many categories. With 5 measures and 12 categories, there are 60 individual bars in the chart. Each bar is a few pixels wide and the legend is the only way to tell them apart. Rule of thumb: keep the product of measures times categories under 40. Beyond that, either reduce the measure count, reduce the category count in Transform, or switch to a table where every value is readable.

Switch to a different chart when:

  • You have only one measure per category - use Basic Bar
  • The question is about how measures compose a total, not their absolute values - use Stacked Bar
  • You have more than 10 categories and more than 3 measures - use a table
  • Your dimension is time and trend lines are more useful than grouped bars - use Line Chart
ScenarioDimensionMeasures
Revenue vs. cost by regionRegionSum of revenue, Sum of cost
Planned vs. actual by quarterQuarterSum of plan, Sum of actual
New vs. returning users by channelAcquisition channelCount of new users, Count of returning users
Gross profit vs. net profit by product lineProduct lineSum of gross profit, Sum of net profit
Budget vs. spend by departmentDepartmentSum of budget, Sum of spend

Required Inputs

FieldTypeCount
DimensionCategorical or DateExactly 1
MeasureNumeric2 to 10

For step-by-step build instructions, see Build Your First Chart.

Formatting Options

The Format tab unlocks after at least one field is assigned. Once your chart is rendering, use these controls to define how it looks and how viewers interact with it.

Style

The title sits above the chart and defaults to the name you gave the visualization at save time. On a multi-measure chart, the title carries extra weight - without it, viewers need the legend alone to understand what they are comparing.

ControlWhat it does
Show Chart TitleShows or hides the title. The text is preserved when hidden so you can toggle it back without re-entering.
Enter Chart TitleTitle text. Maximum 50 characters.
Font familyFont applied to the title.
Font size5 to 30.
Bold / ItalicWeight and style.
AlignmentLeft, center, or right within the chart container.

Defaults to transparent, inheriting the dashboard canvas color. Set an explicit color when the chart needs a distinct surface inside a card layout, or when exporting as a standalone image and a white background is required.

ControlWhat it does
Background ColorFill color of the chart container.

Reach for these controls when bars feel visually flat, clusters are too tight, or the chart needs a background track to show capacity against a target. On a grouped bar chart, all measures share the same gradient style - the legend differentiates them by position within each cluster, not by individual bar color.

ControlWhat it does
Cluster GapSpace between category clusters, 0 to 100. At low values, clusters pack tightly and bars within each cluster become narrower. At high values, clusters are well-separated but each bar is narrower. Keep between 20 and 50 for most layouts.
Gradient Start ColorThe color at the base of each bar. Used as the solid fill color when no gradient is needed - set Start and End to the same color for a flat fill.
Gradient End ColorThe color at the top of each bar. Set to a lighter or darker shade of the Start Color for a subtle gradient effect.
Background ColorA secondary color filling the full axis height behind each bar cluster, like a track. Use this to show remaining capacity against a fixed target. Leave it off if there is no reference value to show.
Corner Radius (top-left, bottom-left, top-right, bottom-right)Rounds bar corners independently, 0 to 10 each. Rounded tops (4 to 6) suit card-style dashboard layouts. At high category counts the bars are already narrow - pushing corner radius to 10 turns narrow bars into pill shapes and the height encoding breaks down.

Data labels print the exact value on or above each bar. On a grouped bar chart with 4 or more measures, labels from adjacent bars in the same cluster will overlap unless font size is very small. Use data labels on charts with 2 to 3 measures and no more than 8 categories.

ControlWhat it does
Show Data LabelsShows or hides value labels on each bar.
Font familyFont applied to data labels.
Font sizeMaximum 18. On dense clusters, keep this at 10 or below to avoid label collision between adjacent bars.
Bold / Italic / ColorText styling.
PositionWhere the label sits on the bar: Top (above), Middle (centered), or Bottom (at the base). Top is the most readable. Middle works when bars are tall enough for the label to fit inside without overlapping the bar from the adjacent measure.
Number TypeDefault (raw value), Scientific, Decimal, or Percentage.
Display UnitNone, Thousand, Million, or Billion. Match this to the Y-axis Display Unit.
Decimal Places0 to 6. Available when Number Type is not Default.

The legend is the primary way viewers identify which bar corresponds to which measure in a grouped bar chart. Do not hide it unless the chart title or axis labels already make the measure assignment unambiguous.

ControlWhat it does
Show LegendsShows or hides the legend. On by default. Hiding it on a multi-measure chart removes the only visual key to measure identity.
Vertical positionTop, middle, or bottom alignment of the legend block relative to the chart area. Top is the default.
Horizontal positionStart, center, or end alignment.
Show NameDefault: legend item labels are always visible. On Hover: labels appear only when the viewer hovers the legend. Use Default on shared or exported dashboards.
OrientationVertical: legend items stacked in a column. Horizontal: legend items in a row. Horizontal works best when legend labels are short and there are 4 or fewer measures. Vertical suits longer measure names.
Item GapSpacing between legend items. Increase if legend items are crowding each other.
Font SizeLegend label font size.
ColorLegend label text color.

Axes

The axis name sits alongside the axis line - below the category labels on X, to the left of the value scale on Y. On a multi-measure chart, the Y-axis name is more important than on a single-measure chart because the axis scale represents the shared unit across all measures. If measures are in different units (currency and count on one chart), note it in the axis name or title.

Select X or Y before making changes. Settings apply to the selected axis only.

ControlWhat it does
Show Axis NameShows or hides the axis name label.
Axis name textLabel text. Maximum 20 characters. Defaults to the field name.
Font familyFont applied to the axis name.
Font size5 to 30.
Bold / ItalicWeight and style.
Offset (%)Distance between the axis name and the axis line as a percentage of the chart dimension. Increase if the axis name overlaps the axis labels below it.
AlignmentStart, center, or end along the axis.

Leave these at their defaults unless you are building a minimal dashboard layout where the axis border adds visual noise that grid lines already handle. Hiding the axis line also removes ticks - do that only when the chart has enough other spatial reference that category alignment is still clear.

Select X or Y before making changes.

ControlWhat it does
Show Axis LineShows or hides the axis line. Hiding it also hides ticks.
Line ColorColor of the axis line.
Line WidthThickness of the axis line, 0 to 5.
Line TypeSolid, Dashed, or Dotted.
Show TicksShows or hides tick marks on the axis line.
Tick ColorColor of the tick marks.
Tick LengthLength of the tick marks, 5 to 10.
Boundary GapAdds padding at both ends of the category axis so the first and last clusters do not sit flush against the chart edges. On by default.

Axis labels are the text values along each axis - category names on X, numeric scale on Y. On a grouped bar chart with many measures, X-axis category labels often need rotation because cluster width narrows as measure count increases.

Select X or Y before making changes. Hiding axis labels also hides the axis name.

ControlWhat it does
Show Axis LabelShows or hides labels along the axis.
Font familyFont applied to axis labels.
Font sizeLabel font size.
Bold / Italic / ColorText styling.
RotationAngle of category label text. With 3 or more measures per category, cluster width shrinks and category names collide at 0 degrees faster than they do on a basic bar chart. Set rotation to 30 or 45 degrees as a default on any grouped chart with more than 6 categories.
Text caseTitle Case, Uppercase, or Lowercase. Available on the categorical axis (X) only.
Display UnitScale for numeric axis labels: Auto, None, Thousand, Million, or Billion. Available on the value axis (Y) only.

Grid lines give viewers a horizontal reference to trace a bar back to its value on the Y-axis. Y-axis grid lines are on by default. X-axis grid lines run vertically and cut through every bar cluster - they add visual complexity on an already-busy grouped chart. Leave X-axis grid lines off.

Select X or Y before making changes.

ControlWhat it does
Show GridlinesShows or hides grid lines for the selected axis.
Grid ColorColor of the grid lines.
Left / Right / Top / BottomPlot area margins as a percentage. Increase Bottom when rotated axis labels are clipped by the chart edge. Increase Left when large Y-axis numbers run into the plot area.

Interactivity

The tooltip appears when a viewer hovers over a bar. On a multi-measure chart, the tooltip is especially useful - it shows all measure values for the hovered category in a single pop-up, so viewers get the full comparison without reading individual bar heights.

ControlWhat it does
Show TooltipShows or hides the tooltip on hover.
TriggerItem: tooltip shows data for the specific hovered bar only. Axis: tooltip shows all measure values for the hovered category position. Use Axis on a grouped bar chart - it gives viewers the full cluster comparison in one hover, which is the whole point of a grouped bar chart.
PointerWhen Trigger is Axis: the visual indicator shown on the axis - Line, Shadow, Cross, or None. Shadow highlights the full cluster area at the hovered position.
Background ColorTooltip background color.
Headers / Values tabsSeparate styling for the dimension label row (Headers) and the measure value rows (Values). The Values tab includes Number Type, Display Unit, and Decimal Places.

Keep animation on for presentation dashboards where the build sequence draws attention to the data. Turn it off on operational dashboards that auto-refresh on a short interval - repeated animations on every data load become distracting quickly and signal instability rather than freshness.

ControlWhat it does
Enable AnimationTurns the build animation on or off.
DurationHow long the animation runs, 0 to 3000ms. The default is 1000ms.
DelayTime before the animation starts after the chart loads, 0 to 2000ms.
Easing FunctionThe motion curve of the animation. Cubic Out (the default) gives a natural deceleration. Elastic and Bounce are attention-grabbing - use them deliberately on presentation dashboards, not on operational ones.

Data Zoom lets viewers scroll or zoom across the category axis when there are more categories than fit in the chart width. On a grouped bar chart, the effective capacity per chart width is lower than on a basic bar chart because each category takes up multiple bar widths.

ControlWhat it does
Show Data ZoomShows or hides the zoom control.
Zoom TypeSlider: a draggable range bar below the chart. Inside: scroll-to-zoom directly on the plot area. Use Slider on dashboards where viewers expect a scrollbar UI. Avoid Inside on trackpad-scrolled dashboards.
Slider Size (px)Height of the slider bar, 10 to 100. Slider type only.
PositionVertical position of the slider: Top, Middle, or Bottom. Bottom is the convention.
AlignmentHorizontal position: Left, Center, or Right.
OrientationHorizontal or Vertical. Horizontal scrolls across categories, which is the standard orientation for a bar chart.
Show Detail LabelShows range values at the slider handles so viewers know which categories they are viewing.
Background ColorSlider background.
Filler ColorColor of the selected range inside the slider.
Border ColorSlider border.
Handle ColorColor of the drag handles.
Brush SelectionEnables click-and-drag on the chart to zoom into a range.

Avoid Zoom Type "Inside" on dashboards that viewers scroll with a trackpad. Scroll events captured by the chart zoom the chart instead of scrolling the page, which is disorienting and hard to exit without knowing to click outside the chart first.

Emphasis controls the hover highlight effect on individual bars. On a grouped bar chart, Series focus is more useful than Item - it highlights all bars of the same measure across every cluster, letting viewers trace one measure clearly through the full dimension.

ControlWhat it does
Show EmphasisEnables or disables the hover effect entirely.
Focus TypeItem: highlights only the hovered bar and dims all others. Series: highlights all bars of the same measure across every cluster and dims the rest. None: no visual change on hover. Use Series on a grouped bar chart with more than 3 measures - it makes individual measure tracking through clusters much easier.
Enable ScaleScales the hovered bar slightly larger. At Scale Size above 1.2 on a dense cluster, scaling causes bars to visually overlap with adjacent bars in the same cluster.
Scale SizeHow much the hovered bar scales up. 1.1 is subtle. 1.5 is aggressive.

Enable the Toolbox when viewers need to export the chart or verify raw values behind the bars - finance reviews, board decks, or any context where a viewer will ask "what is the exact number." Leave it off on embedded public dashboards where export and data access should be locked down.

ControlWhat it does
Show ToolboxShows or hides the toolbox icon bar.
Save as ImageAdds a download icon that saves the chart as a PNG.
Data ViewAdds an icon that opens the underlying data table in the chart area. Viewers can read exact values without hovering every bar.

Best Practices

Keep measure count at 4 or fewer unless the chart is large. At 5 or more measures, clusters become narrow even on wide canvases and the legend needs careful reading to identify each bar. The chart stops being a comparison tool and becomes a data table with visual noise. Four measures at 8 categories is readable. Five measures at 10 categories is not.

Use Axis tooltip trigger, not Item. The entire value of a grouped bar chart is that viewers can see all measures for a category at once. Setting Tooltip Trigger to Axis delivers that - one hover shows the full cluster comparison. Item trigger forces viewers to hover each bar individually, defeating the purpose of the grouped layout.

Match Y-axis scale across all measures. If revenue runs in the millions and order count runs in the hundreds, a shared Y-axis makes the count bars invisible. These measures should not be on the same grouped bar chart. Either normalize the measures to the same unit, split them into two separate charts, or use a Mixed Line and Bar chart with dual axes.

Use Series focus in Emphasis when measure count is high. When a chart has 6 measures per cluster, the individual bar a viewer hovers is nearly indistinguishable from its neighbors. Focus Type "Series" highlights all bars of the same measure across every category, letting viewers trace one measure clearly across the full dimension.

Set axis label rotation before the chart goes to a dashboard. With 3 or more measures, cluster width is narrower than on a basic bar chart, so X-axis labels collide sooner. Default rotation to 30 or 45 degrees on any grouped chart with more than 6 categories. Do not wait for a viewer to report overlapping labels.

FAQs

Need help? Email support@edilitics.com with your workspace, job ID, and context. We reply within one business day.

Last updated on

On this page