21  Creating Good Charts

Published

December 17, 2024

21.1 Objectives

  • Evaluate existing charts and develop new versions that improve accessibility and readability

A chart is good if it allows the user to draw useful conclusions that are supported by data. Obviously, this definition depends on the purpose of the chart - a simple EDA chart is going to have a different purpose than a chart showing e.g. the predicted path of a hurricane, which people will use to make decisions about whether or not to evacuate.

Unfortunately, while our visual system is amazing, it is not always as accurate as the computers we use to render graphics. We have physical limits in the number of colors we can perceive, our short term memory, attention, and our ability to accurately read information off of charts in different forms.

21.2 Perceptual and Cognitive Factors

21.2.1 Preattentive Features

You’ve almost certainly noticed that some graphical tasks are easier than others. Part of the reason for this is that certain tasks require active engagement and attention to search through the visual stimulus; others, however, just “pop” out of the background. We call these features that just “pop” without active work preattentive features; technically, they are detected within the first 250ms of viewing a stimulus [1].

Take a look at Figure 21.1; can you spot the point that is different?

(a) Shape
(b) Color
Figure 21.1: Two scatterplots with one point that is different. Can you easily spot the different point?

Color and shape are commonly used graphical features that are processed pre-attentively. Some people suggest utilizing this to pack more dimensions into multivariate visualizations [2], but in general, knowing which features are processed more quickly (color/shape) and which are processed more slowly (combinations of preattentively processed features) allows you to design a chart that requires less cognitive effort to read.

As awesome as it is to be able to use preattentive features to process information, we should not use combinations of preattentive features to show different variables. Take a look at Figure 21.2 - part (a) shows the same grouping in color and shape, part (b) shows color and shape used to encode different variables.

(a) Shape and Color (dual encoded)
(b) Shape and Color (different variables)
Figure 21.2: Two scatterplots. Can you easily spot the different point(s)?

Here, it is easy to differentiate the points in Figure 21.2(a), because they are dual-encoded. However, it is very difficult to pick out the different groups of points in Figure 21.2(b) because the combination of preattentive features requires active attention to sort out.

Takeaways

Careful use of preattentive features can reduce the cognitive effort required for viewers to perceive a chart.

Encode only one variable using preattentive features, as combinations of preattentive features are not processed preattentively.

21.2.2 Color

Our eyes are optimized for perceiving the yellow/green region of the color spectrum, as shown in Figure 21.3. Why? Well, our sun produces yellow light, and plants tend to be green. It’s pretty important to be able to distinguish different shades of green (evolutionarily speaking) because it impacts your ability to feed yourself. There aren’t that many purple or blue predators, so there is less selection pressure to improve perception of that part of the visual spectrum.

Figure 21.3: Sensitivity of the human eye to different wavelengths of visual light (Image from Wikimedia commons)

Not everyone perceives color in the same way. Some individuals are colorblind or color deficient [3]. We have 3 cones used for color detection, as well as cells called rods, which detect light intensity (brightness/darkness). In about 5% of the population (10% of XY individuals, <1% of XX individuals), one or more of the cones may be missing or malformed, leading to color blindness - a reduced ability to perceive different shades. The rods, however, function normally in almost all of the population, which means that light/dark contrasts are extremely safe, while contrasts based on the hue of the color are problematic in some instances.

You can take a test designed to screen for colorblindness here

Your monitor may affect how you score on these tests - I am colorblind, but on some monitors, I can pass the test, and on some, I perform worse than normal. A different test is available here.

My results on one monitorMy results on a monitor that has a different tech and supposedly higher color fidelity

The Munsell colorblindness test In reality, I know that I have issues with perceiving some shades of red, green, and brown. I have particular trouble with very dark or very light colors, especially when they are close to grey or brown.

In addition to colorblindness, there are other factors than the actual color value which are important in how we experience color, such as context.

