【问题标题】:R: plot in a grid layout over multiple pagesR:在多个页面上以网格布局绘制
【发布时间】:2010-11-01 20:53:48
【问题描述】:

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

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

任何帮助将不胜感激!

【问题讨论】:

  • 不能对上一页的图形进行操作。您可能只需要重新考虑绘制事物的方式。
  • 你的例子对我有用:我得到了两个页面。 (WinXP下R2.12.0和R2.11.1测试)
  • @Richie Argh!多么令人沮丧……
  • @Vitoshka 我不确定我是否在示例中的前一页上操作图形...如果我是,你能告诉我怎么做吗?我想我在第 1 页(vp1)上画了一些东西,然后创建一个新页面,然后在新页面上画一些东西......
  • pdf中有一个文件参数。尝试明确设置。

标签: r r-grid


【解决方案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,包括这些文件。或者,在您选择的文字处理器中创建一个文档并手动导入图像文件。

【讨论】:

  • 我可以控制这些面板的布局,使它们只出现在页面的顶部三分之一处吗?这是我的简介...
  • @Mike,如果你使用乳胶(sweave),你可以将你的花车放置在你想要的任何地方(en.wikibooks.org/wiki/LaTeX/Floats,_Figures_and_Captions
  • @VitoshKa 这是否由我​​决定,这正是我会做的。不过,我的简介是使用 R。感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2012-08-21
  • 2016-10-20
  • 1970-01-01
  • 2013-01-12
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多