gganimate:构建R语言可视化gif动图

gganimate简介

      gganimate是一款基于ggplot2的动态可视化扩展包,简单就是将ggplot2绘图对象转为gif动图的形式,这对于一些统计分析原理和可视化展示尤为重要,可以让抽象的数理理论更加形象化,也便于理解和方便课堂教学。 gganimate包的安装本身没有什么麻烦,但是这个包脾气倔,需要本地提前安装好ImageMagick这个软件,ImageMagick是一款功能强大且开源的图片处理和开发的软件包,安装的时候总是莫名其妙的报错,小编废了好大周折才搞定,能不能一次性安装成功还得看运气。 windows系统下ImageMagick下载地址如下:

ImageMagick

      gganimate的安装如下:

devtools::install_github("dgrtwo/gganimate")

      就像刚刚提到的那样,gganimate的本质思想没什么特别的,就是将ggplot2对象进行动态化,核心函数与包同名,就是 gganimate(),绘图思想与ggplot2同理, gganimate()特殊之处在于在除了为绘图提供x,y以及color,size这样的美学映射之外,还必须提供一个所谓的 frame映射,具体怎么理解这个 frame映射,还得拿例子说。比如说我们想绘制某国人口随时间变化的一个ggplot2动态图,那么这个时间就是 frame映射。话不多说,且看下面的绘图实例。

绘图实例

      先加载一些必备包,这里我们使用的是 gapminder的包中的全球主要国家在1952-2007年的GDP增长、人口变化以及预期寿命等方面的数据。现在我们想用 gganimate探索一下各大洲各主要国家GDP增长、预期寿命和人口增长是如何随时间变化的。

library(gapminder)	
library(ggplot2)	
theme_set(theme_bw())

0?wx_fmt=png

      先利用 ggplot2绘制静态图(不带时间的 frame):

g <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, color = continent, frame = year)) +	
  geom_point() +	
  scale_x_log10()

      然后利用 gganimate()函数进行动态化:

library(gganimate)	
gganimate(g)

0?wx_fmt=gif

      我们也可以将绘制出来的gif动图直接以相应的格式进行输出保存到本地:

gganimate(g, "output1.gif")

      当然,除此之外,我们也可以根据个人喜好对动图做一些个性化的设置:

g2 <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop)) +	
  geom_point() +	
  geom_point(aes(frame = year), color = "red") +	
  scale_x_log10()	
gganimate(g2)

0?wx_fmt=gif

      有时候还可以运用一些统计方法:

g3 <- 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(g3)

0?wx_fmt=gif

      用于现场的统计教学也未尝不可,下面动图展示了局部加权回归的散点平滑法:

0?wx_fmt=gif

        这样的动态化演示图,是不是能帮助大家更好的学习统计学?

参考资料:

https://github.com/dgrtwo/gganimate

https://simplystatistics.org/2017/08/08/code-for-my-educational-gifs/

往期精彩:


一个数据科学热爱者的学习历程

640?
640?wx_fmt=jpeg
长按二维码.关注数据科学家养成记

640?wx_fmt=jpeg

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值