我想在3页的PDF文件中安排3x3网格布局。我想在三个页面中的任意网格位置绘图。我知道如何使用layout=c(3,3)
之类的选项来安排多个子图。我可以弄清楚如何使用网格包在单个绘图上排列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()
但这只会生成第二页(我猜'新页'会覆盖旧页面,而不是制作新页面)。
非常感谢任何帮助!
答案 0 :(得分: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格式,包括那些文件。或者,在您选择的文字处理器中创建文档并手动导入图像文件。