2013-10-10 25 views
11

我中的R一些代碼,生成一個多pdf文件:)řPDF()的用法(

pdf("myplot.pdf", width=8.5, height=5) 

My.Plot(my.data, var1, var2) 
My.Plot(my.data, var3, var2) 
My.Plot(my.data, var4, var2) 

dev.off() 

My.Plot(僅僅是解析必要的數據,然後一個函數使用ggplot來創建圖形

上述工作就好了。但是,當我將此代碼放入函數中時,不會生成任何圖並且不能讀取/打開PDF輸出。

generate.PDF <- function(my.data) {  
    pdf("myplot.pdf", width=8.5, height=5) 

    My.Plot(my.data, var1, var2) 
    My.Plot(my.data, var3, var2) 
    My.Plot(my.data, var4, var2) 

    dev.off() 
} 
+0

這個問題是不可重現。你顯然沒有向我們展示關鍵的東西。 – Thomas

+2

很有可能你要注意R-FAQ的建議,在'網格'圖形函數週圍使用'print()'。 –

+0

@ 42意味着*不注意... – micstr

回答

9

當一個功能,你需要調用print()功能實際上畫在畫布上,就像這樣:

x <- runif(20,10,20) 
y <- runif(20,30,50) 
data<-data.frame(x,y) 
generate.PDF <- function(data) {  
    pdf("/home/aksel/Downloads/myplot.pdf", width=8.5, height=5,onefile=T) 
    plot1 <- plot(x,y) 
    plot2 <- plot(y,x) 
    plot3 <- plot(x,y*2) 
    print(plot1) 
    print(plot2) 
    print(plot3) 
    dev.off() 
} 
generate.PDF(data) 
+0

而且,如果您使用的是ggplot,總是會有'ggsave()' – ako

+1

print()做的很好。 我不能使用ggsave(),因爲它不會做多頁PDF –