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

2017 年 11 月 30 日 数萃大数据 louwill

gganimate简介

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

ImageMagick

      gganimate的安装如下:

  
    
    
    
  1. devtools::install_github("dgrtwo/gganimate")

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

绘图实例

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

  
    
    
    
  1. library(gapminder)

  2. library(ggplot2)

  3. theme_set(theme_bw())

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

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

  2.  geom_point() +

  3.  scale_x_log10()

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

  
    
    
    
  1. library(gganimate)

  2. gganimate(g)

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

  
    
    
    
  1. gganimate(g, "output1.gif")

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

  
    
    
    
  1. g2 <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop)) +

  2.  geom_point() +

  3.  geom_point(aes(frame = year), color = "red") +

  4.  scale_x_log10()

  5. gganimate(g2)

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

  
    
    
    
  1. g3 <- ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, frame = year)) +

  2.  geom_point() +

  3.  geom_smooth(aes(group = year), method = "lm", show.legend = FALSE) +

  4.  facet_wrap(~continent, scales = "free") +

  5.  scale_x_log10()

  6. gganimate(g3)

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

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




参考资料:

https://github.com/dgrtwo/gganimate

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




欢迎大家关注微信公众号:数萃大数据




课程公告

深度学习培训班【上海站】

时间:2017年12月23-24日

地点:上海创梦云实训创新中心

更多详情,请扫描下面二维码




登录查看更多
0

相关内容

【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
111+阅读 · 2020年5月9日
【2020新书】C++20 特性 第二版,A Problem-Solution Approach
专知会员服务
58+阅读 · 2020年4月26日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
Python数据可视化2018:为什么这么多的库?
Python程序员
4+阅读 · 2019年1月2日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
GAN | GAN介绍(1)
KingsGarden
78+阅读 · 2017年3月13日
Seeing What a GAN Cannot Generate
Arxiv
8+阅读 · 2019年10月24日
A Probe into Understanding GAN and VAE models
Arxiv
9+阅读 · 2018年12月13日
Arxiv
8+阅读 · 2018年5月1日
VIP会员
相关VIP内容
【2020新书】实战R语言4,323页pdf
专知会员服务
100+阅读 · 2020年7月1日
【干货书】R语言书: 编程和统计的第一课程,
专知会员服务
111+阅读 · 2020年5月9日
【2020新书】C++20 特性 第二版,A Problem-Solution Approach
专知会员服务
58+阅读 · 2020年4月26日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
224+阅读 · 2020年3月22日
【经典书】Python数据数据分析第二版,541页pdf
专知会员服务
192+阅读 · 2020年3月12日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
179+阅读 · 2020年1月1日
相关资讯
Python数据可视化2018:为什么这么多的库?
Python程序员
4+阅读 · 2019年1月2日
Python | Jupyter导出PDF,自定义脚本告别G安装包
程序人生
7+阅读 · 2018年7月17日
实战 | 用Python做图像处理(二)
七月在线实验室
17+阅读 · 2018年5月25日
python数据分析师面试题选
数据挖掘入门与实战
6+阅读 · 2017年11月21日
GAN | GAN介绍(1)
KingsGarden
78+阅读 · 2017年3月13日
Top
微信扫码咨询专知VIP会员