5

所以,

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

4

2 回答 2

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 位数值,这样您就可以得到具有所需名称的四个数字。您的 4 次调用png()设置了四个独立的设备,只有后者被使用并随后关闭,其他三个保持打开状态。

于 2011-11-29T22:05:16.627 回答
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对象的方法,因为glm它是的子类lm并且没有自己特定的绘图方法)根据which参数显示诊断图,默认值whichwplot以上。所以基本上:弄清楚如何创建单独的子图。

于 2011-11-29T22:02:12.757 回答