The wall of blinking lights
Nov 16, 2011
Reader Alex L. submitted this chart showing the evolution of quality of life in Warwickshire in the U.K.
This wall of lights is drawing way too much power. Let's make a list of fixes:
- Stretch out the hemisphere, turning those arcs into horizontal lines
- Allow readers to read horizontally, rather than centrifugally (?)
- Align horizontally all of the labels for the quality of life indicators
- Allow readers to read indicator labels in one direction, rather than inside-out on the right hemisphere and outside-in on the left hemisphere
- Assume readers understand that the first year for which there is data is the "baseline year"
- Remove the distance between one data point and another, which makes unnecessary the white gridlines
- Use rectangles (rather than circles) as they can be packed more tightly
- Order the indicators in a meaningful way
Eventually this chart reveals itself as a heatmap:
The heatmap is much better. But the heatmap doesn't expose the trends clearly, especially the differences between indicators. The heatmap function (in R) has a built-in clustering method which automatically groups the indicators by similarity of trends. The color scheme should really be reversed since on this chart, red is good, and blue is bad; the default orientation of the column labels is also annoying. The bad indicators are clustered to the top, the good ones in the middle and the neutral ones at the bottom.
The next version uses the line chart, in a small-multiples setting. Now we have something to chew on.
Although not done here, we can order this set of charts using the clustering results from the heatmap.
The lesson is that the pretty colors in the heatmap really tell us much less than the plain levels in a line chart.
An advantage of the heatmap (as presented) is that it shows missing data better. The line plots in the small multiples are "connecting through missing," which results in an incorrect plot for Teenage Pregnancy (the datum for 2003 is not shown). If the line plots are redesigned to not connect through missing, then for some data the display could have many disconnected lines, which would probably look strange to most viewers. For more on using heatmaps to visualize time series, see Peng (2008), JSS: http://www.jstatsoft.org/v25/c01
Posted by: Rick Wicklin | Nov 16, 2011 at 09:09 AM
Rick: Point taken, but is it more important to show off the missing values or is it more important to show the trends?
Posted by: Kaiser | Nov 16, 2011 at 12:48 PM
Trends, for these data. Line plots show the trends better. The heatmap has other nice attributes, such as the ability to compare down a column to see, for example, that 2004 was a "bad year" across most categories. I think the heatmap also can handle 100 variables better than the small multiples.
Maybe we could combine the plots? Move the category labels to the left of the heatmap and add a sparkline to the right of each row?
Posted by: Rick Wicklin | Nov 16, 2011 at 12:58 PM
For me, the heatmap is great in its compactness and it's very useful when looking for sharp differences, say outliers. But it isn't so good for understanding trends or mild differences because the human eye is much better at judging shifts in levels than in judging shifts in colors. I'll read the Peng paper to see if there's something there.
If you really want to expose the missing values, add an asterisk on the time axis for each missing value.
Posted by: Kaiser | Nov 16, 2011 at 02:21 PM
Using red dots and green dots to indicate significance is also a nightmare for the colorblind. The original chart makes my eyes sore :(
Posted by: Chris | Nov 16, 2011 at 07:49 PM
Reminds me very much of the poster we did a couple of years back. Although I really liked the design, I have to admit that deciphering the trends of the different variables was always a little bit difficult, although perhaps somewhat clearer than on the example given above. I think that otherwise, only the small multiples would be a solution for a clearer understanding.
Posted by: Stef | Nov 21, 2011 at 06:41 AM