El conjunto de datos vaccinations
del paquete ggalluvial
contiene una encuesta “que preguntó a los encuestados su probabilidad de vacunarse contra la influenza”. La variable "response"
es la probabilidad discretizada de vacunarse, "freq"
el número de encuestados y "survey"
el nombre de cada encuesta.
# install.packages("ggalluvial")
library(ggalluvial)
vaccinations
El paquete ggalluvial
proporciona las funciones geom_alluvium
y geom_stratum
para crear gráficos aluviales en ggplot2. Tendrás que pasar tus datos en formato long, especificar las variables de los ejes dentro de aes
y usar las funciones anteriores.
Ten en cuenta que también puedes agregar los nombres para cada estrato (en estos ejemplos no se verán porque hemos usado theme_void
), los nombres de las variables de los ejes y cambiar el tema de ggplot2, entre otras personalizaciones.
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response)) +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
theme_void()
Si tu conjunto de datos contiene más variables categóricas puedes pasarlas a aes
(axis1
, axis2
, axis3
…) tal y como se muestra en el siguiente ejemplo.
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, # Primera variable del eje X
axis2 = response, # Segunda variable del eje X
axis3 = survey, # Tercera variable del eje X
y = freq)) +
geom_alluvium(aes(fill = response)) +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta",
"Encuesta"),
expand = c(0.15, 0.05)) +
theme_void()
EL tipo de curva se puede personalizar con el argumento curve_type
de la función geom_alluvium
. El valor por defecto es "xspline"
, que produce una aproximación de splines con cuatro puntos por curva. Las alternativas se muestran a continuación:
Linear
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response),
curve_type = "linear") +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
theme_void()
Cubic
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response),
curve_type = "cubic") +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
theme_void()
Quintic
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response),
curve_type = "quintic") +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
theme_void()
Sine
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response),
curve_type = "sine") +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
theme_void()
Arctangent
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response),
curve_type = "arctangent") +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
theme_void()
Sigmoid
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response),
curve_type = "sigmoid") +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
theme_void()
Ten en cuenta que existe un argumento adicional llamado curve_range
para tipos de curvas alternativas basadas en funciones asintóticas. Escribe geom_alluvium
para obtener detalles adicionales.
Es posible personalizar los colores de los flujos. Puedes usar un único color para ellos, usar una paleta de colores predefinida o pasar tu propio vector de colores. Ten en cuenta que también es posible modificar los colores de las cajas de los estratos.
Color de fondo
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = "red")) +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
scale_fill_viridis_d()
theme_void()
Paleta de colores
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response)) +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
scale_fill_viridis_d() +
theme_void()
Colores personalizados
# install.packages("ggalluvial")
library(ggalluvial)
# Colors
colors <- hcl.colors(4, "Red-Blue")
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response)) +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
scale_fill_manual(values = colors) +
theme_void()
Color de los estratos
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response)) +
geom_stratum(aes(fill = response)) +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
theme_void()
Como el paquete ggalluvial
se basa en ggplot2 es posible personalizar la leyenda de los gráficos, como cambiar el título, las etiquetas, su posición o eliminar la leyenda por completo tal y como se muestra en los ejemplos siguientes.
Título de la leyenda
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response)) +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
theme_void() +
guides(fill = guide_legend(title = "Title"))
Etiquetas de la leyenda
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response)) +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
theme_void() +
scale_fill_hue(labels = c("A", "B", "C", "D"))
Eliminar la leyenda
# install.packages("ggalluvial")
library(ggalluvial)
ggplot(data = vaccinations,
aes(axis1 = survey, axis2 = response, y = freq)) +
geom_alluvium(aes(fill = response)) +
geom_stratum() +
geom_text(stat = "stratum",
aes(label = after_stat(stratum))) +
scale_x_discrete(limits = c("Encuesta", "Respuesta"),
expand = c(0.15, 0.05)) +
theme_void() +
theme(legend.position = "none")
También te puede interesar