How should I visualize the average of two bars in a bar chart?

I am presenting results from an experiment in an academic publication. Here is what the figure currently looks like:

The gray bars are the averages of the red and the blue bars.

Goals

• I want to show the reader how the methods perform on average, as displayed by the gray bars.
• I would also like the reader to be able to compare the methods based on the red bars and based on the blue bars.

Problem

Right now, the visual complexity is quite high and the repetitive color pattern makes it hard to immediately see what's going on.

I have tried removing the gray bars and displaying them as horizontal lines between the red and the blue bars, but that did not look good either:

• The proper way is the second way but you can connect the dots to make a line showing the average.
– JonH
Nov 12, 2020 at 18:11
• Are you really suggesting a reader capable of understanding that sort of data won't absorb it better without the interference of the grey bars? Either way, how do the red bars and blue bars help the reader to I would also like the reader to be able to compare methods? Results, surely, but methods, how? Nov 12, 2020 at 20:11
• Simply making the order (red, grey, blue) instead of (red, blue grey) solves a lot of the problems with clutter. Nov 13, 2020 at 5:43
• This isn't an appropriate use of a bar graph anyway. Use a scatterplot, violin, or boxplot to show the distribution around the mean. Nov 13, 2020 at 14:47
• I would just stick with your second and add a legend entry for the line (maybe make the lines a little less wide). Also, reconsider your colors; they might be little hard to distinguish if they're printed in grayscale or for someone with total colorblindness. Nov 13, 2020 at 19:34

You could show the average in a large bar, and put the separate categories inside in smaller bars.

If you use Excel and use two axes, make sure they both have the same scale.

• +1 This is an elegant solution, that is very hard to mistake for anything else! :) Nov 14, 2020 at 15:50

If you really just mean the average of the two numbers, why not just leave the gray bars out, with nothing in their place? It's pretty easy to estimate visually. I think that's why there are few examples for you to base your design on.

• It's easy to imagine datasets for which the average is not easy to estimate visually. Nov 13, 2020 at 14:32

A simple idea would be to show the average as a line graph, like this:

• Thank you for this suggestion! I like that it highlights the performance difference between neighboring methods. On the other hand, the curve might suggest some kind of trend, as if the x-axis would display a numeric quantity. However, interpolating between two methods does not really make sense. Do you have an idea of how to fix this? Nov 12, 2020 at 11:14
• Personally, I wouldn't be inclined to interpolate, because the chart shows bars as well. But YMMV. Perhaps using a dashed or dotted line would help? Nov 12, 2020 at 19:20
• Personally, I hate joining things up with a line if the x axis is not naturally totally ordered. It’s very misleading. Nov 13, 2020 at 5:31
• @AdamChalcraft exactly. It suggests that UFO is the average of FB and SAT, for example. Nov 15, 2020 at 7:48
• This is the solution that is used in some popular libraries, like highcarts, so it must be pretty common... For me, the most elegant solution for average is a vertical line for every set of data, 1 px width, in the middle, but only if the evolution is not important. If on the x-axis are month, for example, the evolution of the average is ok to be visualized as a line graph. Dec 11, 2020 at 14:16

Your second one seems fine to me to be honest. It's the least extra 'ink', and it's how single series bar charts show averages, you're just doing it for the items at each x value. You can see an example here for your exact situation --> https://peltiertech.com/add-individual-target-lines-to-each-column-chart-cluster/

What you will find is that it's fiddly to do this in most chart drawing packages (that link has a way of doing it though for excel)

• I agree. I think OP's second one is better than any of the 5 alternatives suggested so far. The only change I would make is add a 3rd legend entry to show the black line as the mean/avg Nov 13, 2020 at 19:21

Given that you want the viewer to focus on the average value (but with the individual components available for comparison), I would make the central bar represent the average, and make it wider than the bars either side (representing CPU and GPU alone). I would also probably go with a more "standout" colour than grey for the average:

The widths of the outside bars and their colour/brightness compared to the central bar will affect how much (or how little) they will fade into the background.

Thank you for your answers! They have all been insightful and I don't think it makes sense to accept a single answer since the specific requirements differ from case to case.

Here is what I went with in the end. It is very similar to plotting small horizontal lines, but I found the diamond markers to be much more visually appealing.

• I would say black ticks were best of all. But it depends on what you want to accent in your chart, of course. With ticks it is a bit easier to see actual values. Nov 16, 2020 at 10:16
• That's what I like about the diamond markers - their left and right corners still make it easy to see the actual values. Nov 16, 2020 at 10:33