InicioGr谩ficosExportar gr谩ficos en R

Exportar gr谩ficos en R

Exportar gr谩ficos en R como PDF, JPEG, PNG, SVG y otros formatos

Cuando desees exportar un gr谩fico para usarlo en un documento, como una presentaci贸n o un art铆culo cient铆fico, debes guardar el gr谩fico en un formato de alta calidad, ya que no querr谩s que tus gr谩ficos se vean borrosos o pixelados. En este tutorial, aprender谩s a exportar gr谩ficos en R, en gr谩ficos vectoriales y en formatos de imagen de alta resoluci贸n.

Exportar gr谩ficos con el men煤 en RStudio y R GUI

Si est谩s usando RStudio puedes exportar un gr谩fico desde el men煤 Export del panel de gr谩ficos:

Exportar gr谩ficos en R desde el men煤

El men煤 te permite seleccionar tres opciones: guardar el plot como imagen, como PDF o copiar el gr谩fico al portapapeles.

Guardar como imagen

Si seleccionas Save as Image... se abrir谩 la siguiente ventana:

Guardar plot en RStudio como imagen

En la ventana anterior, puedes seleccionar el formato de imagen en el que deseas guardar el gr谩fico (PNG, JPEG, TIFF, BMP, Metafile, SVG o EPS), el ancho y la altura en p铆xeles, el directorio en el que se guardar谩 y el nombre del archivo.

Guardar como PDF

Si seleccionas Save as PDF... puedes seleccionar el tama帽o del PDF, la orientaci贸n, la API de cairo graphics, el directorio para guardar el archivo y el nombre del mismo.

Exportar plot como PDF en RStudio

Copiar al portapapeles

La 煤ltima opci贸n que puedes seleccionar es copiar la imagen al portapapeles, como bitmap o metafile. Tambi茅n puedes especificar el ancho y el alto del gr谩fico en p铆xeles.

Copiar imagen al portapapeles en RStudio

En R GUI tendr谩s que ir a ArchivoGuardar como y seleccionar el tipo de archivo que prefieras. Si seleccionas Jpeg, tambi茅n puedes especificar la calidad de la imagen resultante. Como 煤ltima opci贸n puedes copiar la imagen en el Portapapeles (Copiar para el 谩rea de transferencia).

Guardar plot en R GUI desde el men煤

En las siguientes secciones revisaremos c贸mo exportar gr谩ficos en R con c贸digo, lo que permite personalizar completamente la salida. Recuerda que los primeros tres (PDF, SVG y PS) son formatos gr谩ficos vectoriales y por tanto no dependen de la resoluci贸n, mientras que los otros son formatos de imagen de alta resoluci贸n.

Guardar plot en R como PDF, SVG o postscript (PS)

El formato PDF para guardar im谩genes es el m谩s utilizado para crear documentos cient铆ficos, ya que son f谩ciles de agregar a LaTeX y mantienen la resoluci贸n incluso si haces zoom. Sin embargo, si necesitas editar la imagen despu茅s de guardar para agregar algo de decoraci贸n o realizar alguna modificaci贸n, deber铆as usar SVG.

Primero, para exportar un gr谩fico como PDF necesitar谩s abrir el dispositivo gr谩fico con la funci贸n pdf, crear el gr谩fico que quieras y, finalmente, cerrar el dispositivo abierto con la funci贸n dev.off.

# Abrimos el dispositivo gr谩fico
pdf("mi_plot.pdf")

# Creamos un gr谩fico
plot(rnorm(20))

# Cerramos el dispositivo gr谩fico
dev.off() 

Tambi茅n puedes cambiar el ancho y la altura (en pulgadas) del gr谩fico de salida, el tama帽o del papel y del texto, o modificar el color de fondo, ya que el gr谩fico PDF tendr谩 un fondo transparente, o incluso el modo de color, entre otros par谩metros gr谩ficos.

# Personalizamos la salida
pdf("mi_plot.pdf",         # Nombre del archivo
    width = 8, height = 7, # Ancho y alto en pulgadas
    bg = "white",          # Color de fondo
    colormodel = "cmyk"    # Modo de color (cmyk para la mayor铆a de publicaciones)
    paper = "A4")          # Tama帽o del papel

# Creamos un gr谩fico
plot(rnorm(20))

# Cerramos el dispositivo gr谩fico
dev.off() 

Ten en cuenta que puedes convertir pulgadas a cent铆metros dividiendo por 2.54.

De forma predeterminada, el argumento paper de la funci贸n pdf est谩 establecido en "special", lo que significa que el tama帽o del papel est谩 definido por la altura y ancho especificados.

Recuerda ejecutar ?pdf para obtener informaci贸n adicional de los argumentos de la funci贸n.

Segundo, en R puedes exportar un gr谩fico a SVG (Scalable Vector Graphics) con la funci贸n svg. Esta funci贸n tambi茅n permite modificar el alto, ancho y tama帽o del texto con los argumentos height, width y pointsize, respectivamente, pero tambi茅n el anti-alias con el argumento antialias.

# Dispositivo SVG
svg("mi_plot.svg")

# C贸digo del gr谩fico
plot(rnorm(20))

# Cerramos el dispositivo
dev.off() 

