Streamgraph en R

Librería

sinkr

Autor principal

Marc Taylor

Datos de muestra

La función plotStream del paquete sinkr necesita un vector x con los valores del eje X y una matriz y que contenga las series de datos como columnas correspondientes a x.

En este bloque de código estamos generando un vector con 500 valores y una matriz con 30 columnas (series) y 500 filas, una para cada observación.

Las series de datos se han simulado haciendo uso de splines.

set.seed(1)
m <- 500
n <- 30
x <- seq(m)
y <- matrix(0, nrow = m, ncol = n)
colnames(y) <- seq(n)
for(i in seq(ncol(y))) {
  mu <- runif(1, min = 0.25 * m, max = 0.75 * m)
  SD <- runif(1, min = 5, max = 20)
  TMP <- rnorm(1000, mean = mu, sd = SD)
  HIST <- hist(TMP, breaks = c(0, x), plot = FALSE)
  fit <- smooth.spline(HIST$counts ~ HIST$mids)
  y[, i] <- fit$y
}
y <- replace(y, y < 0.01, 0)

Stream graph

Gráfico básico

Para crear un stream plot puedes pasar el vector numérico y la matriz a la función plotStream. Ten en cuenta que se aplicará un ruido aleatorio al gráfico, por lo que para crear siempre la misma ilustración necesitas establecer una semilla.

# install.packages("remotes")
# remotes::install_github("marchtaylor/sinkr")
library(sinkr)

# Streamgraph
set.seed(1)
plotStream(x, y,
           xlim = c(100, 400),
           ylim = c(-125, 125))

Streamgraph en R

Ruido

La cantidad de ruido aplicado se puede personalizar con los argumentos frac.rand y spar. El primero controla la fracción del total de los datos para definir el rango del ruido mientras que el segundo controla el suavizado.

# install.packages("remotes")
# remotes::install_github("marchtaylor/sinkr")
library(sinkr)

# Streamgraph
set.seed(1)
plotStream(x, y,
           xlim = c(100, 400),
           ylim = c(-125, 125),
           frac.rand = 0.2,
           spar = 0.5)

Stream graph wiggle en R

Paleta de colores

La paleta de colores por defecto es "rainbow". Sin embargo, puedes personalizarla con el argumento col. En el ejemplo siguiente estamos generando una paleta de 30 colores con hcl.colors (el número de columnas de y).

# install.packages("remotes")
# remotes::install_github("marchtaylor/sinkr")
library(sinkr)

# Colores
cols <- hcl.colors(30, "BluYl")

# Streamgraph
set.seed(1)
plotStream(x, y,
           xlim = c(100, 400),
           ylim = c(-125, 125),
           col = cols)

Stream plot colores en R

Personalización del borde

El color, ancho y tipo de línea de los polígonos usados para crear el gráfico se pueden personalizar con los argumentos border, lwd y lty, respectivamente.

# install.packages("remotes")
# remotes::install_github("marchtaylor/sinkr")
library(sinkr)

# Streamgraph
set.seed(1)
plotStream(x, y, xlim = c(100, 400),
           ylim = c(-125, 125),
           col = hcl.colors(30, "Blues 3"),
           border = "white", lwd = 1, lty = 1)

Stream plot en R

Métodos de orden

La función proporciona tres métodos diferentes para ordenar las series con el argumento order.method. El valor por defecto es "as.is", pero también puedes establecer "max" o "first". Escribe ?plotStream para detalles adicionales.

Método de orden

Método “max”

# install.packages("remotes")
# remotes::install_github("marchtaylor/sinkr")
library(sinkr)

# Streamgraph
set.seed(1)
plotStream(x, y, xlim = c(100, 400),
           ylim = c(-125, 125),
           col = hcl.colors(30, "Blues 3"),
           order.method = "max")

Stream chart en R

Método “first”

# install.packages("remotes")
# remotes::install_github("marchtaylor/sinkr")
library(sinkr)

# Streamgraph
set.seed(1)
plotStream(x, y, xlim = c(100, 400),
           ylim = c(-125, 125),
           col = hcl.colors(30, "Blues 3"),
           order.method = "first")
ggplot2

Elegant Graphics for Data Analysis

Comprar en Amazon
Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon
Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon
Better Data Visualizations

A Guide for Scholars, Researchers, and Wonks

Comprar en Amazon

También te puede interesar