(a) The original illusion
(b) The illusion with the checkerboard and shadow removed
Figure 21.4: The color constancy illusion. The squares marked A and B are actually the same color.

Our brains are extremely dependent on context and make excellent use of the large amounts of experience we have with the real world. As a result, we implicitly “remove” the effect of things like shadows as we make sense of the input to the visual system. This can result in odd things, like the checkerboard and shadow shown in Figure 21.4 - because we’re correcting for the shadow, B looks lighter than A even though when the context is removed they are clearly the same shade.

21.2.2.1 Takeaways

  • Do not use rainbow color gradient schemes
    • because of the unequal perception of different wavelengths, these schemes are misleading - the color distance does not match the perceptual distance.
  • Avoid any scheme that uses green-yellow-red signaling if you have a target audience that may include colorblind people.
  • To “colorblind-proof” a graphic, you can use a couple of strategies:
    • double encoding - where you use color, use another aesthetic (line type, shape) as well to help your colorblind readers out
    • If you can print your chart out in black and white and still read it, it will be safe for colorblind users. This is the only foolproof way to do it!
    • If you are using a color gradient, use a monochromatic color scheme where possible. This is perceived as light -> dark by colorblind people, so it will be correctly perceived no matter what color you use.
    • If you have a bidirectional scale (e.g. showing positive and negative values), the safest scheme to use is purple - white - orange. In any color scale that is multi-hue, it is important to transition through white, instead of from one color to another directly.
  • Be conscious of what certain colors “mean”
    • Leveraging common associations can make it easier to read a color scale and remember what it stands for (e.g. blue for cold, orange/red for hot is a natural scale, red = Republican and blue = Democrat in the US, white -> blue gradients for showing rainfall totals)
    • Some colors can can provoke emotional responses that may not be desirable.1
    • It is also important to be conscious of the social baggage that certain color schemes may have - the pink/blue color scheme often used to denote gender can be unnecessarily polarizing, and it may be easier to use a colder color (blue or purple) for men and a warmer color (yellow, orange, lighter green) for women2.
  • There are packages such as RColorBrewer and dichromat that have color palettes which are aesthetically pleasing, and, in many cases, colorblind friendly (dichromat is better for that than RColorBrewer). You can also take a look at other ways to find nice color palettes.

21.2.3 Short Term Memory

We have a limited amount of memory that we can instantaneously utilize. This mental space, called short-term memory, holds information for active use, but only for a limited amount of time.

Try it out!
Click here, read the information, and then click to hide it.

1 4 2 2 3 9 8 0 7 8

Wait a few seconds, then expand this section

What was the third number?

Without rehearsing the information (repeating it over and over to yourself), the try it out task may have been challenging. Short term memory has a capacity of between 3 and 9 “bits” of information.

In charts and graphs, short term memory is important because we need to be able to associate information from e.g. a key, legend, or caption with information plotted on the graph. As a result, if you try to plot more than ~6 categories of information, your reader will have to shift between the legend and the graph repeatedly, increasing the amount of cognitive labor required to digest the information in the chart.

Where possible, try to keep your legends to 6 or 7 characteristics.

Implications and Guidelines

  • Limit the number of categories in your legends to minimize the short term memory demands on your reader.

    • When using continuous color schemes, you may want to use a log scale to better show differences in value across orders of magnitude.
  • Use colors and symbols which have implicit meaning to minimize the need to refer to the legend.

  • Add annotations on the plot, where possible, to reduce the need to re-read captions.

21.2.4 Grouping and Sense-making

Imposing order on visual chaos.

What does Figure 21.5 look like to you?

Figure 21.5: Is it a rabbit, or a duck?

When faced with ambiguity, our brains use available context and past experience to try to tip the balance between alternate interpretations of an image. When there is still some ambiguity, many times the brain will just decide to interpret an image as one of the possible options.

Consider this image - what do you see?

