0%

ggplot2绘制动图

总结在R中使用ggplot2绘制动图。

1. 举例

绘制动图,两个步骤:静态图绘制、图形组装。ggplot2绘制动图需要用到gganimate这个包。

例如:

1
2
3
4
5
6
7
8
9
10
11
12
13
library(tidyverse)
library(covdata) # remotes::install_github("kjhealy/covdata")
library(gganimate)

covdata::covnat_weekly %>%
dplyr::filter(iso3 == "AUT") %>%
dplyr::filter(cu_cases > 0) %>%
ggplot(aes(x = date, y = cases)) +
geom_path() +
labs(
title = "澳大利亚新冠肺炎累积确诊病例",
subtitle = "数据来源https://kjhealy.github.io/covdata/"
)

加一行就可以使图片动起来:

1
2
3
4
5
6
7
8
9
10
covdata::covnat_weekly %>%
dplyr::filter(iso3 == "AUT") %>%
dplyr::filter(cu_cases > 0) %>%
ggplot(aes(x = date, y = cases)) +
geom_path() +
labs(
title = "澳大利亚新冠肺炎累积确诊病例",
subtitle = "数据来源https://kjhealy.github.io/covdata/"
)+
transition_reveal(along = date)

alt 图标

2. gganimate中的函数

  • transition_*(): 定义动画是根据哪个变量进行”动”,以及如何”动”
  • view_*(): 定义坐标轴随数据变化.
  • shadow_*(): 影子(旧数据的历史记忆)?定义点相继出现的方式.
  • enter_*()/exit_*(): 定义新数据出现和旧数据退去的方式.
  • ease_aes(): 美观定义,控制变化的节奏(如何让整个动画看起来更舒适).
  • transition_states(states=) states参数带有分组信息,可以等价于静态图中的分面
  • transition_time(time=) time一般认为是连续的值,是transition_states的一个特例(transition_length默认为time)。
  • transition_reveal(along=) along参数按照某个变量依次显示,如沿着x轴显示
  • transition_filter(至少2个筛选条件,transition_length = , filter_length =) 动图将会在这些筛选条件对应的子图之间转换。
  • transition_layers() 按照图层依次显示。

绘制动图的详细解说