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