原文链接:http://tecdat.cn/?p=8003
演示数据集
代码语言:javascript复制library(gapminder)
head(gapminder)
代码语言:javascript复制## # A tibble: 6 x 6
## country continent year lifeExp pop gdpPercap
## <fct> <fct> <int> <dbl> <int> <dbl>
## 1 Afghanistan Asia 1952 28.8 8425333 779.
## 2 Afghanistan Asia 1957 30.3 9240934 821.
## 3 Afghanistan Asia 1962 32.0 10267083 853.
## 4 Afghanistan Asia 1967 34.0 11537966 836.
## 5 Afghanistan Asia 1972 36.1 13079460 740.
## 6 Afghanistan Asia 1977 38.4 14880372 786.`
静态图
代码语言:javascript复制p <- ggplot(
gapminder,
aes(x = gdpPercap, y=lifeExp, size = pop, colour = country)
)
geom_point(show.legend = FALSE, alpha = 0.7)
scale_color_viridis_d()
scale_size(range = c(2, 12))
scale_x_log10()
labs(x = "GDP per capita", y = "Life expectancy")
p
-
基本
状态之间的过渡长度将设置为与它们之间的实际时间差相对应。
标签变量:frame_time
。给出当前帧所对应的时间。
创建面板:
让视图跟随数据在每帧中变化
逐步衰减
显示原始数据作为背景
您可以根据需要显示过去和/或将来的原始数据并设置其样式。
-
静态图
代码语言:javascript复制p <- ggplot(
airquality,
aes(Day, Temp, group = Month, color = factor(Month))
)
geom_line()
scale_color_viridis_d()
labs(x = "Day of Month", y = "Temperature")
theme(legend.position = "top")
p
让数据逐渐出现
- 按天显示(x轴)
在数据的几个不同阶段之间进行转换
数据准备:
代码语言:javascript复制library(dplyr)
mean.temp <- airquality %>%
group_by(Month) %>%
summarise(Temp = mean(Temp))
mean.temp
代码语言:javascript复制## # A tibble: 5 x 2
## Month Temp
## <int> <dbl>
## 1 5 65.5
## 2 6 79.1
## 3 7 83.9
## 4 8 84.0
## 5 9 76.9`
创建平均温度的条形图:
代码语言:javascript复制p <- ggplot(mean.temp, aes(Month, Temp, fill = Temp))
geom_col()
scale_fill_distiller(palette = "Reds", direction = 1)
theme_minimal()
theme(
panel.grid = element_blank(),
panel.grid.major.y = element_line(color = "white"),
panel.ontop = TRUE
)
p
- transition_states():
- enter_grow() enter_fade()
保存动画
如果需要保存动画以备后用,可以使用该anim_save()
功能
本文摘选《R语言动态图可视化:如何、创建具有精美动画的图》