Yet Another Alternative for Bar Charts

Joseph (Geolic)
Aug 12 · 7 min read
A snail that fades into a snail chart.
A snail that fades into a snail chart.
The snail chart is a variation of a bar chart that alters the orientation of the bars to create a spiral look (just like a snail’s house).

The bar chart - the mother of data graphs. Since its introduction in the 18th century by William Playfair, it underwent several alterations, mainly regarding

  • its orientation (vertical and horizontal bar charts)
  • and its arrangement (e.g. grouped and stacked bar charts)

The reason behind the success of bar charts is a simple and intuitive design that makes it easy to interpret the presented data. It is also a widely used graph type which is already deeply integrated into our daily life (through news, articles, dashboards, etc.). Whenever we think about a representation of discrete data we think of bar charts. Even me, a data viz enthusiast, uses bar charts extensively, mostly to provide me with a quick first insight into the data.

However, like every graph type, bar charts also have their drawbacks. One might be that having a large number of bars in the plot makes it look extremely cluttered. Another one is its rather boring (because universally applied) design, or as Amanda Cox summarized it in an interview with the New York Times:

There’s a strand of the data viz world that argues that everything could be a bar chart. That’s possibly true but also possibly a world without joy.


A Sample Case

Let’s consider a case in which we need to display a specific amount of discrete groups with each having a different number of sub-categories. The example that I was confronted with at my recent data story The Kit War were statistics about apparel supplier brands of football teams between 1990 and 2027. Each team had (or had not) several partners throughout that time period that provided it with kits. For simplicity let’s only include data of three teams here, including the team’s name, the brands’ name and the total period of each partnership:

  1. Atlético Madrid
    Nike (25.5 years),
    Puma (8.5 years),
    Reebok (3 years)
  2. Middlesbrough FC
    Errea (15 years),
    Adidas (9 years),
    Hummel (5.5 years),
    Skill (2.5 years),
    Admiral (2 years)
  3. Fulham FC
    Adidas (16.5 years),
    Nike (3 years),
    Kappa (3 years),
    Vandanel (3 years),
    Puma (3 years),
    Ribero (2 years),
    DMF (1 year),
    Le Coq Sportif (1 year),
    Airness (1 year),
    Scoreline (0.5 years)

One (traditional) way to visualize this dataset is by deploying a stacked or grouped bar chart. If we furthermore want to highlight the share of Nike and Adidas in the visualization the final result might look like this:

Visualization of the data with a grouped bar chart.
Visualization of the data with a grouped bar chart.

Or this:

Visualization of the data with a stacked bar chart.
Visualization of the data with a stacked bar chart.

But, well… It’s just not it. The joy is definitely missing here!

Additionally, you probably noticed the bad readability. Especially for the Fulham FC, it is difficult to figure out the number of brands at first glance, which means the viewer is forced to count the columns. Another issue is the lack of comparability of each brand’s share in stacked bar charts and the space that is occupied for grouped bar charts.


The Snail Chart 🐌

What is it?

Similar to the spiral form of a snail’s house, the bars in a snail chart are continuously rotated to create a spiral. They may look different depending on their geometric base shape. Here are some examples with a variety of base shapes using the data of Middlesbrough FC:

Variations of snail charts depending on their geometric base shape (including triangle, square, hexagon and octagon).
Variations of snail charts depending on their geometric base shape (including triangle, square, hexagon and octagon).
The geometric base shape defines the look of a snail chart.

That looks kinda cool! But to make it a real data viz some cues have to be added to derive insights from it. First, let’s include some gridlines:

The snail chart variations with their own grid line version.
The snail chart variations with their own grid line version.

With the usage of grids, it is now possible to get a feeling about the scale of the data. However, with an increasing number of the base shape’s corners, the labeling becomes too confusing, which is why from a hexagon onward a length label may be recommended.

Next, we can take advantage of the spiral form and build in another information channel:

