2014-09-18 60 views
0

我試圖使用ggplot2在單個圖中繪製多個時間序列連續變量。由於有很多變量的,我試圖用正常的審美映射-環路內,ggplot內循環中的審美映射

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一起或是否有任何方式來生成離散的顏色值與標籤設置爲變量名。

+0

我不確定你爲什麼要這樣做。你能提供你的df嗎? – 2014-09-19 00:03:19

+0

是否有你不想將數據集重塑爲長格式的原因?有關示例,請參見[此答案](http://stackoverflow.com/a/15988472/2461552)。 – aosmith 2014-09-19 14:59:35

回答

0

我使用dplyr包的melt函數。它解決了我上面的所有問題。謝謝你們的評論。