2013-05-14 2 views
4

Учитывая следующие данные:Создать geom_ribbon для диапазона мин-макс

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

с ggplot:

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

глядя, как это:

normal plot

как. я могу создать ленту, которая всегда показывает область между минимумом и максимумом (подумайте об этом как min-max-range), чтобы она выглядела следующим образом:

ответ

2

Как насчет первого вычисления минимальных и максимальных значений:

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

А потом просто откладывая ленту:

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

ggplot2 ribbon example

+0

о человеке Yesss! это приятное простое решение! Спасибо! – Johannes

Смежные вопросы