Good practices in producing plots

Many years ago I once had a mentor tell me that one of the hallmarks of a well-written paper is the figures; a reader should be able to read the abstract and introduction, and then, without reading any further, flip to the figures and the figures should provide much of the evidence supporting the hypothesis of the paper.  I’ve always kept this in mind in every paper I’ve since produced.

Good figures need to tell a story.  This is true whether they are part of a paper, a poster, or a science fair exhibit.  A good figure has both axes labelled, with units indicated.  It should have a descriptive title.  If more than one thing is being shown in a plot, a legend is necessary (don’t just rely on the caption!).  The lines need to be thick enough that they are easily visible from four feet away if the figure is printed on 8.5″x11″ paper (and this is true even if they are meant for inclusion in a paper, rather than a poster or science fair exhbit). The axes should be scaled such that there is not an inappropriate amount of white space above or below the curves in the plot (an example of a plot with inappropriately scaled axes is below).

Below is a figure related to a modelling analysis that used a predator/prey model to examine the control of a corn pest (H.Zea) using a parasitic wasp (Trichogramma).  Farmers put cards of wasp eggs in their fields on a weekly basis (because the wasps die in a few days without a nectar food source).  The model shows the number of H.Zea larvae in the field with no control, and with weekly applications of Trichogramma.  The inset plot shows the number of adults wasps in the field over time.

Do you think this plot does an adequate job of telling a story about the model predictions for the level of H.Zea control that can be achieved with weekly applications of Trichogramma?plot1

In the file some_plotting_tricks.R I show how to add arrows and text to a plot, along with one way to do an inset figure.  The file produces the plot:some_1

The some_plotting_tricks.R also shows you how to pause an R script between plots, until the user hits the <Enter> key.  It also shows you how to overlay two plots with differing Y axes, with one Y axis on the left, and the other on the right, like so:some_2


Next is an example of a figure (taken from a paper that shall remain un-cited here) that is somewhat poorly produced. Note the inappropriate scale of the y axis, leaving too much white space above and below the data.  Also note that the y axis is labelled, but does not show units (is the rate in 1/sec, 1/min, 1/days?).



Here is another plot, with caption slightly edited to protect the identity of the author.  Note that the y axis is completely unlabelled, with no units:screen_shot_b


Leave a Reply