Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Create geom_ribbon for min-max range

Tags:

r

ggplot2

Given the following data:

df<-data.frame(
  year=(1996:2000),
  a=c(2,1.5,1.5,2,3),
  b=c(2,2,2,3,4),
  c=c(2,3,3,1,1))

with ggplot:

  ggplot(df,aes(x=year))+
    geom_line(aes(y=a))+
    geom_line(aes(y=b))+
    geom_line(aes(y=c))

looking like this:

normal plot

how. can I create a ribbon that shows always the area between minimum and maximum (think of it like a min-max-range), to get it look like this: better plot with range

like image 218
Johannes Avatar asked Oct 21 '22 10:10

Johannes


1 Answers

What about first computing the mininum and maximum values:

df$min <- apply(df[, -1], 1, min)
df$max <- apply(df[, -1], 1, max)

And then simply plotting the ribbon:

ggplot(df, aes(x = year, ymin = min, ymax = max)) + geom_ribbon()

ggplot2 ribbon example

like image 125
daroczig Avatar answered Oct 24 '22 12:10

daroczig