N贸tese que puedes abrir los archivos SVG con Adobe Illustrator, Inkscape u otro software similar para editar el gr谩fico vectorial como quieras. Escribe help(svg) para obtener m谩s informaci贸n sobre los argumentos de la funci贸n.

En tercer lugar, para guardar un gr谩fico como Postscript, puedes utilizar la funci贸n postscript.

# Dispositivo PS
postscript("mi_plot.ps")

# C贸digo
plot(rnorm(20))

# Cerramos el dispositivo
dev.off() 
Estos formatos de imagen son independientes de la resoluci贸n. Esto significa que puedes hacer zoom en los gr谩ficos resultantes sin perder calidad.

Exportar plot en R como PNG, JPEG, BMP o TIFF

Las funciones de los dispositivos gr谩ficos de formato PNG, JPEG, BMP y TIFF tienen distintos argumentos en com煤n, descritos en la siguiente tabla:

ArgumentoDescripci贸n
widthAncho (por defecto 480 p铆xeles)
heightAlto (por defecto 480 p铆xeles)
unitUnidad de medida (“px”, “in”, “cm” y “mm”)
pointsizeTama帽o de los textos
bgColor de fondo inicial
resResoluci贸n en ppi
type“cairo”, “Xlib”, “quartz”
(y “cairo-png” para PNG)
antialiasTipo de anti alias
Si configuras el dispositivo gr谩fico en alta resoluci贸n (res = 200), deber谩s modificar el alto y el ancho de la funci贸n correspondiente y los m谩rgenes de tu gr谩fico con la funci贸n par para evitar perder el formato y el dise帽o original.

Primero, la funci贸n png permite guardar una imagen en un archivo PNG (Portable Network Graphics). Este formato de archivo de imagen pesa menos que JPEG con una mejor calidad, admitiendo fondos transparentes.

# Dispositivo PNG
png("mi_plot.png")

# C贸digo
plot(rnorm(20))

# Cerramos el dispositivo
dev.off()

Segundo, para guardar gr谩ficos en JPEG, puedes usar la funci贸n jpeg, que tambi茅n permite establecer la calidad de la imagen como porcentaje con el argumento quality (por defecto 75%).

# Dispositivo JPEG
jpeg("mi_plot.jpeg", quality = 75)

# C贸digo
plot(rnorm(20))

# Cerramos el dispositivo
dev.off()

Tercero, puedes exportar un gr谩fico como BMP (Windows bitmap) con la funci贸n bmp.

# Dispositivo BMP
bmp("mi_plot")

# C贸digo
plot(rnorm(20))
# Cerramos el dispositivo
dev.off()

Por 煤ltimo, puedes guardar un plot como TIFF (Tagged Image File Format) con la funci贸n tiff. Esta funci贸n permite establecer el tipo de compresi贸n, que por defecto es "none", con el argumento compression. Otras opciones son "rle", "lzw", "jpeg", "zip", "lzw+p" y "zip+p". Este argumento ser谩 ignorado si type = "quartz". Escribe ?tiff para obtener informaci贸n adicional.

# Abrimos el dispositivo
tiff("mi_plot", compression = "zip")

# Hacemos un gr谩fico
plot(rnorm(20))

# Cerramos el dispositivo
dev.off()
Una alternativa para guardar gr谩ficos en R desde dispositivos gr谩ficos windows es la funci贸n savePlot
savePlot(filename = "Rplot",    # Nombre del archivo a ser guadado
         type = c("wmf", "emf", "png", # Tipo de archivo
                  "jpg", "jpeg", "bmp", 
                  "tif", "tiff", "ps",
                  "eps", "pdf"),
         device = dev.cur(), # N煤mero de dispositivo gr谩fico a ser exportado
         restoreConsole = TRUE)

Exportar varios gr谩ficos en R a la vez

Cabe mencionar que puedes guardar varios gr谩ficos a la vez en varias p谩ginas. Para los formatos de archivo PDF y SVG, el argumento onefile por defecto es TRUE, por lo que todos los gr谩ficos que crees antes de cerrar el dispositivo gr谩fico se guardar谩n en el mismo archivo:

pdf("varios_plots.pdf")

for(i in 1:3) {
    set.seed(i)
    plot(rnorm(20), pch = 16, col = i)
}

dev.off()

Una alternativa es crear varios gr谩ficos dentro de un bucle y nombrar cada uno con un nombre diferente, para que cada archivo se cree en un archivo separado.

nplots <- 2

for(i in 1:nplots) {
    png(paste("Rplot_", i, ".png"))
    set.seed(i)
    plot(rnorm(20), pch = 16, col = i)
    dev.off()
}

La funci贸n dev.print para exportar gr谩ficos tal y como se ven

Finalmente, una alternativa para guardar gr谩ficos en R sin la necesidad de usar los dispositivos gr谩ficos es la funci贸n dev.print. Esta funci贸n permite exportar una imagen en un archivo tal cual se ve, por lo que no se necesita ajustar todos los argumentos de la funci贸n correspondiente. Sin embargo, esta no es la mejor pr谩ctica para guardar gr谩ficos.

dev.print(pdf,           # Tipo de archivo para la exportaci贸n (svg, jpeg, ...)
          "mi_plot.pdf") # Nombre del archivo