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)
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))

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)

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)

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)

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 “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")

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")
También te puede interesar