web-dev-qa-db-fra.com

Fonction pour enregistrer ggplot

Je voudrais créer une fonction pour enregistrer les tracés (à partir de ggplot). J'ai beaucoup de ces parcelles, donc cela m'aidera à travailler plus efficacement.

Voici un bloc de données:

### 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")

Ensuite, je crée un tracé:

### 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")

Maintenant, je veux enregistrer ce tracé dans .pdf.

Cela marche:

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

Cependant, je voudrais automatiser cela avec une fonction qui prend comme argument le tracé que je veux enregistrer. Je ne sais pas exactement comment le faire; voici ce que j'ai essayé:

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) 

Alors, comment puis-je le faire?

35
jjankowiak

Vous pouvez utiliser print() pour enregistrer les tracés produits à partir de ggplot2 Dans un fichier.

Tout d'abord, définissez votre fonction pour enregistrer les tracés:

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

Créez votre intrigue:

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

Et enfin appelez la fonction:

savePlot(myPlot)

Alternativement, vous pouvez simplement utiliser ggsave() après avoir créé votre tracé:

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

La suite m'a été utile, peut-être aussi pour quelqu'un d'autre. On peut enregistrer le dernier tracé sans le renvoyer explicitement également.

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

Si vous souhaitez un fichier image au lieu d'un pdf, les travaux suivants

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

ou avec des paramètres supplémentaires, comme suit.

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

Les types de fichiers suivants sont également pris en charge "eps", "ps", "tex" (pictex), "pdf", "jpeg", "tiff", "png", "bmp", "svg" ou "wmf".

4
Orhan Celik