【问题标题】:forcing R PDF to new page after variable number of plots在可变数量的绘图后强制 R PDF 到新页面
【发布时间】:2014-09-21 18:26:53
【问题描述】:

根据输入数据的大小/形状,我可以在每页上绘制偶数或奇数个图。

我将par(mfrow) 设置为可以容纳所有图的最小网格,但现在我想确保它在下一次循环迭代中移动到下一页,以防总数的图以奇数结尾或不适合网格。

如何强制创建新页面? Google 向我显示了grid.newpage(),但我得到了错误

> grid.newpage()
Error: could not find function "grid.newpage"

当我尝试使用它时。另外,除非我弄错了,否则基本绘图不使用grid,所以这对我没有帮助。

【问题讨论】:

  • @baptiste 当然可以。
  • 我怀疑你可以只加载 pkg:grid 然后使用grid.newpage() 获得所需的效果。 (虽然我试了一下,下一个情节还是在右下角。)
  • 这工作:library(grid); grid.newpage();par(mfg=c(1,1))
  • @BondedDust 我真的怀疑是否应该依赖网格和基本图形的这种混合;据我所知,这两个系统大多是独立的,它们的交互似乎既没有记录也没有得到他们自己的开发人员的信任。

标签: r pdf pdf-generation


【解决方案1】:

这是一个建议的策略:用plot.new() 填充空单元格,直到布局被填满; next plot 会自动推送一个新页面。

n = 5
rc = n2mfrow(n)
par(mfrow=rc, mar=c(0,0,0,0)) 
for(ii in seq_len(n))
    plot(rnorm(10))
for(ii in seq_len(prod(rc) - n))
    plot.new()

plot(1,1) # on its own new page

你也可以试试

while(!par('page')) plot.new()

【讨论】:

  • 第一个解决方案有效。有趣的是,第二个解决方案适用于我的 Rstudio,但在运行它的服务器上我收到错误 In par("page") : "page" is not a graphical parameter
  • 这是一个相当新的添加,IIRC。您的服务器可能正在运行一个过时的 R 版本。
  • 对于第一个解决方案,使用 seq_len 而不是 seq.int 可能更安全,因为seq.int(0) 的长度为 2。我知道这只是一个虚构的例子,但想想也无妨这些东西。
  • @Dason 好点,我总是把那些搞混了。这实际上与第二个循环非常相关。
  • 我个人非常喜欢您的替代选择。谢谢!
猜你喜欢
  • 1970-01-01
  • 2021-10-31
  • 1970-01-01
  • 2010-11-14
  • 1970-01-01
  • 2021-12-12
  • 2011-03-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多