R中的多个图使用循环

时间:2014-07-08 12:07:03

标签: r loops plot

我有两个数据集。一个有旧的观察,一个有新的观察,我想在不同的绘图窗口中相互重新绘制这些。我必须做几个情节,但我不知道如何制作循环。我试过这样的事情:

pltName <-paste("p", 1:25, sep="")

for (i in 1:25){
pltName[i] <- qplot(dfOld[i], dfNew[i], geom = "point")
}

但这不起作用。

数据框看起来像这样:

dfOld:

            Old1  Old2  Old3  Old4  .... Old25
            21.0   6    160   110  ....
            21.0   6    160   110 .... 
            22.8   4    108   93 ....

dfNew:

            New1  New2  New3  New4  .... New25
            22.0   5    150   180  ....
            23.0   6    162   100 .... 
            21.8   5    103   90 ....

2 个答案:

答案 0 :(得分:0)

创建一个data.frame,其中包含一个列值和第二列,其中包含源值。

library(ggplot2)

xy <- data.frame(x = runif(20), y = runif(20), source = rep(letters[1:2], each = 10))

ggplot(xy, aes(x = x, y = y, color = source)) +
  theme_bw() +
  geom_point()

或者,如果您想要每个来源的构面,请尝试

ggplot(xy, aes(x = x, y = y)) +
  theme_bw() +
  geom_point() + 
  facet_wrap(~ source)

答案 1 :(得分:0)

您需要将图表存储在列表中,然后在该列表中使用grid.arrange

plots <- vector("list", length(dfOld))
p <- qplot(dfOld[, 1], dfNew[, 1], geom = "point")
for (i in seq_along(plots))
    plots[[i]] <- p %+% aes_q(x = dfOld[, i], y = dfNew[, i])
do.call(grid.arrange, plots)

更好的方法是使用Map

plots <- Map(qplot, x = dfOld, y = dfNew, geom = "point")
do.call(grid.arrange, plots)