【发布时间】:2021-08-03 08:33:39
【问题描述】:
我正在尝试构建一个 ggplot 图形列表,稍后将绘制该列表。到目前为止,以 Anscombe 的四重奏为例,我所拥有的是:
library(ggplot2)
library(gridExtra)
base <- ggplot() + xlim(4,19)
plots = vector(mode = "list", length = 4)
for(i in 1:4) {
x <- anscombe[,i]
y <- anscombe[,i+4]
p <- geom_point(aes(x,y),colour="blue")
q <- geom_smooth(aes(x,y),method="lm",colour="red",fullrange=T)
plots[[i]] <- base+p+q
}
grid.arrange(grobs = plots,ncol=2)
当我通过循环时,我希望将图 p 和 q 的当前值与基本图一起添加到列表的第 i 个值中。也就是说,列表元素编号 i 包含与数据集中第 i 个 x 和 y 列相关的图。
然而,最后的情节只被绘制了四次。我使用mfrow、plot 和abline 对基本 R 做了一些非常相似的事情,所以我相信我的逻辑是正确的,但我的实现不是。我怀疑问题出在以下几行:
plots = vector(mode = "list", length = 4)
plots[[i]] <- base+p+q
如何创建 ggplot 图形列表;从一个空列表开始?
(如果这是一个微不足道和愚蠢的问题,我很抱歉。我对 R 和图形语法都很陌生。)
【问题讨论】: