2017-04-20 76 views
1

我要逐步建立一個GGPLOT2,在這裏我添加的行數,以這樣一個現有的情節GGPLOT2:添加線圖在循環

pl = ggplot() 
pl = pl + somesetup 
while(stillhavelines) { 
    df = getTheLine(fromsomewhere) 
    pl = pl + geom_line(aes(df$x,df$y),linetype=lt,colour=co) ## !!!! 
} 
ggsave(...) 

奇怪的是,如果我這樣做,那麼所有的線圖都將從一個單一的數據框中顯示出來。相反,我嘗試通過將每個數據框分配給它自己的變量來實現這一點。

如何告訴ggplot實際顯示來自不同數據框的行?爲什麼它甚至做到這一點,這是非常令人驚訝和不直觀的。如果data沒有指定就會認爲該層實際上是一樣的,每次所以它只會顯示

pl = pl + geom_line(data = df, aes(x = x, y = y), linetype = lt, colour = co) 

+1

這實際上並不是如何使用ggplot2(儘管我猜測可能會花費很多努力)。爲什麼在繪圖之前不要增加*數據*?對於這個問題,爲什麼漸進地建立任何東西? –

回答

1

可以定義在一個ggplot層用於與data參數數據最近的一個。

我用下面的代碼進行了測試:

library(ggplot2) 

dat <- list(
    data.frame(a = 1:5, b = 8:12), 
    data.frame(a = 11:15, b = 18:22), 
    data.frame(a = 21:25, b = 28:32) 
) 

p <- ggplot() 

i <- 1 

while(i <= length(dat)) { 
    df <- dat[[i]] 
    p <- p + geom_line(data = df, aes(a, b)) 
    i <- i + 1 
} 

p 

plot image

雖然爲Konrad Rudolph stated我不知道你會想這樣做是什麼情景。在繪製更簡單的ggplot代碼之前,最好先組織數據。