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 |
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=y |
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")
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")
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 >