2013-04-10 49 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