我正在尝试在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分配不对应?
谢谢!