R:在多页的网格布局中绘图

标签 r r-grid

我想在 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()

但这只会生成第二页(我猜'newpage'会覆盖旧页面,而不是创建一个新页面)。

任何帮助将不胜感激!

最佳答案

如果您有 9 个面板,并在您的布局中指定 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 格式,包括这些文件。或者,在您选择的文字处理器中创建一个文档并手动导入图像文件。

关于R:在多页的网格布局中绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4072945/

相关文章:

r - 聚合(R)对于明显相同的任务表现不同

r - 在列表中查找重复项,包括排列

r 错误 : Don't know how to add o to a plot

r - 绘图的两个方面的两个单独的 y 轴标题,同时使用 ggplot2 保留方面顶部 strip 标签

r - grid.arrange from gridExtras exiting with "only ' grobs' allowed in 'gList' "after update

roxygen2 + cygwin + 默认参数 = 截断的 `\usage` 部分

sql - 如何从 30gb csv 文件中删除特定行(例如第 102,206,973 行)?

R - 将 ggplot 网格线放在前台

R - 检查 PostgreSQL 中是否存在 View

ggplot2 - ggplot2 的命名空间加载失败,网格的描述失败