Spara ggplot() grafer
Med funktionen ggsave()
sparar du en graf från R till din dators hårddisk. Om du sparat grafen i ett objekt kan du ange objektets namn med argumentet plot i ggsave()
. Om du inte anger ett objekt för plot så kommer ggsave()
spara den senast genererade grafen. Då bör ggsave()
placeras direkt efter koden för grafen som skall sparas.
I exemplen nedan sparar vi den senaste grafen automatiskt i olika filformat. Observera att det inte finns ett +
mellan ggplot()
och ggsave()
.
# Sparar i PNG-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.png')
# Sparar i PDF-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.pdf')
# Sparar i JPEF-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.jpeg')
# Sparar i SVG-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.svg')
# Sparar i EPS-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.eps')
# Sparar i BMP-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.bmp')
# Sparar i TIFF-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.tiff')
# Sparar i PS-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.ps')
# Sparar i PDF-format (endast Windows)
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.wmf')
I nästa exempel skapar vi ett objekt (my_plot
) från ggplot()
och vi specificerar sedan i ggsave()
att vi vill spara just det objektet.
my_plot <- ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave(plot="my_plot", filename="my_plot.png")
Funktionen ggsave()
har ett antal argument som kan justeras efter behov:
Argument | Funktion |
filename | File name to create on disk. |
plot | Plot to save, defaults to last plot displayed. |
device | Device to use. Can either be a device function, or one of "eps", "ps", "tex" (pictex), "pdf", "jpeg", "tiff", "png", "bmp", "svg" or "wmf" (windows only). |
path | Path of the directory to save plot to: path and filename are combined to create the fully qualified file name. Defaults to the working directory. |
scale | Multiplicative scaling factor. |
width, height, units | Plot size in units ("in", "cm", "mm", or "px"). If not supplied, uses the size of current graphics device. |
dpi | Plot resolution. Also accepts a string input: "retina" (320), "print" (300), or "screen" (72). Applies only to raster output types. |
limitsize | When TRUE (the default), ggsave() will not save images larger than 50x50 inches, to prevent the common error of specifying dimensions in pixels. |
bg | Background colour. If NULL , uses the plot.background fill value from the plot theme. |
Bredd och höjd
När du sparar grafer kommer höjden och bredden hämtas från det aktuella utseendet i Rstudio. Därför är det bättre att specificera höjd och bredd i ggsave()
. Nedan sparas en figur i png-format med 1000 pixlar höjd och bredd.
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.png', height=1000, width=1000, units = "px")
Om du använder R Markdown för att generera rapporter kan du specificera figurens höjd och bredd i varje chunks inställningar. På nedanstående bild framgår att vi specificerar att grafer ska ha en bredd och höjd på 1000 pixlar.

Spara grafer gjorda med base R
Det är fullt möjligt att skapa grafer med base R. Det rekommenderas inte eftersom ggplot2 är avsevärt bättre. Ett exempel på en graf i base R följer:
plot(100, 200)

För att spara grafer gjorda i base R måste följande kod användas:
png('base-R-graf.png', height=500, width=500)
plot(100, 200)
dev.off()
I exemplet ovan sparar vi bilden i png-format. Innan grafen ritas använder vi funktionen png()
för att specificera filnamnet, höjd och bredd. Därefter ritas grafen och på sista raden (dev.off()
) berättar vi att bilden är färdig och att den kan sparas.
För att spara figuren i PDF-format används istället nedanstående kod. Notera att både "png" i funktionen och filnamnet har bytts ut mot "pdf":
pdf('base-R-graf.pdf', height=500, width=500)
plot(100, 200)
dev.off()