16.7 Saving plots in files
- The same as for regular plots applies:
png("myggplot.png")
pdev.off()
- You can also use the ggplot2 ggsave function:
# By default, save the last plot that was produced
ggsave(filename="lastplot.png")
# You can pick which plot you want to save:
ggsave(filename="myplot.png", plot=p)
# Many different formats are available:
# "eps", "ps", "tex", "pdf", "jpeg", "tiff", "png", "bmp", "svg", "wmf"
ggsave(filename="myplot.ps", plot=p, device="ps")
# Change the height and width (and their unit):
ggsave(filename="myplot.pdf",
width = 20,
height = 20,
units = "cm")
- You can also organize several plots on one page
- One way is to use the gridExtra package:
- ncol, nrow: arrange plots in such number of columns and rows
install.packages("gridExtra")
# load package
library(gridExtra)
# 2 rows and 2 columns
grid.arrange(pscat, pbox_fill, pbar, phist, nrow=2, ncol=2)
# 1 row and 4 columns
grid.arrange(pscat, pbox_fill, pbar, phist, nrow=1, ncol=4)
Combine ggsave and grid.arrange:
<- grid.arrange(pscat, pbox_fill, pbar, phist, nrow=1, ncol=4)
myplots
ggsave(filename="mygridarrange.png", plot=myplots)
HANDS-ON (same as for the “base” plots!)
Go back to the previous plots you created (if you didn’t save commands in an R script, you can refer to the History tab in the top-right panel):
- Save 1 plot of your choice in a jpeg file.
- Save 3 plots of your choice in a pdf file (one plot per page).
- Organize the same 3 plots in 1 row / 3 columns. Save the image in a png file. Play with the width (and perhaps also height) argument of
png()
until you are satisfied with the way the plot renders.
Answer
# Save 1 plot of your choice in a **jpeg** file.
<- ggplot(data=df_long, mapping=aes(x=value)) + geom_histogram()
phisto ggsave(filename="mygridarrange.jpeg", plot=phisto)
# Save 3 plots of your choice in a **pdf** file (one plot per page).
<- ggplot(data=chickwts, mapping=aes(x=feed)) + geom_bar()
pbarplot <- ggplot(data=CO2, mapping=aes(x=Treatment, y=uptake, fill=Type)) + geom_boxplot()
pboxplot pdf("my3ggplot2.pdf")
phisto
pbarplot
pboxplotdev.off()
# Organize the same 3 plots in 1 row / 3 columns.
<- grid.arrange(phisto, pbarplot, pboxplot, nrow=1, ncol=3)
my3ggplots ggsave(filename="my3ggplots.png", plot=my3ggplots, width=12)