查看原文
其他

数据呈现丨R语言可视化学习笔记之gganimate包

数据Seminar 2021-06-04

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")

左右滑动查看更多

需要注意的是这个包依赖于ImageMagick来产生动画,如果自行安装的话在调用ImageMagick很容易出错,所以推荐在RStudio里面安装:
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 6country continent year lifeExp pop gdpPercap<fct> <fct> <int> <dbl> <int> <dbl>1 Afghanistan Asia 1952 28.8 8425333 7792 Afghanistan Asia 1957 30.3 9240934 8213 Afghanistan Asia 1962 32.0 10267083 8534 Afghanistan Asia 1967 34.0 11537966 8365 Afghanistan Asia 1972 36.1 13079460 7406 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 需要学哪些内容?——数据可视化呈现必知必会的知识点

数据资源丨35个国内外社会科学数据网站资源汇总

统计计量丨工具变量法(三):IV真的外生吗?

软件应用丨经济学专业学习Python之数据处理工具大集合

统计计量丨古老而神秘的因子分析(三)

数据呈现 | 让文稿shinly起来!地图绘制










数据Seminar

这里是大数据、分析技术与学术研究的三叉路口


作者:taoyan出处:表哥有话讲推荐:简华(何年华)编辑:青酱







    欢迎扫描👇二维码添加关注    


    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存