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:
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()