2011-11-29 43 views
5

SO,将多个glm图导出为PNG?

我试图导出我的线性模型的情节。当我将它作为PDF使用时,PDF有四个页面和四个不同的图表。当我以PNG格式导出时,我只能看到第一张图表。我如何导出以便将所有四个图形作为单独的PNG文件?

什么用PDF工作:

lrfitX11SUMS <- glm(X11SUMS ~ POLITA + CIRCULATION + COMPAPER + TrafficRankUS, data=NewspTest) 

    summary(lrfitOTONE) 
    pdf("/Users/william/Desktop/output/lmfitOTONE1.pdf") 
    plot(lrfitOTONE) 
    dev.off() 

什么也没有用PNG作品(并且花了两个小时在互联网上和剧情文档中挖周围没有用):

lrfitX11SUMS <- glm(X11SUMS ~ POLITA + CIRCULATION + COMPAPER + TrafficRankUS, data=NewspTest) 

summary(lrfitOTONE) 
png("/Users/william/Desktop/output/lmfitOTONE1.png", width=720, height=720, pointsize=16) 
png("/Users/william/Desktop/output/lmfitOTONE2.png", width=720, height=720, pointsize=16) 
png("/Users/william/Desktop/output/lmfitOTONE3.png", width=720, height=720, pointsize=16) 
png("/Users/william/Desktop/output/lmfitOTONE4.png", width=720, height=720, pointsize=16) 
plot(lrfitOTONE) 
dev.off() 

如何获得我的图像?

谢谢,

-wm

回答

6

像这样:

setwd("/Users/william/Desktop/output/") 
tmpf <- function(i) { 
    png(paste("lmfitOTONE",i,".png",sep=""), width=720, height=720, pointsize=16) 
} 
wplot <- c(1,2,3,5) ## see ?plot.lm for definition of 'which' 
for (i in seq_along(wplot)) { 
    tmpf(i); plot(lrfitOTONE, which=wplot[i]); dev.off() 
} 

的关键是认识到plot.lm(其是由plot应用于glm对象所使用的方法,因为是glmlm的子类,并且没有自己的特定绘图方法)根据which参数显示诊断图,并且默认值的which与上面的wplot相同。所以基本上:弄清楚如何创建个人分区。

+0

+1有关'plot.lm'方法的信息以及如何通过'which'来绘制各个图形。 –

+0

非常感谢! – user1017124

+0

@ user1017124 - 除非我误解,否则您听起来很高兴;)另一种显示的方法是通过单击旁边的复选标记来“接受”这两个优秀答案中的一个。感谢您提出的问题以及它引发的答案。 –

8

PDF允许多页文档。 PNG图像与这个想法基本上是不相容的。读?png和赞赏需要看看filename论据会导致你到?postscript的细节。

你想要的东西,如:

png("/Users/william/Desktop/output/lmfitOTONE%1d.png", width=720, 
    height=720, pointsize=16) 
plot(lrfitOTONE) 
dev.off() 

其中在文件名中%1d是扩展到1位的数字值,以使你得到四个数字与你想要的名称通配符。您拨打png()的4个电话设置了四个独立的设备,只有后者被使用并随后关闭,其他三个设备保持打开状态。

+0

比我的好。 –

+0

请注意Ben在他的答案中的评论,关于让绘图方法绘制个人情节。我的答案假定显示屏不会分成多个面板 - 除非您做了任何事情才能实现。 –