Dynamite plots: unmitigated evil?

There seems to be a general opinion among statistical graphics nerds (examples here, here, and here) that the traditional way of plotting grouped continuous data (e.g. growth rates across fertilizer treatments) as a bar plot with a unidirectional "whisker" denoting the upper 95% confidence interval is bad. People who don't like them call them "dynamite plots". (Googling for 'dynamite plot' brings up web pages about statistical graphics, the Napoleon Dynamite movie, and terrorism [Basque and 19th-century].)


I will review the criticisms of dynamite plots, which I generally agree with, but then want to put forward a couple of their advantages, and suggest that the generally favored Tukey box-and-whisker plot is not a universal solution to graphical problems.


Disadvantages of dynamite plots:

(these are mostly taken from the Vanderbilt wiki page on the topic)

  • they have a low "data-to-ink" ratio1
  • they hide the raw data — the plot shows only the means and standard errors (or 95% confidence intervals) of the groups.
  • they assume symmetric confidence intervals
  • the previous two issues both stem from dynamite plots' strong parametric assumptions about the data. This document by Frank Harrell gives an example where a dynamite plot conceals strong bimodality (the existence of "responders" and "non-responders" within a single treatment group).
  • dynamite plots that show only an upper whisker make it harder to compare groups
  • This page says dynamite plots "cause an optical illusion in which the reader adds some of the error bar to the height of the main bar when trying to judge the heights of the main bars" (unfortunately it doesn't provide a reference)

Advantages of dynamite plots (heresy!)

  • they are comfortingly familiar to most ecologists and other biologists
  • they anchor the data at zero (but see below about whether this is a good thing or not)
  • they provide more area for displaying colors or gray scales than plots that use a single point for each value: this may (?) make it easier to distinguish groups of treatments in the data

More general issues

  • Should plots be anchored at zero? If the differences among group means, and/or the standard errors/confidence interval ranges, are small relative to the absolute magnitudes of the responses (e.g. means of two groups equal to 10 $\pm$ 0.01, 10.05 $\pm$ 0.02) it becomes very hard to see the differences. (If the point you want to make is that the results are statistically significant but very small in magnitude, perhaps this is a good thing …) In my opinion, if the data are not naturally anchored at zero (e.g. data shown on a logarithmic scale, or data in a very small range) then dynamite plots just don't make sense.
  • Would you prefer to display the structure of the data, or the structure of statistical inferences on the data? The advantage of the generally recommended dot plot (for small data sets), boxplot (for medium data sets), or violin plot (for large data sets), is that they show what's going on in the data. However, they don't show anything about the confidence intervals on the mean (for example), although notched box plots (McGill et al. 1978: see figure above) give an approximate indication of significantly different medians.
  • Do you want your plot to match the structure of the statistical test(s) you carried out? Standard ANOVA, for example, assumes normal errors with equal variances across groups. In that case, you presumably already did the exploratory data analysis (including graphing) to confirm these assumptions are reasonable. The assumptions of the dynamite plot (symmetric confidence intervals, reasonable distribution of points within groups) match the assumptions of your analysis. On the other hand, maybe you should show the data in the exploratory (dot/box/violin) format so that your readers can assess the validity of the assumptions for themselves rather than taking your word for it … or at least show the per-group standard errors rather than the pooled estimate of the standard error (as is done in the figure above). This problem gets even harder for complex statistical designs. How do you represent (for example) spatial dependencies in the data in a plot of the means?

Notes on the example figure above

I used the OrchardSprays data set from R (originally from Finney 1947, by way of McNeil 1977), which is used as an example in the stripchart documentation.
Some thoughts:

  • the data are actually plotted on a log scale (see the code), which automatically (to my mind) rules out dynamite plots as a good idea. On the other hand, the data appear fairly well behaved (so we may not really need to see the details of their distribution)
  • the data set is small (8 points per treatment), so boxplots and violin plots are probably not a good idea; you can see that some of the notches are turned inside out because the notch extends beyond the lower and upper "fences" (approx. 1st and 3d quartiles)
  • the first row shows more "inferential" plots (based on means and standard errors), the second shows descriptive or exploratory plots; in the third plot, I tried to add more information by mimicking the Bayesian posterior plots from Gelman and Hill's book or their arm package for R. Their plots show the 50% and 95% (I think) credible intervals for each group; I show $\pm$ 1 and 2 standard errors (could also do this with 50% and 95% frequentist confidence intervals based on the t distribution).
  • these plots are all done in base R graphics (with the help of the vioplot and gplots packages from CRAN). They could all be done, with more or less effort, in lattice graphics instead.

Here's the code.

Updates: Frank Harrell mentions panel.bpplot from the Hmisc package (e.g. see the R graphics gallery). These "box-percentile" plots offer a range of options combining the advantages of dotplots (showing the raw data) and violin plots (showing various amounts of detail about the shape of the distribution). (Still doesn't address the issues of description vs. inference, though.)

More updates:

Here are the same plots coded with ggplot:


See also: this blog post comparing box & violin plots.

Add a New Comment
or Sign in as Wikidot user
(will not be published)
- +
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License