Come salvare un grafico come immagine sul disco?


Answers

Se vuoi continuare a vedere la trama in R, un'altra opzione è usare dev.copy :

X11 ()
plot (x,y)

dev.copy(jpeg,filename="plot.jpg");
dev.off ();

Se si raggiunge un ammasso di troppe finestre di trama in R, utilizzare graphics.off() per chiudere tutte le finestre di trama.

Question

Traccio una semplice regressione lineare usando R. Vorrei salvare quell'immagine come PNG o JPEG, è possibile farlo automaticamente? (tramite codice)

Ci sono due domande diverse: in primo luogo, sto già guardando la trama sul mio monitor e vorrei salvarla così com'è. In secondo luogo, non ho ancora generato la trama, ma vorrei salvarla direttamente su disco quando eseguo il mio codice di tracciamento.




Se usi R Studio http://rstudio.org/ c'è un menu speciale per salvare la tua trama come qualsiasi formato che ti piace e in qualsiasi risoluzione tu scelga




plotpath<- file.path(path, "PLOT_name",paste("plot_",file,".png",sep=""))

png(filename=plotpath)

plot(x,y, main= file)

dev.off()



In alcuni casi si vuole salvare e stampare una trama di base r. Ho passato un po 'di tempo e ho trovato questa funzione di utilità:

x = 1:10

basesave = function(expr, filename, print=T) {
  #extension
  exten = stringr::str_match(filename, "\\.(\\w+)$")[, 2]

  switch(exten,
         png = {
           png(filename)
           eval(expr, envir = parent.frame())
           dev.off()
         },
         {stop("filetype not recognized")})


  #print?
  if (print) eval(expr, envir = parent.frame())

  invisible(NULL)
}

#plots, but doesn't save
plot(x)

#saves, but doesn't plot
png("test.png")
plot(x)
dev.off()

#both
basesave(quote(plot(x)), "test.png")

#works with pipe too
quote(plot(x)) %>% basesave("test.png")

Si noti che è necessario utilizzare il quote , altrimenti la chiamata plot(x) viene eseguita nell'ambiente globale e NULL viene passato a basesave() .




Come questo

png('filename.png')
# make plot
dev.off()

o questo

# sometimes plots do better in vector graphics
svg('filename.svg')
# make plot
dev.off()

o questo

pdf('filename.pdf')
# make plot
dev.off()

E probabilmente anche altri. Sono tutti elencati insieme nelle pagine di aiuto.