Line plot with average and shadow for min/max

Darren J picture Darren J · Aug 11, 2014 · Viewed 10.1k times · Source

I've made a quick example data frame for this below. Basically I want to create a line plot with the average value as a line and a shadow around that line representative of the range of the values. I realise I'll likely have to find row min/max but am unsure how to do this for rows and also don't know how I would go about plotting this

TEST <- data.frame(a=c(1,5,7,2), b=c(3,8,2,5), c=c(6,10,2,1))
TEST$mean <- rowMeans(TEST)

Any help appreciated - Thanks

Answer

David Arenburg picture David Arenburg · Aug 11, 2014

It is probably easily done with base R too, but here's a ggplot approach

Adding Min and Max and some index for the x axis

TEST <- transform(TEST, Min = pmin(a,b,c), Max = pmax(a,b,c), indx = seq_len(dim(TEST)[1]))

Plotting, using geom_ribbon

library(ggplot2)
ggplot(TEST) +
  geom_line(aes(indx, mean), group = 1) +
  geom_ribbon(aes(x = indx, ymax = Max, ymin = Min), alpha = 0.6, fill = "skyblue")

enter image description here