Aprende a graficar grandes volúmenes de datos con ggplot2
R es un lenguaje de programación en constante crecimiento, cada vez más popular. Su popularidad ha crecido exponencialmente gracias a su capacidad para manejar grandes volúmenes de datos, realizar análisis estadísticos complejos y generar visualizaciones impresionantes. Una de las librerías más destacadas para la visualización de datos en R es ggplot2
. Esta librería especializada permite crear una amplia variedad de gráficos, incluyendo gráficos de líneas, de dispersión, de cajas, de barras, de densidad e histogramas.
En este artículo, exploraremos los conceptos necesarios para utilizar ggplot2
de manera efectiva. Comenzaremos con la instalación del paquete y la activación de la librería, y luego profundizaremos en cómo crear y personalizar diferentes tipos de gráficos.
Lo primero que debemos hacer es instalar el paquete ggplot2
y activarlo en nuestra sesión de R.
install.packages("ggplot2")
library(ggplot2)
Para facilitar el entendimiento de cada gráfica, utilizaremos la base de datos llamada mtcars
, que esta preinstalada en R. Esta base de datos contiene información sobre diferentes modelos de automóviles, incluyendo su consumo de gasolina (millas por galón, mpg) y su peso (wt).
Gráficos de dispersión:
Los gráficos de dispersión son una herramienta poderosa para visualizar la relación entre dos variables numéricas. En estos gráficos, cada punto representa una observación en el conjunto de datos, con la posición del punto determinado por los valores de dos variables. Los gráficos de dispersión son útiles para identificar patrones, tendencias, y posibles relaciones entre las variables.
Para crear un gráfico de dispersión básico, utilizamos la función ggplot()
, especificando el conjunto de datos (mtcars
) y mapeando las variables a los ejes x
e y
dentro de aes()
. Luego, agregamos geom_point()
para crear los puntos del gráfico.
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point()
Personalización del gráfico de dispersión:
Añadir títulos y etiquetas:
Es importante que los gráficos sean informativos. Podemos añadir un título y etiquetas a los ejes utilizando la función labs()
:
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
labs(title = "Relación entre Peso y Consumo de Gasolina",
x = "Peso (1000 lbs)",
y = "Consumo de Gasolina (mpg)")
Cambiar colores y formas:
Podemos diferenciar los puntos en el gráfico utilizando colores y formas. Por ejemplo, podemos colorear los puntos según el número de cilindros (cyl
) y cambiar la forma de los puntos según la transmisión (am
):
ggplot(mtcars, aes(x = wt, y = mpg, color = factor(cyl),
shape = factor(am))) + geom_point() +
labs(title = "Relación entre Peso y Consumo de Gasolina",
x = "Peso (1000 lbs)",
y = "Consumo de Gasolina (mpg)",
color = "Número de cilindros",
shape = "Transmisión (0 = automática, 1 = manual)")
Ajustar el tamaño de los puntos:
También podemos ajustar el tamaño de los puntos en el gráfico utilizando la función geom_point()
:
ggplot(mtcars, aes(x = wt, y = mpg, size = hp)) +
geom_point() +
labs(title = "Relación entre Peso y Consumo de Gasolina",
x = "Peso (1000 lbs)",
y = "Consumo de Gasolina (mpg)",
size = "Caballos de fuerza (hp)")
Añadir líneas de tendencia:
Para visualizar mejor la relación entre las variables, podemos añadir una línea de tendencia utilizando geom_smooth()
. La opción method = "lm"
añade una línea de regresión lineal:
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
geom_smooth(method = "lm", se = FALSE) +
labs(title = "Relación entre Peso y Consumo de Gasolina",
x = "Peso (1000 lbs)",
y = "Consumo de Gasolina (mpg)")
Subgráficos:
El facetado permite dividir el gráfico en múltiples subgráficos según una variable categórica. Por ejemplo, podemos dividir el gráfico por el número de cilindros (cyl
):
ggplot(mtcars, aes(x = wt, y = mpg)) +
geom_point() +
facet_wrap(~ cyl, scales = "free_y")) +
labs(title = "Relación entre Peso y Consumo de Gasolina",
x = "Peso (1000 lbs)",
y = "Consumo de Gasolina (mpg)")
Gráficos de líneas:
Para una explicación más clara y con datos de series temporales, usaremos la base de datos economics
que viene incluida en el paquete ggplot2. Esta base de datos contiene datos económicos mensuales de EE.UU., incluyendo variables como el desempleo (unemploy
), la tasa de ahorro personal (psavert
), y el índice de precios al consumidor (pce
).
Primero, cargamos la base de datos economics
y creamos un gráfico de líneas básico que muestra la evolución de la tasa de ahorro personal (psavert
) a lo largo del tiempo.
ggplot(economics, aes(x = date, y = psavert)) +
geom_line() +
labs(title = "Tasa de Ahorro Personal a lo Largo del Tiempo",
x = "Fecha",
y = "Tasa de Ahorro Personal (%)")
Personalización del gráfico de líneas
Añadir títulos, etiquetas, cambiar colores, grosor y estilos de líneas:
Podemos añadir un título y etiquetas a los ejes para hacer el gráfico más informativo. También, para cambiar el color y el estilo de la línea, podemos usar los argumentos color
y linetype
en geom_line()
. Para el grosor de la línea, podemos usar size
.
ggplot(economics, aes(x = date, y = psavert)) +
geom_line(color = "red", linetype = "dashed", size = 1.2) +
labs(title = "Tasa de Ahorro Personal a lo Largo del Tiempo",
x = "Fecha",
y = "Tasa de Ahorro Personal (%)")
Añadir múltiples líneas:
Para añadir múltiples líneas al gráfico, necesitamos mapear una variable adicional que distinga las diferentes líneas. Utilizaremos la variable unemploy
para añadir la tasa de desempleo al gráfico.
ggplot(economics) +
geom_line(aes(x = date, y = psavert, color = "Tasa de Ahorro Personal")) +
geom_line(aes(x = date, y = unemploy / 1000, color = "Tasa de Desempleo (x1000)")) +
labs(title = "Tasa de Ahorro Personal y Tasa de Desempleo a lo Largo del Tiempo",
x = "Fecha",
y = "Porcentaje (%)",
color = "Indicador")
Añadir puntos a las líneas:
Para resaltar puntos específicos en la línea, podemos usar geom_point()
.
ggplot(economics, aes(x = date, y = psavert)) +
geom_line() +
geom_point(color = "red", size = 1) +
labs(title = "Tasa de Ahorro Personal a lo Largo del Tiempo",
x = "Fecha",
y = "Tasa de Ahorro Personal (%)")
Añadir líneas de referencia:
Podemos añadir líneas de referencia horizontales o verticales utilizando geom_hline()
y geom_vline()
.
ggplot(economics, aes(x = date, y = psavert)) +
geom_line() +
geom_hline(yintercept = mean(economics$psavert), linetype = "dashed", color = "red") +
labs(title = "Tasa de Ahorro Personal a lo Largo del Tiempo",
x = "Fecha",
y = "Tasa de Ahorro Personal (%)")
Gráficos de densidad:
Para explicar los gráficos de densidad, volveremos a usar la base de datos mtcars
preinstalada en R para explicar los gráficos de densidad. Esta base de datos contiene información sobre diferentes modelos de automóviles (32 modelos de autos), incluyendo su consumo de gasolina (millas por galón, mpg
), peso (wt
), y otras características.
Creación de gráficos de densidad básicos
Vamos a crear un gráfico de densidad que muestra la distribución del consumo de gasolina (mpg
).
ggplot(mtcars, aes(x = mpg)) +
geom_density() +
labs(title = "Distribución del Consumo de Gasolina (mpg)",
x = "Millas por Galón (mpg)",
y = "Densidad")
Personalización del gráfico de densidad
Cambiar el color de la línea, el relleno y su transparencia:
Podemos cambiar el color de la línea de densidad y el relleno utilizando los argumentos color
y fill
. La transparencia del relleno se puede ajustar utilizando el argumento alpha
.
ggplot(mtcars, aes(x = mpg)) +
geom_density(color = "blue", fill = "lightblue", alpha = 0.5) +
labs(title = "Distribución del Consumo de Gasolina (mpg)",
x = "Millas por Galón (mpg)",
y = "Densidad")
Añadir múltiples distribuciones:
Para añadir múltiples distribuciones en el mismo gráfico, podemos mapear una variable categórica al argumento fill
. Usaremos la variable cyl
para mostrar la distribución del consumo de gasolina según el número de cilindros.
ggplot(mtcars, aes(x = mpg, fill = factor(cyl))) +
geom_density(alpha = 0.5) +
labs(title = "Distribución del Consumo de Gasolina (mpg) por Número de Cilindros",
x = "Millas por Galón (mpg)",
y = "Densidad",
fill = "Número de Cilindros")
Añadir líneas de referencia:
Podemos añadir líneas de referencia verticales utilizando geom_vline()
. Por ejemplo, podemos añadir una línea de referencia en la media del consumo de gasolina.
mean_mpg <- mean(mtcars$mpg)
ggplot(mtcars, aes(x = mpg)) +
geom_density() +
geom_vline(xintercept = mean_mpg, linetype = "dashed", color = "red") +
labs(title = "Distribución del Consumo de Gasolina (mpg)",
x = "Millas por Galón (mpg)",
y = "Densidad")
Gráficos de barras:
Para explicar los gráficos de barras, utilizaremos la base de datos mtcars
preinstalada en R. Esta base de datos contiene información sobre diferentes modelos de automóviles, incluyendo su número de cilindros (cyl
), el tipo de transmisión (am
), y otras características. Los gráficos de barras son útiles para mostrar la frecuencia de categorías en los datos.
Creación de gráficos de barras básicos
Vamos a crear un gráfico de barras que muestra la frecuencia del número de cilindros (cyl
).
ggplot(mtcars, aes(x = factor(cyl))) +
geom_bar() +
labs(title = "Frecuencia del Número de Cilindros",
x = "Número de Cilindros",
y = "Frecuencia")
Personalización del gráfico de barras
Cambiar los colores, bordes y grosor de las barras:
Podemos cambiar el color de las barras utilizando el argumento fill
dentro de geom_bar()
. Podemos añadir bordes a las barras utilizando el argumento color
dentro de geom_bar()
. El grosor de los bordes puede ajustarse utilizando el argumento size
dentro de geom_bar()
.
ggplot(mtcars, aes(x = factor(cyl))) +
geom_bar(fill = "lightblue", color = "black", size = 1) +
labs(title = "Frecuencia del Número de Cilindros",
x = "Número de Cilindros",
y = "Frecuencia")
Añadir etiquetas a las barras:
Podemos añadir etiquetas a las barras utilizando geom_text()
para mostrar la frecuencia encima de cada barra.
ggplot(mtcars, aes(x = factor(cyl))) +
geom_bar(fill = "lightblue", color = "black", size = 1) +
geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
labs(title = "Frecuencia del Número de Cilindros",
x = "Número de Cilindros",
y = "Frecuencia")
Cambiar el tema del gráfico:
Podemos cambiar el tema del gráfico utilizando funciones como theme_minimal()
, theme_classic()
, etc.
ggplot(mtcars, aes(x = factor(cyl))) +
geom_bar(fill = "lightblue", color = "black", size = 1) +
geom_text(stat = "count", aes(label = ..count..), vjust = -0.5) +
labs(title = "Frecuencia del Número de Cilindros",
x = "Número de Cilindros",
y = "Frecuencia") +
theme_minimal()
Gráficos de barras agrupados:
Para mostrar la frecuencia de dos variables categóricas, podemos crear un gráfico de barras agrupado. Por ejemplo, mostramos la frecuencia del número de cilindros (cyl
) y el tipo de transmisión (am
).
ggplot(mtcars, aes(x = factor(cyl), fill = factor(am))) +
geom_bar(position = "dodge") +
labs(title = "Frecuencia del Número de Cilindros por Tipo de Transmisión",
x = "Número de Cilindros",
y = "Frecuencia",
fill = "Tipo de Transmisión")
Gráficos de barras apilados:
Podemos crear un gráfico de barras apilado para mostrar la misma información de manera diferente.
ggplot(mtcars, aes(x = factor(cyl), fill = factor(am))) +
geom_bar(position = "stack") +
labs(title = "Frecuencia del Número de Cilindros por Tipo de Transmisión",
x = "Número de Cilindros",
y = "Frecuencia",
fill = "Tipo de Transmisión")
Histograma:
Para explicar los histogramas, también utilizaremos la base de datos mtcars
, preinstalada en R. Los histogramas son útiles para mostrar la distribución de una variable continua dividiéndola en intervalos (bins) y contando la frecuencia de los datos en cada intervalo.
Creación de histogramas básicos
Vamos a crear un histograma que muestra la distribución del consumo de gasolina (mpg
).
ggplot(mtcars, aes(x = mpg)) +
geom_histogram(binwidth = 2) +
labs(title = "Distribución del Consumo de Gasolina (mpg)",
x = "Millas por Galón (mpg)",
y = "Frecuencia")
Personalización del histograma
Ajustar el número de intervalos (bins):
Podemos ajustar el número de intervalos utilizando el argumento bins
en geom_histogram()
.
ggplot(mtcars, aes(x = mpg)) +
geom_histogram(bins = 10, fill = "lightblue", color = "black", alpha = 0.5) +
labs(title = "Distribución del Consumo de Gasolina (mpg)",
x = "Millas por Galón (mpg)",
y = "Frecuencia")
Añadir una línea de densidad:
Podemos añadir una línea de densidad para visualizar mejor la distribución utilizando geom_density()
.
ggplot(mtcars, aes(x = mpg)) +
geom_histogram(aes(y = ..density..), bins = 10, fill = "lightblue", color = "black", alpha = 0.5) +
geom_density(color = "red", size = 1) +
labs(title = "Distribución del Consumo de Gasolina (mpg)",
x = "Millas por Galón (mpg)",
y = "Densidad")
Subgráficos:
El facetado permite dividir el gráfico en múltiples subgráficos según una variable categórica. Por ejemplo, podemos dividir el histograma por el número de cilindros (cyl
).
ggplot(mtcars, aes(x = mpg)) +
geom_histogram(bins = 10, fill = "lightblue", color = "black", alpha = 0.5) +
facet_wrap(~ cyl) +
labs(title = "Distribución del Consumo de Gasolina (mpg) por Número de Cilindros",
x = "Millas por Galón (mpg)",
y = "Frecuencia")
Con esto, estamos casi listos para abordar problemas de visualización de datos. No obstante, una parte también muy importante de la visualización de datos es saber interpretar los datos. Este punto será abordado en otro artículo.
Subscribe to my newsletter
Read articles from Gabriel Saco directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by