Создайте таблицу графика временных рядов с помощью ggplot

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

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


person roger2ds    schedule 01.04.2020    source источник
comment
Добро пожаловать в SO! Может быть, вы можете предоставить код, который вы пробовали, и соответствующий вывод.   -  person dc37    schedule 01.04.2020


Ответы (1)


Вот пример того, как вы можете использовать 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()

введите здесь описание изображения

Это отвечает на ваш вопрос?

person dc37    schedule 01.04.2020
comment
Большое спасибо, я играл с параметрами geom_tile и получил нечто подобное. Мне было интересно, можно ли объединить текст и элемент сюжета и создать таблицу, как в статье NYT. Это что-то, что больше подходит для других инструментов визуализации вместо ggplot? - person roger2ds; 02.04.2020
comment
Может быть, вы можете попробовать посмотреть formattable пакет, который позволяет создавать красивые таблицы. Не знаю, как объединить в это часть тепловой карты. - person dc37; 02.04.2020