Did you see something like “3 circles, a triangle with a black outline, and a white triangle on top of that”? In reality, there are 3 angles and 3 pac-man shapes. But, it’s much more likely that we’re seeing layers of information, where some of the information is obscured (like the “mouth” of the pac-man circles, or the middle segment of each side of the triangle). This explanation is simpler, and more consistent with our experience.

Now, look at the logo for the Pittsburgh Zoo.

What do you see?

Do you see the gorilla and lionness? Or do you see a tree? Here, we’re not entirely sure which part of the image is the figure and which is the background.

The ambiguous figures shown above demonstrate that our brains are actively imposing order upon the visual stimuli we encounter. There are some heuristics for how this order is applied which impact our perception of statistical graphs.

The catchphrase of Gestalt psychology is

The whole is greater than the sum of the parts

That is, what we perceive and the meaning we derive from the visual scene is more than the individual components of that visual scene.

The Gestalt Heuristics help us to impose order on ambiguous visual stimuli

You can read about the gestalt rules here, but they are also demonstrated in the figure above.

In graphics, we can leverage the gestalt principles of grouping to create order and meaning. If we color points by another variable, we are creating groups of similar points which assist with the perception of groups instead of individual observations. If we add a trend line, we create the perception that the points are moving “with” the line (in most cases), or occasionally, that the line is dividing up two groups of points. Depending on what features of the data you wish to emphasize, you might choose different aesthetics mappings, facet variables, and factor orders.

Caution

Suppose I want to emphasize the change in the murder rate between 1980 and 2010.

I could use a bar chart (showing only the first 4 states alphabetically for space)

fbiwide <- read.csv("https://github.com/srvanderplas/Stat151/raw/main/data/fbiwide.csv")
library(dplyr)

fbiwide %>%
  filter(Year %in% c(1980, 2010)) %>%
  filter(State %in% c("Alabama", "Alaska", "Arizona", "Arkansas")) %>%
  ggplot(aes(x = State, y = Murder/Population*100000, fill = factor(Year))) +
  geom_col(position = "dodge") +
  coord_flip() +
  ylab("Murders per 100,000 residents")

import pandas as pd
fbiwide = r.fbiwide
fbiwide = fbiwide.assign(YearFactor = pd.Categorical(fbiwide.Year))
fbiwide = fbiwide.assign(Murder100k = fbiwide.Murder/fbiwide.Population * 100000)

yr1980_2010 = fbiwide[fbiwide.Year.isin([1980,2010])]
subdata = yr1980_2010[yr1980_2010.State.isin(["Alabama", "Alaska", "Arizona", "Arkansas"])]

(
ggplot(subdata, aes(x = "State", y = "Murder100k", fill = "YearFactor")) +
  geom_col(stat='identity', position = "dodge") +
  coord_flip() +
  ylab("Murders per 100,000 residents")
)
## NameError: name 'ggplot' is not defined

Or, I could use a line chart

fbiwide %>%
  filter(Year %in% c(1980, 2010)) %>%
  ggplot(aes(x = Year, y = Murder/Population*100000, group = State)) +
  geom_line() +
  ylab("Murders per 100,000 residents")

(
ggplot(yr1980_2010, aes(x = "Year", y = "Murder100k", group = "State")) +
  geom_line() +
  ylab("Murders per 100,000 residents")
)
## NameError: name 'ggplot' is not defined

Or, I could use a box plot

fbiwide %>%
  filter(Year %in% c(1980, 2010)) %>%
  ggplot(aes(x = factor(Year), y = Murder/Population*100000)) +
  geom_boxplot() +
  ylab("Murders per 100,000 residents")


(
ggplot(yr1980_2010, aes(x = "YearFactor", y = "Murder100k")) +
  geom_boxplot() +
  ylab("Murders per 100,000 residents")
)
## NameError: name 'ggplot' is not defined

Which one best demonstrates that in every state and region, the murder rate decreased?

