2011-11-29 22 views
5

SO,¿Exporta múltiples diagramas de glm como PNG?

Estoy tratando de exportar gráficos de mi modelo lineal. Cuando lo hago como PDF, el PDF tiene cuatro páginas y cuatro gráficos diferentes. Cuando exporto como PNG, solo obtengo el primer gráfico. ¿Cómo exporto para que obtenga los cuatro gráficos como archivos PNG separados?

Lo que funcionó con el PDF:

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

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

Lo que no funcionaba con PNG (y pasó dos horas cavando alrededor en el Internet y en la documentación gráfica en vano):

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() 

¿Cómo obtengo mis imágenes?

Gracias,

-Wm

Respuesta

6

algo como esto:

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() 
} 

La clave es darse cuenta de que plot.lm (que es el método utilizado por plot aplicado a un objeto glm, porque glm es una subclase de lm y no tiene su propio método de trazado particular) muestra gráficas de diagnóstico basadas en el argumento which, y el valor predeterminado de which es lo mismo que wplot anterior. Entonces, básicamente: descubra cómo crear subtramas individuales.

+0

+1 para la información sobre el método 'plot.lm' y cómo representar figuras individuales a través de' which'. –

+0

¡MUCHAS GRACIAS! – user1017124

+0

@ user1017124 - A menos que malinterprete, parece satisfecho;) Otra forma de mostrar eso es 'aceptar' una de estas dos excelentes respuestas, haciendo clic en la marca de verificación al lado. Gracias a ti por tu pregunta y las respuestas que provocó. –

8

Un PDF permite documentos de varias páginas. Una imagen PNG es fundamentalmente incompatible con esta idea. Leyendo ?png y apreciando la necesidad de mirar el argumento filename le habría dirigido a ?postscript para más detalles.

quieres algo así como:

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

donde el %1d en el nombre del archivo es un comodín que se expande a un valor numérico de 1 dígito de tal manera que se obtiene cuatro cifras con los nombres que quería. Sus 4 llamadas al png() configuraron cuatro dispositivos separados, solo el último de los cuales se usó y posteriormente se cerró, los otros tres permanecieron abiertos.

+0

mejor que el mío. –

+0

Observe los comentarios de Ben en su Respuesta sobre cómo obtener el método de trazado para dibujar trazados individuales. Mi respuesta asume que la pantalla no está dividida en varios paneles, lo que no ocurre a menos que haya hecho algo para que así sea. –

Cuestiones relacionadas