【发布时间】:2012-08-27 09:17:53
【问题描述】:
我有一个列表,p,其中p 的每个元素都是 ggplot2 绘图对象的列表。
我想输出一个包含p 中所有图的单个 pdf,这样p[[1]] 中的图在第 1 页,p[[2]] 中的图在第 2 页,等等。我该怎么做?
这里有一些示例代码,可以为您提供我正在使用的数据结构 - 为无聊的情节道歉,我随机选择了变量。
require(ggplot2)
p <- list()
cuts <- unique(diamonds$cut)
for(i in 1:length(cuts)){
p[[i]] <- list()
dat <- subset(diamonds, cut==cuts[i])
p[[i]][[1]] <- ggplot(dat, aes(price,table)) + geom_point() +
opts(title=cuts[i])
p[[i]][[2]] <- ggplot(dat, aes(price,depth)) + geom_point() +
opts(title=cuts[i])
}
【问题讨论】:
-
这是一个潜在的开始:
require(gridExtra); do.call("grid.arrange",p[[i]])。这将在单个设备中绘制 p[[i]] 中的 ggplot 对象,并很好地排列它们。 -
还可以查看 gridExtra 包。我认为这应该能让你大部分时间到达那里