The line segment plot connects related observations (from the same state) but allows you to assess similarity between the lines (e.g. almost all states have negative slope). The same information goes into the creation of the other two plots, but the bar chart is extremely cluttered, and the boxplot doesn’t allow you to connect single state observations over time. So while you can see an aggregate relationship (overall, the average number of murders in each state per 100k residents decreased) you can’t see the individual relationships.

The aesthetic mappings and choices you make when creating plots have a huge impact on the conclusions that you (and others) can easily make when examining those plots.3

21.3 General guidelines for accuracy

There are certain tasks which are easier for us relative to other, similar tasks.

Which of the lines is the longest? Shortest? It is much easier to determine the relative length of the line when the ends are aligned. In fact, the line lengths are the same in both panels.

When making judgments corresponding to numerical quantities, there is an order of tasks from easiest (1) to hardest (6), with equivalent tasks at the same level.4

  1. Position (common scale)
  2. Position (non-aligned scale)
  3. Length, Direction, Angle, Slope
  4. Area
  5. Volume, Density, Curvature
  6. Shading, Color Saturation, Color Hue

If we compare a pie chart and a stacked bar chart, the bar chart asks readers to make judgements of position on a non-aligned scale, while a pie chart asks readers to assess angle. This is one reason why pie charts are not preferable – they make it harder on the reader, and as a result we are less accurate when reading information from pie charts.

When creating a chart, it is helpful to consider which variables you want to show, and how accurate reader perception needs to be to get useful information from the chart. In many cases, less is more - you can easily overload someone, which may keep them from engaging with your chart at all. Variables which require the reader to notice small changes should be shown on position scales (x, y) rather than using color, alpha blending, etc.

There is also a general increase in dimensionality from 1-3 to 4 (2d) to 5 (3d). In general, showing information in 3 dimensions when 2 will suffice is misleading - the addition of that extra dimension causes an increase in chart area allocated to the item that is disproportionate to the actual area.

Here, the area and height both encode the same variable, leading to a far disproportionate number of pixels allocated to “Stocks” than “Cash Investments” (h/t Junk Charts). In the first chart, stocks make up 60% of the portfolio, but have 67.5% of the pixels; Cash makes up 5% of the portfolio but those investments represent 2.3% of the pixels..

Ted ED: How to spot a misleading graph - Lea Gaslowitz

Business Insider: The Worst Graphs Ever

Extra dimensions and other annotations are sometimes called “chartjunk” and should only be used if they contribute to the overall numerical accuracy of the chart (e.g. they should not just be for decoration).

21.4 References

[1]
A. Treisman, “Preattentive processing in vision,” Computer Vision, Graphics, and Image Processing, vol. 31, no. 2, pp. 156–177, Aug. 1985, doi: 10.1016/S0734-189X(85)80004-9.
[2]
C. G. Healey, K. S. Booth, and J. T. Enns, “High-speed visual estimation using preattentive processing,” ACM Transactions on Computer-Human Interaction (TOCHI), vol. 3, no. 2, pp. 107–135, 1996, doi: 10.1145/230562.230563.
[3]
Wikipedia contributors, “Color blindness,” Wikipedia, May 2023.

  1. When the COVID-19 outbreak started, many maps were using white-to-red gradients to show case counts and/or deaths. The emotional association between red and blood, danger, and death may have caused people to become more frightened than what was reasonable given the available information.↩︎

  2. Lisa Charlotte Rost. What to consider when choosing colors for data visualization.↩︎

  3. See this paper for more details. This is the last chapter of my dissertation, for what it’s worth. It was a lot of fun. (no sarcasm, seriously, it was fun!)↩︎

  4. See this paper for the major source of this ranking; other follow-up studies have been integrated, but the essential order is largely unchanged. Note that most of the items in this ranking were not examined in the linked paper, but are a synthesis of different experiments and conceptual knowledge in psychology as well as statistical graphics.↩︎