其他
数据呈现丨R语言可视化学习笔记之gganimate包
The following article is from 表哥有话讲 Author taoyan
简介
gganimate包是ggplot2的扩展包,主要用于绘制动画。它在ggplot2的基础上了补充了一个美学映射frame,就像x,y,size,color,fill一样进行映射。
安装
if(!require(devtools)) install.packages("devtools")
devtools::install_github("dgrtwo/gganimate")
左右滑动查看更多
install.packages("installr")
installr::install.ImageMagick("http://www.imagemagick.org/script/download.php")
左右滑动查看更多安装好之后以管理员身份运行RStudio。可视化
这里我们使用gapminder包里的数据集gapminder进行可视化:
library(gapminder)
library(ggplot2)
library(gganimate)
theme_set(theme_bw())
head(gapminder)
左右滑动查看更多# 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
左右滑动查看更多p <- ggplot(gapminder, aes(gdpPercap, lifeExp, size=pop, color=continent,frame=year))
+geom_point()
+scale_x_log10()
gganimate(p)
左右滑动查看更多定制化
将gganimate与ggplot2结合起来可以定制化很多复杂的动画:
p2 <- ggplot(gapminder, aes(gdpPercap, lifeExp, size=pop))+
geom_point()+
geom_point(aes(frame=year), color="red")+
scale_x_log10()
gganimate(p2)
左右滑动查看更多如果要绘制累积效果图,gganimate提供了cumalative参数,这对于路径图来说十分是有效的:
p3 <- ggplot(gapminder, aes(gdpPercap, lifeExp, frame=year, color=continent))+
geom_path(aes(cumulative=TRUE, group=country))+
scale_x_log10()+
facet_wrap(~continent)
gganimate(p3)
左右滑动查看更多一般来说我们都是将时间映射给frame,这也符合我们的直觉,但是这并不意味着我们只能将时间映射给frame,我们可以将任何想要的变量映射给frame:p4 <- ggplot(gapminder, aes(gdpPercap, lifeExp, size=pop, frame=continent))+
geom_point(color="blue")+
scale_x_log10()
gganimate(p4)
左右滑动查看更多需要注意的是如何我们绘制的图形涉及到统计汇总比如geom_smooth(),那么在geom_smooth()图层中需要添加group映射:
p5 <- ggplot(gapminder,aes(gdpPercap, lifeExp, size=pop, frame=year))+
geom_point()+
geom_smooth(aes(group=year),method = "lm", show.legend = FALSE)+facet_wrap(~continent, scales = "free")+
scale_x_log10()
gganimate(p5)
左右滑动查看更多最后如果需要控制动画播放速度,使用interval参数控制:
gganimate(p, interval = .2)
左右滑动查看更多►一周热文
数据呈现丨划重点 ! 经济学学Python 需要学哪些内容?——数据可视化呈现必知必会的知识点
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
欢迎扫描👇二维码添加关注