What are alluvial diagrams? See for example:
Alluvial diagram of datasets::Titanic data made with
alluvial(). Notice how each category block becomes a
stacked barchart showing relative frequency of survivors.
tit <- tibble::as_data_frame(Titanic)
tit %>% head() %>% knitr::kable()| Class | Sex | Age | Survived | n |
|---|---|---|---|---|
| 1st | Male | Child | No | 0 |
| 2nd | Male | Child | No | 0 |
| 3rd | Male | Child | No | 35 |
| Crew | Male | Child | No | 0 |
| 1st | Female | Child | No | 0 |
| 2nd | Female | Child | No | 0 |
alluvial(
select(tit, Survived, Sex, Age, Class),
freq=tit$n,
col = ifelse(tit$Survived == "Yes", "orange", "grey"),
border = ifelse(tit$Survived == "Yes", "orange", "grey"),
layer = tit$Survived != "Yes",
alpha = 0.8,
blocks=FALSE
)
Alluvial diagram for multiple time series / cross-sectional data
based on alluvial::Refugees data made with
alluvial_ts().
Refugees %>% head() %>% knitr::kable()| country | year | refugees |
|---|---|---|
| Afghanistan | 2003 | 2136043 |
| Burundi | 2003 | 531637 |
| Congo DRC | 2003 | 453465 |
| Iraq | 2003 | 368580 |
| Myanmar | 2003 | 151384 |
| Palestine | 2003 | 350568 |
set.seed(39) # for nice colours
cols <- hsv(h = sample(1:10/10), s = sample(3:12)/15, v = sample(3:12)/15)
alluvial_ts(Refugees, wave = .3, ygap = 5, col = cols, plotdir = 'centred', alpha=.9,
grid = TRUE, grid.lwd = 5, xmargin = 0.2, lab.cex = .7, xlab = '',
ylab = '', border = NA, axis.cex = .8, leg.cex = .7,
leg.col='white',
title = "UNHCR-recognised refugees\nTop 10 countries (2003-13)\n")
Using “devtools” package:
devtools::install_github("mbojan/alluvial")