2015-12-17 43 views
1

此代碼繪製2行如何用ggplot畫幾行?

dd = list(data.frame(rates=1:5), data.frame(rates=2:6), data.frame(rates=3:7)) 
library(ggplot2) 
library(zoo) 
g = ggplot(, aes(1:5)) 
g <- g + geom_line(aes(y = dd[[1]]$rate[index(dd[[1]]) <= 5]), colour="#000000") 
g <- g + geom_line(aes(y = dd[[2]]$rate[index(dd[[2]]) <= 5]), colour="#000000") 
g 

enter image description here

但這代碼繪製1線(對於最後I,2)

dd = list(data.frame(rates=1:5), data.frame(rates=2:6), data.frame(rates=3:7)) 
g = ggplot(, aes(1:5)) 
foreach (i = 1:2) %do% { 
    g <- g + geom_line(aes(y = dd[[i]]$rate[index(dd[[i]]) <= 5]), colour="#000000") 
} 
g 

enter image description here

實施例上r-fiddle

爲什麼以及如何解決?

+2

你的數據是什麼樣的?情節是什麼樣子? 'dd'似乎是'data.frames'的列表,其中有一個名爲'val'的列。你能分享一些你的數據,以便我們可以運行你的代碼嗎? – ialm

+0

編輯,我希望你能幫到 – mnv

+0

你真的需要平行建立你的圖表嗎?更一般地說,你使用ggplot是非常不標準的。使用ggplot更符合其預期的方式,您可能會獲得更多的里程數。 – joran

回答

4

正如我提到的,我覺得你應該停止使用GGPLOT2這麼奇怪:

g = ggplot(, aes(1:5)) 
foreach (i = 1:2) %do% { 
    g <- g + geom_line(data = dd[[i]],aes(y = rates), colour="#000000") 
} 
g 

這將產生兩個線就像你的第一個例子。