5
votes

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

1

1 Answers

3
votes

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