Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante
La representación visual permite resumir información e identificar patrones que no se verían en los datos en bruto (en una hoja de cálculo).
En un buen gráfico, la audiencia encuentra obvias las ideas a transmitir, sin abrumar con muchos hallazgos
Usaremos la biblioteca ggplot2
, basada en la Gramática de Gráficos (Wilkinson, 2005)
algunos gráficos simples requieren más opciones que en R base
PERO ofrece facilidades para gráficos complejos y profesionales
rgl
(gráfics 3D), ggvis
(interactivos), plotly
Señales visuales: posición, longitud, área, etc.
Sistema de coordenadas: ¿cómo se organizan los puntos de datos?
Escala: ¿cómo se traduce la distancia en algo con significado?
Contexto: ¿en relación con qué?
Otros: facetas/pequeños múltiplos, capas, animaciones, etc.
Especificar bloques independientes y combinarlos para crear cualquier visualización gráfica, como las frases a partir de nombres, verbos, objetos, etc.
Bloques de construcción de un gráfico
Datos: data
Objeto geométrico (qué dibujamos: líneas, puntos, barras, etc.): geom_*()
Atributos estéticos (del objeto geométrico, como posición, color, forma, tamaño) que transmiten información de una variable: aes()
Escalas (rango of valores, colores, etc.): scale_*()
Sistema de Coordenadas
Facetas (pequeños múltiplos): facet_wrap()
, facet_grid()
ggplot(data = mpg)
= gráfico vacío (coordenadas cartesianas, por defecto)
Añadir capas con +
: ej., objeto geométrico del tipo puntos = geom_point()
El argumento mapping
, asociado a aes()
, define cómo las variables son asignadas a propiedades visuales
x
e y
especifican qué variables asignar a cada ejeCada geom_*()
agrega un tipo diferente de capa/marcas en el gráfico
puntos (geom_point
, para diagramas de dispersión, de puntos, etc.)
líneas (geom_line
, para series de tiempo, líneas de tendencia, etc.)
diagrama de caja (geom_boxplot
)
etc.
geom_
en la Ayudaaes()
Elementos estéticos son “algo que se puede ver” (información)
Cada elemento estético con aes()
es un asociación (“mapping”) entre una señal visual y una variable
fill
shape
size
Cada geom
acepta solo un subconjunto de todos los elementos estéticos.
geom
se puede ver qué asignaciones acepta en aes()
.esquisse
: una interfaz gráfica esquisse
implementa de forma visual (“arrastrar y soltar”) la lógica de composición de gráficos de ggplot2
esquisser()
para crear el gráfico, eligiendo datos Se pueden elegir muchos (no todos) aspectos del gráfico que veremos en este tema: tipo de gráfico, asignaciones estéticas, títulos, apariencia, etc.
Genera un posible código de R para crea el gráfico
Añadimos una señal visual de formas (o color, etc.), NO para “embellecer” sino para representar la información de una variable adicional
NO saturar el gráfico con estéticas fijas o información innecesaria
aes()
, visualiza una variableaes()
, un valor fijo de la señal visualregion
, carácter convertido a factor, se representa en escala categóricageoms
: “Smoothers” y Textogeom
s son formas simples: aquí, por defecto, una línea (función no lineal estimada) y un área (intervalo de confianza de la predicción)geom
acepta un conjunto particular de asignaciones: geom_text()
acepta etiquetasCada objeto geométrico puede tener características propias
Por ejemplo, usamos solo un subconjunto de los datos para el objeto geométrico de texto
Podemos cambiar qué estadísticas calcular o representar en geoms
que representan estadísticas
Un histograma (variables continuas) depende de qué intervalos definamos para calcular las frecuencias: podemos cambiar el número de grupos (bins
) o su ancho (binwidth
) o fijar los rangos (breaks
)
identity
aes()
establece la variable asignada, no cómo se representa
aes(shape = region)
: qué forma para cada regiónaes(color = Home.Value)
: qué color para cada valorLas funciones para modificar la escala siguen el esquema scale_<estética>_<tipo>
Argumentos habituales para la escala:
name
: título de la escala (en eje o leyenda)limits
: el mínimo y el máximo de la escalabreaks
: valores donde deberían aparecer las etiquetaslabels
: las etiquetas que aparecen en cada break
Funciones específicas de escala pueden tener argumentos adicionales
breaks
, etiquetas y colores de la escala de colorfacet_wrap()
para facetas en función de variable discreta (usando “fórmula”)facet_grid()
para facetas en dos dimensioneslabs()
: título, ejes, leyendasggplot(hp2001Q1, aes(y = Structure.Cost, x = Land.Value)) +
geom_point(aes(color = region)) + geom_smooth(method = "lm", se = FALSE) +
labs(
title = "Relación entre coste de la construcción y valor del terreno",
subtitle = "Datos del Primer Trimestre de 2001",
caption = "Fuente: Elaboración propia")
ggplot(hp2001Q1, aes(y = Structure.Cost/1000, x = Land.Value/1000)) +
scale_x_log10() +
geom_point(aes(color = region)) + geom_smooth(method = "lm", se = FALSE) +
labs(x = "Valor del terreno (miles de $), escala logarítmica",
y = "Valor de la construcción (miles de $)",
colour = "Región") +
scale_y_continuous(breaks=seq(80,200,40),labels=seq(80,200,40) )
x = log(Land.Value/1000)
?Ya vimos geom_text()
para asociar una variable a un estética de etiqueta
annotate()
añade objetos geométricos no asociados a variables: “text”, “rect”, “segment”, “pointrange”
scale_shape_manual()
RColorBrewer
o viridis
theme()
y guardados para definir temas personalizados (para aplicarlos después)ggthemes
ofrece temas creados por profesionales en diseño y comunicaciónggsave()
Ayuda en RStudio, Help > Cheatsheets > Data Visualization with ggplot2
Fuentes de información con chuletas de R y RStudio aquí