Search code examples
rline-plot

Line plot with average and shadow for min/max


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


Solution

  • 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