Saltar al contenido principal
Documentos
Gestión de datos en RGráficos en RR DocumentaciónInterfaz REstadística en RIntroducción de datos en R

Gráficos con ggplot2

El paquete ggplot2</a >, creado por Hadley Wickham, ofrece un potente lenguaje gráfico para crear gráficos elegantes y complejos. Su popularidad en la comunidad R se ha disparado en los últimos años. Basado originalmente en The Grammar of Graphics</a > de Leland Wilkinson, ggplot2 te permite crear gráficos que representan datos numéricos y categóricos univariantes y multivariantes de forma sencilla. La agrupación puede representarse por color, símbolo, tamaño y transparencia. La creación de parcelas enrejadas (es decir, acondicionadas) es relativamente sencilla.

Dominar el lenguaje ggplot2 puede ser un reto (consulta la sección Profundizar más abajo para ver recursos útiles). Existe una función de ayuda llamada qplot() (para gráfico rápido) que puede ocultar gran parte de esta complejidad al crear gráficos estándar.

qplot()

La función qplot() puede utilizarse para crear los tipos de gráficos más comunes. Aunque no expone toda la potencia de ggplot, puede crear una gama muy amplia de gráficos útiles. El formato es:

qplot(x, y, data=, color=, shape=, size=, alpha=, geom=, method=, 
  formula=, facets=, xlim=, ylim= xlab=, ylab=, main=, sub=)

donde están las opciones:

   
option description
alfa Transparencia alfa de los elementos superpuestos, expresada como una fracción entre 0 (transparencia total) y 1 (opacidad total).
color, forma, tamaño, relleno Asocia los niveles de la variable con el color, la forma o el tamaño del símbolo. En los gráficos de líneas, el color asocia los niveles de una variable con el color de la línea. Para los gráficos de densidad y de caja, rellena asocia los colores de relleno con una variable. Las leyendas se dibujan automáticamente.
data Especifica un marco de datos
facetas Crea un gráfico enrejado especificando variables condicionantes. Su valor se expresa como rowvar ~ colvar. Para crear gráficos enrejados basados en una única variable condicionante, utiliza rowvar</em>. o .colvar)
geom Especifica los objetos geométricos que definen el tipo de gráfico. La opción geom se expresa como un vector de caracteres con una o más entradas. Los valores de geom incluyen "punto", "suave", "boxplot", "línea", "histograma", "densidad", "barra" y "fluctuación".
principal, secundario Vectores de caracteres que especifican el título y el subtítulo
método, fórmula Si geom="suave", se añaden por defecto una línea de ajuste de loess y límites de confianza. Cuando el número de observaciones es superior a 1.000, se emplea un algoritmo de suavizado más eficaz. Los métodos incluyen "lm" para la regresión, "gam" para los modelos aditivos generalizados y "rlm" para la regresión robusta. El parámetro fórmula da la forma del ajuste. Por ejemplo, para añadir líneas de regresión lineal simple, especificarías geom="suave", método="lm", fórmula=yx. Cambiar la fórmula a y</del >poly(x,2) produciría un ajuste cuadrático. Observa que la fórmula utiliza las letras x e y, no los nombres de las variables. Para method="gam", asegúrate de cargar el paquete mgcv. Para method="rml", carga el paquete MASS.
x, y Especifica las variables situadas en los ejes horizontal y vertical. Para gráficos univariantes (por ejemplo, histogramas), omite y
xlab, ylab Vectores de caracteres que especifican las etiquetas de los ejes horizontal y vertical
xlim,ylim Vectores numéricos de dos elementos que dan los valores mínimo y máximo de los ejes horizontal y vertical, respectivamente

Notas:

  • En la actualidad, ggplot2 no puede utilizarse para crear gráficos en 3D ni gráficos en mosaico.
  • Utiliza I(valor) para indicar un valor concreto. Por ejemplo, size=z hace que el tamaño de los puntos o líneas trazados sea proporcional a los valores de una variable z. Por el contrario, size=I(3) establece cada punto o línea al triple del tamaño por defecto.

Aquí tienes algunos ejemplos que utilizan datos de automoción (kilometraje del coche, peso, número de marchas, número de cilindros, etc.) contenidos en el marco de datos mtcars.

# ggplot2 examples
library(ggplot2)

# create factors with value labels
mtcars$gear <- factor(mtcars$gear,levels=c(3,4,5),
   labels=c("3gears","4gears","5gears"))
mtcars$am <- factor(mtcars$am,levels=c(0,1),
   labels=c("Automatic","Manual"))
mtcars$cyl <- factor(mtcars$cyl,levels=c(4,6,8),
   labels=c("4cyl","6cyl","8cyl"))
# Kernel density plots for mpg
# grouped by number of gears (indicated by color)
qplot(mpg, data=mtcars, geom="density", fill=gear, alpha=I(.5),
   main="Distribution of Gas Milage", xlab="Miles Per Gallon",
   ylab="Density")
# Scatterplot of mpg vs. hp for each combination of gears and cylinders
# in each facet, transmittion type is represented by shape and color
qplot(hp, mpg, data=mtcars, shape=am, color=am,
   facets=gear~cyl, size=I(3),
   xlab="Horsepower", ylab="Miles per Gallon")

# Separate regressions of mpg on weight for each number of cylinders
qplot(wt, mpg, data=mtcars, geom=c("point", "smooth"),
   method="lm", formula=y~x, color=cyl,
   main="Regression of MPG on Weight",
   xlab="Weight", ylab="Miles per Gallon")
# Boxplots of mpg by number of gears
# observations (points) are overlayed and jittered
qplot(gear, mpg, data=mtcars, geom=c("boxplot", "jitter"),
   fill=gear, main="Mileage by Gear Number",
   xlab="", ylab="Miles per Gallon")

densidad1 densidad 2 densidad 3 boxplot

Personalizar los gráficos de ggplot2

A diferencia de los gráficos R base, los gráficos ggplot2 no se ven afectados por muchas de las opciones establecidas en la función par( ). Pueden modificarse mediante la función theme(), y añadiendo parámetros gráficos dentro de la función qplot(). Para un mayor control, utiliza ggplot() y otras funciones proporcionadas por el paquete. Ten en cuenta que las funciones ggplot2 se pueden encadenar con signos "+" para generar el gráfico final.

library(ggplot2)

p <- qplot(hp, mpg, data=mtcars, shape=am, color=am,
   facets=gear~cyl, main="Scatterplots of MPG vs. Horsepower",
   xlab="Horsepower", ylab="Miles per Gallon")

# White background and black grid lines
p + theme_bw()

# Large brown bold italics labels
# and legend placed at top of plot
p + theme(axis.title=element_text(face="bold.italic",
   size="12", color="brown"), legend.position="top")

gráfico enrejado personalizado

Ir más lejos

Aquí sólo hemos arañado la superficie. Para saber más, consulta esta práctica hoja de trucos de ggplot</a >, y el excelente libro de cocina de Winston Chang para el sitioR. Aunque está ligeramente desfasado, ggplot2: Gráficos elegantes para el análisis de datos</a > sigue siendo el libro definitivo sobre este tema.

Practicar

Prueba gratis el primer capítulo de este tutorial interactivo sobre ggplot2.</a >

Aprende lo esencial de R

Domina los fundamentos del análisis de datos en R, incluyendo vectores, listas y marcos de datos, y practica R con conjuntos de datos reales.
Empieza a aprender R gratis