Итак, я пытаюсь создать график развития короны, подобный следующему: barplot .
Пока я сделал это mine_bar_plot . Цвет указывает, есть ли увеличение или уменьшение в новых случаях до 100 000 поп за последние 14 дней. Число в конце столбцов - это новые фактические случаи на 100 000/14 дней.
Проблема заключается в перемещении баров между состояниями, когда они фактически не оказываются в новой позиции. Если вы посмотрите на США, их порядок ранга равен 1 на протяжении всей анимации, но все равно выглядит, как будто он меняет положение. Я попытался изменить между geom_tile, geom_bar, geom_barh, geom_col. Опробовал почти все комбинации enter_, exit_ и ease_aes (). Просто не могу понять, почему моя не похожа на других !
Вот мой код:
data <- data %>%
group_by(date) %>%
mutate(
order = min_rank(-Cases)*1,
label = paste("", round(New_cases_last_14_pr_100k, digits=1))) %>%
filter(order <=15)%>%
ungroup()
p<-ggplot(data = data) +
geom_tile(
mapping = aes(
x = order,
y = Cases / 2,
height = Cases,
fill = as.factor(Change)
),
width = 0.9,
alpha = 0.9
) +
scale_fill_manual(breaks = c("Increase","No Change","Decrease"),values=c("#D55E00","#56B4E9","#009E73"),drop=FALSE)+
geom_text(
mapping = aes(
x = order,
y = 0,
label = Places.reporting.cases
),
vjust = 0.2,
hjust = 1
) +
geom_text(
mapping = aes(
x = order,
y = Cases,
label = label
),
vjust = 0.2,
hjust = 0
) +
scale_y_continuous(labels = scales::comma) +
coord_flip(
clip = "off",
expand = FALSE,
xlim = c(0.45, 15.55)) +
scale_x_reverse() +
guides(color = FALSE, fill = FALSE) +
labs(title = "{closest_state}", x = "", y = "Cases") +
theme(
plot.title = element_text(hjust = 0.5, size = 32),
axis.ticks.y = element_blank(),
axis.text.y = element_blank(),
plot.margin = margin(1, 3, 1, 4, "cm")
) +
transition_states(date, transition_length = 200000, state_length = 2000, wrap = FALSE)+enter_grow()+exit_shrink()
ease_aes("cubic-in-out")
animate(p,duration = 30, nframes = 300, fps = 10, width =800, height = 600)