将多个glm图导出为PNG?

时间:2011-11-29 21:51:47

标签: r png plot glm

SO,

我正在尝试导出我的线性模型图。当我以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

2 个答案:

答案 0 :(得分: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个电话设置了四个独立的设备,后者只使用了后者并随后关闭,其他三个设备仍处于打开状态。

答案 1 :(得分: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.lmplot使用的方法应用于glm对象,因为glmlm的子类并且没有自己特定的绘图方法)根据which参数显示诊断图,which的默认值与上面的wplot相同。所以基本上:弄清楚如何创建单个子图。