打印到多个设备

时间:2013-04-10 15:47:28

标签: r device

我正在尝试同时打印到两个设备。我可以在很大程度上创建我想要的输出,但我不确定如何更改第一个设备的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文件,然后是每页6个绘图的组合.pdf文件。相反,我只是得到一个组合的.pdf文件,每页有1个图。

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

1 个答案:

答案 0 :(得分:0)

就像@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()