ggplot for循环图例项目

时间:2016-01-21 21:03:14

标签: r ggplot2

我正在尝试在for循环中使用ggplot绘制一系列行(streamflow值的时间序列)。但是,我无法得到合作的传奇项目。我的数据框有一个日期字段和3个流量值字段,如下所示:

tail(df)
           Date StrGage1 StrGage2 StrGage3
1821 2005-12-26      2.8     1449      256
1822 2005-12-27      6.6      775       63
1823 2005-12-28      8.0     1304      159
1824 2005-12-29      7.4      908       70
1825 2005-12-30      7.3      711       58
1826 2005-12-31     76.0     1074      838

我只是想在x轴上绘制日期,y上有3行,每个都需要有自己的图例项目。但是,我一直得到一个只有最后一个的图例项的输出。线条颜色也没有表现。到目前为止我的代码是:

col <- c('coral1','palegreen2','deepskyblue')
plot <- ggplot(df, aes(Date))

for (i in 1:3)
{
plot <- plot + geom_line(aes_string(y = colnames(df)[i+1]), size = 0.2) + aes(color = colnames(df)[i+1]) + geom_area(aes_string(y = colnames(df)[i+1]), fill = col[i], alpha = 0.3)
}

plot <- plot + scale_y_log10(breaks = c(1, 10, 100, 1000, 10000), labels = c(' ','10',' ','1000',' '), limits = c(1,10000))
plot <- plot + labs(x = "", y = "CFS") + scale_colour_manual(name='', values= col[1:3])

输出看起来像这样: Output Graph

我知道跳过for循环并手动绘制每一行可能很容易,但由于其他原因,我需要以循环形式设置它,所以我的问题如下:

1)我怎样才能将每个循环迭代中的图例项目保留在图上,而不仅仅是最后一个? 2)为什么线条颜色与col矢量中颜色的scale_colour_manual分配不对应?

谢谢!

0 个答案:

没有答案