ggplot内循环中的美学映射

时间:2014-09-18 21:47:38

标签: r loops for-loop ggplot2 aesthetics

我试图使用ggplot2在单个图中绘制多个时间序列连续变量。因为有很多变量,我试图在for循环中使用正常的美学映射,

p1<-ggplot(df, aes(x=timVar))
ind<-c(2,4,5,6,8,9,10,12,13,15,17) # Index of the series that I wanted to plot
for(i in ind){
    p1<-p1+geom_line(aes(df[,i]))
}
print(p1)

因为这只给了我最后一个系列的情节,我用google搜索了一些解决方案,最后发现了一个建议我使用aes_string()函数。我将代码重建为,

p1<-ggplot(df, aes(x=timVar))
ind<-c(2,4,5,6,8,9,10,12,13,15,17) # Index of the series that I wanted to plot
for(i in ind){
    p1<-p1+geom_line(aes_string(names(df)[i]))
}
print(p1)

这给了我所需的所有线条。但是,当我试图为每个变量获得单独的颜色时,我无法获得离散颜色。我使用了以下代码,

p1<-p1+geom_line(aes_string(names(df)[i], col=names(df)[i]))

有没有办法在循环中一起使用aes_string和aes,或者有没有办法生成带标签的离散颜色值作为变量名。

1 个答案:

答案 0 :(得分:0)

我正在使用melt包的dplyr功能。它解决了我上面的所有问题。谢谢你们的评论。