在循环中向ggplot2添加线图

时间:2017-04-20 14:59:34

标签: r 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实际显示不同数据框中的行?为什么它甚至这样做,这是非常令人惊讶和不直观的。

1 个答案:

答案 0 :(得分:1)

您可以使用<xsl:template match="@width[not(../@AutoWidth)]"> 参数定义ggplot图层中使用的数据:

data

如果未指定pl = pl + geom_line(data = df, aes(x = x, y = y), linetype = lt, colour = co) ,则会假定图层实际上每次都相同,因此它只显示最新的图层。

我用以下代码测试了它:

data

plot image

虽然作为Konrad Rudolph stated,我不确定在什么情况下你会想要这样做。在将数据绘制为更简单的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 代码之前,最好先组织数据。