Создать таблицу временных рядов, используя ggplot - PullRequest
0 голосов
/ 01 апреля 2020

Я пытаюсь создать набор временных рядов для разных областей и хочу поместить их в таблицу, что в точности совпадает с тем, что New York Times сделала в своей статье Карта Коронавируса: отслеживание Глобальная вспышка (снимок случая заболевания коронавирусом по стране ).

Первоначальный подход, который я разработал, заключается в использовании тепловых карт, где каждая строка представляет область, а каждый столбец представляет время печать. Но результат будет выглядеть не так хорошо, как пример NYTime. Мне интересно, может ли кто-нибудь дать мне подсказку для улучшения.

1 Ответ

0 голосов
/ 01 апреля 2020

Вот пример того, как вы можете использовать geom_tile, чтобы получить «похожий» график:

Начиная с этого поддельного примера:

library(lubridate)
df <- data.frame(USA = c(rep(1,5),5,10,25,50,150,200,250,250,250),
                 Italy = c(rep(1,2),5,10,25,50,100,150,175,200,250,300,350,400),
                 Date = seq(ymd("2020-01-01"),ymd("2020-04-01"), by = "1 weeks"))

Вы можете преобразовать кадр данных в более длинный отформатируйте с использованием pivot_longer из tidyr и нанесите значения, как указано в ggplot2. Вы можете заплатить с аргументом ширины и высоты geom_tile, чтобы приблизиться к исходному графику.

library(tidyr)
library(ggplot2)

df %>% pivot_longer(-Date, names_to = "country", values_to = "Cases") %>%
  ggplot(aes(x = Date, y = country, fill = Cases))+
  geom_tile(width = 5, height = 0.5, color = "black")+
  scale_fill_gradient(low = "white", high = "red")+
  scale_x_date(date_breaks = "week", date_labels = "%b %d")+
  theme_classic()

enter image description here

Отвечает ли он на ваш вопрос?

...