【问题标题】:Printing to multiple devices打印到多个设备
【发布时间】:2013-04-10 15:47:27
【问题描述】:

我正在尝试同时打印到两个设备。在大多数情况下,我可以创建我想要的输出,但我不确定如何更改第一个设备的 par$mfrow 设置。

pdf(file="test.all.pdf",width=7,height=10,pointsize=12,bg="white",paper="letter",pagecentre=T)
par(mfrow=c(3,2))

for(i in 1:12){
  temp <- rnorm(500,i,1)
  pdf(paste0("test_",i,".pdf"))
  dev.control(displaylist="enable")
  hist(temp)
  dev.copy(which=2)
  dev.off(which=3)
}

graphics.off()

我正在尝试为每个图获取单独的 .pdf 文件,然后是一个组合的 .pdf 文件,每页有 6 个图。相反,我只是得到一个组合的 .pdf 文件,每页 1 个图。

我根据post 构建了我的代码。

【问题讨论】:

  • 您的目标(6-up 格式)应该仅通过调用pdf 来实现。是对pdf(和dev.off)的内部调用搞砸了。
  • @dayne 我意识到了这一点,但想为其他用户链接上下文。我将在短时间内删除我的评论,并建议您也这样做以避免混淆线程。如果您在帖子中添加链接,我将删除原始评论。
  • @DWin 我希望它输出两个文件,所以我需要两次调用pdf。一个文件应包含所有图,每页六个。那么每个地块也应该有一个单独的文件。
  • 欢迎您随心所欲地用头撞墙,但我认为 R 中的图形设备模型不会支持嵌套调用。您可以轻松地创建一个执行两组独立操作的函数。

标签: r device


【解决方案1】:

像@DWin 一样,我认为这不可能如你所问。 dev.copy() 复制设备区域,而不是绘图,这就是为什么我认为它不能仅仅根据一组不同的 par() 参数放置绘图。

在我看来,它也似乎更干净,更容易阅读和写作阅读以绘制每个情节我害怕两次。如果绘制绘图的代码很复杂,请事先将其转为函数。

mycomplicatedPlot <- function(x, ...){
    hist(x,...)
    abline(v=mean(x))
    abline(v=quantile(x, probs=c(0.025, 0.975)), lty=2, col="red")
}

pdf(file="test.all.pdf",width=7,height=10,pointsize=12,bg="white",paper="letter",pagecentre=T)
    par(mfrow=c(3,2))

    for(i in 1:12){
      temp <- rnorm(500,i,1)
      pdf(paste0("test_",i,".pdf"))
          mycomplicatedPlot(temp, main=i)
      dev.off()
    mycomplicatedPlot(temp, main=i)
    }
dev.off()

【讨论】:

  • 谢谢。我按照你的建议设置了代码,我只是想看看是否有可能在我追求学习 R 的过程中以另一种方式做到这一点。
猜你喜欢
  • 1970-01-01
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
  • 1970-01-01
  • 2011-04-02
  • 1970-01-01
相关资源
最近更新 更多