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
| Scenario | Dimension | Measures |
|---|---|---|
| Revenue vs. cost by region | Region | Sum of revenue, Sum of cost |
| Planned vs. actual by quarter | Quarter | Sum of plan, Sum of actual |
| New vs. returning users by channel | Acquisition channel | Count of new users, Count of returning users |
| Gross profit vs. net profit by product line | Product line | Sum of gross profit, Sum of net profit |
| Budget vs. spend by department | Department | Sum of budget, Sum of spend |
Required Inputs
| Field | Type | Count |
|---|---|---|
| Dimension | Categorical or Date | Exactly 1 |
| Measure | Numeric | 2 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.
| Control | What it does |
|---|---|
| Show Chart Title | Shows or hides the title. The text is preserved when hidden so you can toggle it back without re-entering. |
| Enter Chart Title | Title text. Maximum 50 characters. |
| Font family | Font applied to the title. |
| Font size | 5 to 30. |
| Bold / Italic | Weight and style. |
| Alignment | Left, 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.
| Control | What it does |
|---|---|
| Background Color | Fill 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.
| Control | What it does |
|---|---|
| Cluster Gap | Space 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 Color | The 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 Color | The color at the top of each bar. Set to a lighter or darker shade of the Start Color for a subtle gradient effect. |
| Background Color | A 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.
| Control | What it does |
|---|---|
| Show Data Labels | Shows or hides value labels on each bar. |
| Font family | Font applied to data labels. |
| Font size | Maximum 18. On dense clusters, keep this at 10 or below to avoid label collision between adjacent bars. |
| Bold / Italic / Color | Text styling. |
| Position | Where 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 Type | Default (raw value), Scientific, Decimal, or Percentage. |
| Display Unit | None, Thousand, Million, or Billion. Match this to the Y-axis Display Unit. |
| Decimal Places | 0 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.
| Control | What it does |
|---|---|
| Show Legends | Shows or hides the legend. On by default. Hiding it on a multi-measure chart removes the only visual key to measure identity. |
| Vertical position | Top, middle, or bottom alignment of the legend block relative to the chart area. Top is the default. |
| Horizontal position | Start, center, or end alignment. |
| Show Name | Default: legend item labels are always visible. On Hover: labels appear only when the viewer hovers the legend. Use Default on shared or exported dashboards. |
| Orientation | Vertical: 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 Gap | Spacing between legend items. Increase if legend items are crowding each other. |
| Font Size | Legend label font size. |
| Color | Legend 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.
| Control | What it does |
|---|---|
| Show Axis Name | Shows or hides the axis name label. |
| Axis name text | Label text. Maximum 20 characters. Defaults to the field name. |
| Font family | Font applied to the axis name. |
| Font size | 5 to 30. |
| Bold / Italic | Weight 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. |
| Alignment | Start, 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.
| Control | What it does |
|---|---|
| Show Axis Line | Shows or hides the axis line. Hiding it also hides ticks. |
| Line Color | Color of the axis line. |
| Line Width | Thickness of the axis line, 0 to 5. |
| Line Type | Solid, Dashed, or Dotted. |
| Show Ticks | Shows or hides tick marks on the axis line. |
| Tick Color | Color of the tick marks. |
| Tick Length | Length of the tick marks, 5 to 10. |
| Boundary Gap | Adds 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.
| Control | What it does |
|---|---|
| Show Axis Label | Shows or hides labels along the axis. |
| Font family | Font applied to axis labels. |
| Font size | Label font size. |
| Bold / Italic / Color | Text styling. |
| Rotation | Angle 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 case | Title Case, Uppercase, or Lowercase. Available on the categorical axis (X) only. |
| Display Unit | Scale 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.
| Control | What it does |
|---|---|
| Show Gridlines | Shows or hides grid lines for the selected axis. |
| Grid Color | Color of the grid lines. |
| Left / Right / Top / Bottom | Plot 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.
| Control | What it does |
|---|---|
| Show Tooltip | Shows or hides the tooltip on hover. |
| Trigger | Item: 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. |
| Pointer | When 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 Color | Tooltip background color. |
| Headers / Values tabs | Separate 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.
| Control | What it does |
|---|---|
| Enable Animation | Turns the build animation on or off. |
| Duration | How long the animation runs, 0 to 3000ms. The default is 1000ms. |
| Delay | Time before the animation starts after the chart loads, 0 to 2000ms. |
| Easing Function | The 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.
| Control | What it does |
|---|---|
| Show Data Zoom | Shows or hides the zoom control. |
| Zoom Type | Slider: 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. |
| Position | Vertical position of the slider: Top, Middle, or Bottom. Bottom is the convention. |
| Alignment | Horizontal position: Left, Center, or Right. |
| Orientation | Horizontal or Vertical. Horizontal scrolls across categories, which is the standard orientation for a bar chart. |
| Show Detail Label | Shows range values at the slider handles so viewers know which categories they are viewing. |
| Background Color | Slider background. |
| Filler Color | Color of the selected range inside the slider. |
| Border Color | Slider border. |
| Handle Color | Color of the drag handles. |
| Brush Selection | Enables 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.
| Control | What it does |
|---|---|
| Show Emphasis | Enables or disables the hover effect entirely. |
| Focus Type | Item: 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 Scale | Scales 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 Size | How 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.
| Control | What it does |
|---|---|
| Show Toolbox | Shows or hides the toolbox icon bar. |
| Save as Image | Adds a download icon that saves the chart as a PNG. |
| Data View | Adds 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