2017-04-20 53 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代码之前,最好先组织数据。