Lagre ggplot()-grafer
Med funksjonen ggsave() lagrer du en graf fra R til datamaskinens harddisk. Hvis du har lagret grafen i et objekt, kan du angi objektets navn med argumentet plot i ggsave(). Hvis du ikke angir et objekt for plot, vil ggsave() lagre den sist genererte grafen. Da bør ggsave() plasseres rett etter koden for grafen som skal lagres.
I eksemplene nedenfor lagrer vi den siste grafen automatisk i ulike filformater. Merk at det ikke er noe + mellom ggplot() og ggsave().
## Lagrer i PNG-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.png')
## Lagrer i PDF-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.pdf')
## Lagrer i JPEF-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.jpeg')
## Lagrer i SVG-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.svg')
## Lagrer i EPS-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.eps')
## Lagrer i BMP-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.bmp')
## Lagrer i TIFF-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.tiff')
## Lagrer i PS-format
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.ps')
## Lagrer i PDF-format (kun Windows)
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.wmf')I neste eksempel lager vi et objekt (my_plot) fra ggplot(), og deretter angir vi i ggsave() at vi vil lagre nettopp det objektet.
my_plot <- ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave(plot="my_plot", filename="my_plot.png")Funksjonen ggsave() har en rekke argumenter som kan justeres etter behov:
| Argument | Funksjon |
|---|---|
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 filenameare 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. |
Argumenter i ggsave()
Bredde og høyde
Når du lagrer grafer, hentes høyden og bredden fra det aktuelle utseendet i Rstudio. Derfor er det bedre å angi høyde og bredde i ggsave(). Nedenfor lagres en figur i png-format med 1000 piksler i høyde og bredde.
ggplot(gapminder, aes(x=pop, y=lifeExp)) + geom_point()
ggsave('Min-figur.png', height=1000, width=1000, units = "px")Hvis du bruker R Markdown til å generere rapporter, kan du angi figurens høyde og bredde i innstillingene for hver chunk. Bildet nedenfor viser at vi angir at grafer skal ha en bredde og høyde på 1000 piksler.

Lagre grafer laget med base R
Det er fullt mulig å lage grafer med base R. Det anbefales ikke, ettersom ggplot2 er betydelig bedre. Et eksempel på en graf i base R følger:
plot(100, 200)
For å lagre grafer laget i base R må følgende kode brukes:
png('base-R-graf.png', height=500, width=500)
plot(100, 200)
dev.off()I eksemplet ovenfor lagrer vi bildet i png-format. Før grafen tegnes, bruker vi funksjonen png() til å angi filnavnet, høyden og bredden. Deretter tegnes grafen, og på siste linje (dev.off()) forteller vi at bildet er ferdig og kan lagres.
For å lagre figuren i PDF-format brukes i stedet koden nedenfor. Merk at både "png" i funksjonen og filnavnet er byttet ut med "pdf":
pdf('base-R-graf.pdf', height=500, width=500)
plot(100, 200)
dev.off()