6

我想在 PDF 文件的 3 页上安排 3x3 网格布局。我想在三个页面中的任意网格位置绘制。我知道如何使用诸如layout=c(3,3). 我可以弄清楚如何使用 grid 包在单个图上安排 3x3 布局,然后决定选择使用哪个图。但是,我不知道如何在 3 页上布置 3x3 网格,然后选择要绘制的网格。

我希望grid.newpage()能解决我的问题,如下所示:

library(grid)
pdf(file="griddtest.pdf",paper="letter")
vp1 <- viewport(x = 0, y = 0.5, w = 0.5, h = 0.5, just = c("left", "bottom"), 
    name = "vp1")
vp2 <- viewport(x = 0, y = 0.5, w = 0.5, h = 0.5, just = c("left", "bottom"), 
    name = "vp2")
pushViewport(vp1)
grid.text("Some drawing in graphics region 1 on page 1",y = 0.8)
grid.newpage()
pushViewport(vp2)
grid.text("Some drawing in graphics region 2 on page 2",y = 0.8)
dev.off()

但这只会生成第二页(我猜“新页”会覆盖旧页,而不是创建新页)。

任何帮助将不胜感激!

4

1 回答 1

1

如果您有九个面板,并在布局中指定 3 个面板,例如,

xyplot(runif(9) ~ 1:9 | 1:9, layout = c(1,3))

然后你会得到 3 个图表。为了在 GUI 窗口中绘图,绘图会被覆盖,但如果您保存为 PDF,它们会出现在连续页面上。


编辑:要使绘图仅占页面的三分之一,请在调用中调整绘图的高度pdf

pdf(..., height = 3)
# ...
dev.off()

默认情况下,这会在每个页面的中心绘制每个图。通过设置pagecentre = FALSE,绘图出现在每页的底部。我还没有找到pdf让它们出现在顶部的选项。

为了更好地控制绘图的位置,首先将它们保存为 eps(使用postscript函数)或 png。

然后,您可以使用sweave创建您喜欢的格式的 pdf,包括这些文件。或者,在您选择的文字处理器中创建一个文档并手动导入图像文件。

于 2010-11-01T22:54:08.797 回答