2011-11-29 7 views
5

SO,Esportare più grafici glm come file PNG?

Sto cercando di esportare i grafici del mio modello lineare. Quando lo faccio come PDF, il PDF ha quattro pagine e quattro grafici diversi. Quando esporto come PNG, ottengo solo il primo grafico. Come posso esportare in modo da ottenere tutti e quattro i grafici come file PNG separati?

Che cosa ha funzionato con il PDF:

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

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

cosa non ha funzionato con PNG (e ha trascorso due ore a scavare in giro su internet e nella documentazione plot inutilmente):

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

Come ottengo le mie immagini?

Grazie,

-Wm

risposta

6

Qualcosa di simile:

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 chiave è capire che plot.lm (che è il metodo usato da plot applicato ad un oggetto glm, perché è glm una sottoclasse di lm e non ha un proprio metodo di stampa specifico) visualizza i grafici diagnostici basati sull'argomento which e il valore predefinito di which è lo stesso di wplot precedente. Quindi in pratica: capire come creare i singoli sotto-grafici.

+0

+1 per le informazioni sul metodo 'plot.lm' e come tracciare le singole figure tramite' which'. –

+0

GRAZIE MOLTO !! – user1017124

+0

@ user1017124 - A meno che non stia interpretando male, sembri soddisfatto;) Un altro modo per dimostrare che è "accettare" una di queste due eccellenti risposte, facendo clic sul segno di spunta accanto ad essa. Grazie a te per la tua domanda e le risposte che ha provocato. –

8

Un PDF consente documenti a più pagine. Un'immagine PNG è fondamentalmente incompatibile con questa idea. Leggere ?png e apprezzare la necessità di guardare l'argomento filename avrebbe indirizzato l'utente a ?postscript per i dettagli.

si desidera qualcosa di simile:

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

dove il %1d nel nome del file è un carattere jolly che si espande a un 1 digit valore numerico in modo tale che si ottiene quattro figure con i nomi che volevi. Le 4 chiamate a png() hanno impostato quattro dispositivi separati, solo l'ultimo dei quali è stato utilizzato e successivamente chiuso, mentre gli altri tre sono rimasti aperti.

+0

migliore del mio. –

+0

Prendere nota dei commenti di Ben nella sua risposta per ottenere il metodo di tracciamento per disegnare trame individuali. La mia risposta presuppone che il display non sia diviso in più pannelli, cosa che non è possibile a meno che tu non abbia fatto qualcosa per renderlo tale. –