wake-up-neo.com

Funktion zum Speichern von ggplot

Ich möchte eine Funktion zum Speichern von Plots (von ggplot) erstellen. Ich habe viele solcher Grundstücke, damit ich effektiver arbeiten kann.

Hier ist ein Datenrahmen:

### creating data frame
music <- c("Blues", "Hip-hop", "Jazz", "Metal", "Rock")
number <- c(8, 7, 4, 6, 11)
df.music <- data.frame(music, number)
colnames(df.music) <- c("Music", "Amount")

Dann erstelle ich eine Handlung:

### creating bar graph (this part is OK)
myplot <- ggplot(data=df.music, aes(x=music, y=number)) +
 geom_bar(stat="identity") +
 xlab(colnames(df.music)[1]) +
 ylab(colnames(df.music)[2]) +
 ylim(c(0,11)) +
 ggtitle("Ulubiony typ muzyki wśród studentów")

Jetzt möchte ich diesen Plot unter .pdf Speichern.

Das funktioniert:

pdf("Myplot.pdf", width=5, height=5)
plot.music.bad
dev.off()

Ich möchte dies jedoch mit einer Funktion automatisieren, die den Plot als Argument verwendet, den ich speichern möchte. Ich weiß nicht genau, wie ich es machen soll. Folgendes habe ich versucht:

save <- function(myplot){
  plot<- myplot
  pdf("lol.pdf", width=5, height=5)
  plot
  dev.off()
}
### .pdf file is created but doesn't work
save(myplot) 

Also, wie kann ich das machen?

35
jjankowiak

Sie können print() verwenden, um aus ggplot2 Erstellte Diagramme in einer Datei zu speichern.

Definieren Sie zunächst Ihre Funktion zum Speichern von Plots:

savePlot <- function(myPlot) {
        pdf("myPlot.pdf")
        print(myPlot)
        dev.off()
}

Erstellen Sie Ihr Grundstück:

 myPlot <- ggplot(ggplot(data=df.music, aes(x=music, y=number)) +
 geom_bar(stat="identity") +
 xlab(colnames(df.music)[1]) +
 ylab(colnames(df.music)[2]) +
 ylim(c(0,11)) +
 ggtitle("Ulubiony typ muzyki wśród studentów")

Und zum Schluss die Funktion aufrufen:

savePlot(myPlot)

Alternativ können Sie auch ggsave() verwenden, nachdem Sie Ihr Diagramm erstellt haben:

ggsave(filename="myPlot.pdf", plot=myPlot)
43
enricoferrero

Das Folgende war nützlich für mich, vielleicht auch für jemanden anderen. Man kann die letzte Handlung speichern, ohne sie explizit zu erwähnen.

ggsave("filename.pdf", 
 plot = last_plot(), # or give ggplot object name as in myPlot,
 width = 5, height = 5, 
 units = "in", # other options c("in", "cm", "mm"), 
 dpi = 300)
9
Suren

Wenn Sie eine Bilddatei anstelle eines PDFs wünschen, funktioniert auch Folgendes

ggsave(filename="myPlot.jpg", plot=last_plot())

oder mit zusätzlichen Parametern wie folgt.

ggsave(filename="myPlot.jpg", plot=lastplot(),
       width = 10, height = 5, 
       units = "cm", # other options are "in", "cm", "mm" 
       dpi = 200
       )

Folgende Dateitypen werden ebenfalls unterstützt: "eps", "ps", "tex" (pictex), "pdf", "jpeg", "tiff", "png", "bmp", "svg" oder "wmf".

4
Orhan Celik