The snail chart variations with the difference cue lines.
The snail chart variations with the difference cue lines.

The black lines represent the difference between the bar’s value that the lines extend from and the predecessor bar. For example, it is possible to judge how many years the orange bar differs from the first one.


How is it worse?

Even though I like the snail chart I need to admit that it is also not free of drawbacks. One of the biggest issues is that of an overlay. You may have noticed that all the bars are ordered descendingly by their value, which indeed is a premise of snail charts. Only by keeping this order a somehow spiral shape can be guaranteed. However, even then it may happen that bars are overlaying each other. This highly depends on three parameters: (1) the number of same or similar values between the bars, (2) the bar width and (3) the choice of the base shape.

For instance, let’s have a look at Fulham FC’s data, using a square base shape:

A visualization of an overlay problem where bars are overlaying each other.
A visualization of an overlay problem where bars are overlaying each other.
The problem of an overlay

Because there are several brands that have been partners with Fulham FC for about the same amount of time the bars are overlaying. To overcome this we can change the base shape to a hexagon and decrease the bar width a little bit:

An altered version of the previous chart without overlay using a hexagonal base shape.
An altered version of the previous chart without overlay using a hexagonal base shape.
Problem solved!

The result looks much more pleasing!

Another disadvantage of a snail chart: the viewer cannot compare total values between teams due to the shape distortion. If you observe the stacked bar chart version again, you may see that the total amount of years is higher for Atlético Madrid than it is for the other two teams (this is because the current contract of Madrid runs longer). But the snail chart (just like the grouped bar chart) cannot communicate this information to the viewer.


How is it better?

Well, it is different and, hence, adds “joy to the world”.

But besides that, it actually introduces rather new information on bar charts: their position. An example of utilizing position to convey information with bar charts is a Gantt chart, where the position provides the user with the (mostly temporal) order of the data instances. For snail charts, the position of the last bar inside the spiral is an additional information channel, because it lets the viewer know about the number of sub-categories at first glance (together with some training).

If we, for instance, take a hexagonal snail chart (just like the above example of the Fulham FC data) the number of edges is known (6). We also know that every 1st, 7th, or 13th bar must be located on the bottom of each starting hexagon in the spiral. By knowing this position value for each edge of the hexagons it is possible to know the total number of bars in the chart. The chart in the example of Fulham FC ends on the second hexagon at its top edge. This means it is the 10th bar and, thus, Fulham FC partnered with 10 brands throughout the analyzed period:

The position of the last bar in a snail chart’s spiral conveys how many bars exist in the chart at first glance.

Once interiorized the viewer doesn’t have to count the bars manually (like one would in a bar chart) but just need to take a look at the position of the last bar within the spiral to know how many sub-categories exist.


Conclusion

The final snail chart version of our data might look like this:

The final side-by-side view of the data’s snail chart versions (using hexagonal base shapes).
The final side-by-side view of the data’s snail chart versions (using hexagonal base shapes).
The data represented as snail charts.

To me, it is much more ‘joyful’ than a grouped or stacked bar chart and still communicates the crucial information of the data. Additionally, it also introduces the position of the last bar as a cue of the total number of bars. This is missing in the traditional bar chart types.

For everybody who is interested in a real implementation of snail charts feel free to head to my data story The Kit War which uses the d3.js library to draw these charts for 500 teams around the world:

Screenshot of snail charts in data story “The Kit War”
Screenshot of snail charts in data story “The Kit War”

What do you think about the snail chart? Would you use it in a project of yours? I would like to hear your feedback!

Nightingale

The Journal of the Data Visualization Society

Thanks to Jason Forrest and Allen Hillery

Joseph (Geolic)

Written by

A data viz lover with a background in geoscience. Life Goal: Riding bicycle from Berlin (Germany) to Busan (Korea). You can find my content at geolic.net

Nightingale

The Journal of the Data Visualization Society

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade