2013-04-10 47 views
2

我试图同时打印到两个设备。我可以大部分创建我想要的输出,但我不确定如何更改第一个设备的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的代码。

+0

相关岗位:http://stackoverflow.com/q/7942612/1000343 – 2013-04-10 15:57:04

+0

你(的有6个以上格式)的目标应该只使用一个调用'pdf'来完成。这是内部调用'pdf'(和'dev.off')的东西。 – 2013-04-10 16:23:28

+0

@dayne我意识到,但想要链接其他用户的上下文。我将在短时间内删除我的评论,并建议您也这样做,以避免混淆该主题。如果您在帖子中添加链接,我会删除原始评论。 – 2013-04-10 16:39:18

回答

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() 
+0

谢谢。我按照你的建议进行了代码设置,我只是试图看看是否有可能以我另一种方式来学习R。 – dayne 2013-04-13 15:56:20