在R中一页上绘制多个图表

3

我应该如何在R中将七个不同的图表绘制在同一页PDF上?

我目前使用的是matplot,但似乎没有这个选项。我需要将数据列绘制成数据列。

我最初尝试使用lattice库来完成此操作,但我似乎无法弄清楚如何绘制数据列。它似乎需要一个函数。


“一页”是什么意思?是指所有内容都在一个图表上吗?还是指一个PDF文件?或者是一个绘图窗口? - Rich Scriven
@RichardScriven:是的,一个PDF。 - Islands
如果只有一个PDF文件,您是否希望每个图形都在自己的页面上?这在R后期处理中很容易实现,但在R中使用pdf()函数的onefile = TRUE选项也很容易实现。 - r2evans
2个回答

5
要创建绘图的pdf,可以按如下方式操作。使用pdf函数并在第一个参数中指定文件名来初始化pdf文档。最后使用dev.off()关闭图形设备并完成pdf文件生成。稍后你将在工作目录中看到一个新的文档(在本例中是'plots.pdf')。
d <- data.frame(matrix(sample(c(1:700), 2000, TRUE), 10, 20))
pdf('plots')
par(mfrow = c(3, 3))  ## set the layout to be 3 by 3
sapply(1:9, function(i) plot(d[,i]))
dev.off()

这将生成这个pdf文件

输入图像描述


2

如果您想使用基本图形完成此操作,我强烈建议使用layout()函数。它需要一个矩阵来定义如何分割窗口。它将为矩阵中的每一行创建一行,并为每一列创建一列。它按单元格编号的顺序绘制图表。因此,如果您传递矩阵:

#layout(matrix(c(1:7,7), ncol=2, byrow=T))
#     [,1] [,2]
#[1,]    1    2
#[2,]    3    4
#[3,]    5    6
#[4,]    7    7

第一个图将位于左上角,第二个图将位于右上角等,直到第七个图放置在底部。如果您希望它仅占据左下角,则可以通过在右下角指定不同的数字来实现。

要将布局重置为“正常”,只需调用

layout(1)

你可以创建一个 for 循环来制作每个图形。
如果你想要一个图形来进行所有成对比较,那么 pairs() 绘图函数可能是你想要的。
dd<-matrix(runif(5*5), ncol=5)
pairs(dd)

或者等价的格子图是 splom()


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接