Как воспроизвести этот движущийся график распределения с помощью R?

Г. Эллиот Морис проявил политическую поляризацию во времени, используя подвижный сюжет. Сюжет о поляризации в политике США 1963-2013

Из этого вопроса: Как использовать "фасет" для создания графика с множественной плотностью в GGPLOT Мне удалось использовать фасеты для воспроизведения аналогичного графика с использованием фиктивных данных:

library(ggplot2)
set.seed(101)
dtf <- data.frame(variable = c(rnorm(1000),
                               rnorm(1000) + rep(1:10/2,each =100)),
                  group = rep(c("a","b"), each = 1000),
                  year = rep(2001:2010, each=100))
ggplot(dtf) +
    geom_density(aes(x = variable, fill = group)) +
    facet_grid(year ~.)

Но я бы хотел, чтобы распределения совпадали, как в оригинальном сюжете. Есть ли конкретное название для таких сюжетов и возможно ли их воспроизвести с помощью R?

[EDIT] Динамическая версия аналогичного графика доступна на этом графике глобального распределения температуры.

1 ответ

Решение

Обновление: пакет, использованный для создания этого сюжета, теперь называется "ggridges".

Для этого вам понадобится пакет ggjoy. Вот примерная версия, которая нуждается в некоторой уборке:


devtools::install_github("clauswilke/ggjoy")
library(ggjoy)
library(ggplot2)

#Create data frame
set.seed(101)
dtf <- data.frame(variable = c(rnorm(1000),
                               rnorm(1000) + rep(1:10/2,each =100)),
                  group = rep(c("a","b"), each = 1000),
                  year = rep(2001:2010, each=100))

# Use ggplot2 and ggjoy packages  
ggplot(dtf,aes(x = variable, y = as.factor(year), fill = group)) +
  geom_joy(scale = 2,alpha = .5,rel_min_height = 0.01) + theme_joy() 
#> Picking joint bandwidth of 0.347

Другие вопросы по тегам