Considera el conjunto de datos blockbusters
del paquete ggstream
para esta guía.
# install.packages("ggstream")
library(ggstream)
blockbusters
geom_stream
La función geom_stream
del paquete ggstream
permite crear streamplots en ggplot2. Pasa tu dataframe y usa la función para crear un stream graph básico.
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream()
Etiquetando las áreas
Ten en cuenta que la librería contiene una función adicional llamada geom_stream_label
que puede ser usada para agregar etiquetas a cada área del streamgraph.
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream() +
geom_stream_label(aes(label = genre))
Por defecto, la función geom_stream
usa el tipo "mirror"
, que apila las áreas de manera simétrica respecto al eje X. Otras alternativas son "ridge"
, que apila desde el eje X y "proportional"
, que hace que las áreas sumen 1.
Ridge
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream(type = "ridge")
Proportional
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream(type = "proportional")
Cambiar los colores de fondo
Es posible cambiar los colores de fondo del streamgraph con scale_fill_manual
o una función equivalente.
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
cols <- c("#FFB400", "#FFC740", "#C20008", "#FF020D", "#13AFEF")
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream() +
scale_fill_manual(values = cols)
Cambiar el color de los bordes
Por defecto las áreas no tienen bordes pero puedes agregarlos pasando un color al argumento color
de la función geom_stream
y modificar su grosor con lwd
.
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
cols <- c("#FFB400", "#FFC740", "#C20008", "#FF020D", "#13AFEF")
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream(color = 1, lwd = 0.25) +
scale_fill_manual(values = cols)
Cambiar el tema
Ten en cuenta que también puedes cambiar el tema para modificar la apariencia del gráfico.
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
cols <- c("#FFB400", "#FFC740", "#C20008", "#FF020D", "#13AFEF")
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream(color = 1, lwd = 0.25) +
scale_fill_manual(values = cols) +
theme_minimal()
Para crear un streamplot es necesario realizar estimaciones no paramétricas que necesitan de una ventana (por defecto de 0.75) y una rejilla de valores en el eje X (por defecto es 1000). Puedes cambiar estos valores por defecto con bw
y n_grid
.
Ten en cuenta que también puedes usar un rango adicional en la estimación con extra_span
, que por defecto es 0.01 (1%) y especificar con true_range
si el rango verdadero de los datos se debería usar en la visualización o si por el contratrio se debería usar el rango de estimación.
Ventana (bw
)
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
cols <- c("#FFB400", "#FFC740", "#C20008", "#FF020D", "#13AFEF")
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream(color = 1, lwd = 0.25,
bw = 1) +
scale_fill_manual(values = cols) +
theme_minimal()
Grid (n_grid
)
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
cols <- c("#FFB400", "#FFC740", "#C20008", "#FF020D", "#13AFEF")
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream(color = 1, lwd = 0.25,
n_grid = 100) +
scale_fill_manual(values = cols) +
theme_minimal()
Extra span y true range (extra_span
, true_range
)
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
cols <- c("#FFB400", "#FFC740", "#C20008", "#FF020D", "#13AFEF")
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream(extra_span = 0.2) +
geom_stream(extra_span = 0.2, true_range = "none",
alpha = 0.3) +
scale_fill_manual(values = cols) +
theme_minimal()
Como en otros gráficos de ggplot2 puedes cambiar el título, las etiquetas y eliminar o cambiar la posición de la leyenda, tal y como se muestra en los siguientes ejemplos.
Cambiar el título
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
cols <- c("#FFB400", "#FFC740", "#C20008", "#FF020D", "#13AFEF")
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream(extra_span = 0.2) +
geom_stream(extra_span = 0.2, true_range = "none",
alpha = 0.3) +
scale_fill_manual(values = cols) +
theme_minimal() +
guides(fill = guide_legend(title = "Título"))
Cambiar las etiquetas
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
cols <- c("#FFB400", "#FFC740", "#C20008", "#FF020D", "#13AFEF")
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream(color = 1, lwd = 0.25) +
scale_fill_manual(values = cols, labels = LETTERS[1:5]) +
theme_minimal()
Eliminar la leyenda
# install.packages("ggstream")
library(ggstream)
# install.packages("ggplot2")
library(ggplot2)
cols <- c("#FFB400", "#FFC740", "#C20008", "#FF020D", "#13AFEF")
ggplot(blockbusters, aes(x = year, y = box_office, fill = genre)) +
geom_stream(color = 1, lwd = 0.25) +
scale_fill_manual(values = cols) +
theme_minimal() +
theme(legend.position = "none")
También te puede interesar