Комбинировать линии и графики Headmap в R - PullRequest
0 голосов
/ 09 мая 2019

В моем исследовании о том, как построить несколько линейных диаграмм, я наткнулся на следующую статью:

https://arxiv.org/pdf/1808.06019.pdf

Он показывает способ отображения огромного количества данных временных рядов, объединяя каждую линейную диаграмму с общим заголовком. Результат выглядит примерно равным этому представлению:

DenseLines

Я искал пакет R (но ничего не смог найти) или хорошую реализацию ggplot для достижения того же результата. Поэтому я могу нарисовать множество geom_lines и покрасить их по-разному, но я не знаю, как на самом деле применить к нему заголовок.

У кого-нибудь есть подсказка / идея для меня?

Спасибо! Stephan

1 Ответ

2 голосов
/ 10 мая 2019
library(tidyverse)
datasets::ChickWeight # from Base R
ggplot(ChickWeight, aes(Time, weight, group = Chick)) + geom_line()

enter image description here

Спор здесь подсчитывает, сколько показаний в каждом интервале времени / веса, и нормализуется до «доли наиболее распространенных показаний» для каждого времени.

ChickWeight %>%
  count(Time, weight = 10*floor(weight/10)) %>%
  complete(Time, weight = 10*0:30, fill = list(n = 0)) %>%
  group_by(Time) %>%
  mutate(share = n / max(n)) %>%  # weighted for num as % of max for that Time
  ungroup() %>%

  ggplot(aes(Time, weight, fill = share)) +
  geom_tile(width = 2) +
  scale_fill_viridis_c(direction = -1)

enter image description here

Если ваши данные имеют разреженные показания времени, может быть полезно интерполировать ваши строки, чтобы получить большее разрешение для биннинга:

ChickWeight %>%
  group_by(Chick) %>%
  arrange(Time) %>%
  padr::pad_int("Time", step = 0.5) %>%
  mutate(weight_approx = approx(Time, weight, Time)$y) %>%
  ungroup() %>%

  count(Time, weight_approx = 10*floor(weight_approx/10)) %>%
  complete(Time, weight_approx = 10*0:60, fill = list(n = 0)) %>%
  group_by(Time) %>%
  mutate(share = n / sum(n)) %>%   # Different weighting option
  ungroup() %>%

  ggplot(aes(Time, weight_approx, fill = share)) +
  geom_tile() +
  scale_fill_viridis_c(direction = -1)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...