查看原文
其他

R语言可视化学习笔记之gganimate包

taoyan R语言中文社区 2019-04-22


作者简介Introduction

taoyan:R语言中文社区特约作家,伪码农,R语言爱好者,爱开源。

个人博客: https://ytlogos.github.io/

公众号:生信大讲堂


往期回顾

R语言可视化学习笔记之相关矩阵可视化包ggcorrplot

R语言学习笔记之相关性矩阵分析及其可视化

ggplot2学习笔记系列之利用ggplot2绘制误差棒及显著性标记

ggplot2学习笔记系列之主题(theme)设置

用circlize包绘制circos-plot

利用gganimate可视化R-Ladies发展情况

一篇关于国旗与奥运会奖牌的可视化笔记

利用ggseqlogo绘制seqlogo图

R语言data manipulation学习笔记之创建变量、重命名、数据融合

R语言data manipulation学习笔记之subset data

创建属于自己的调色板

简介

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

SessionInfo

sessionInfo()

R version 3.4.3 (2017-11-30)

Platform: x86_64-w64-mingw32/x64 (64-bit)

Running under: Windows >= 8 x64 (build 9200)


Matrix products: default


locale:

[1] LC_COLLATE=Chinese (Simplified)_China.936

[2] LC_CTYPE=Chinese (Simplified)_China.936

[3] LC_MONETARY=Chinese (Simplified)_China.936

[4] LC_NUMERIC=C

[5] LC_TIME=Chinese (Simplified)_China.936


attached base packages:

[1] stats     graphics  grDevices utils     datasets  methods

[7] base

other attached packages:

[1] gganimate_0.1.0.9000 ggplot2_2.2.1.9000

[3] gapminder_0.3.0


loaded via a namespace (and not attached):

[1] Rcpp_0.12.15      rstudioapi_0.7    magrittr_1.5

[4] munsell_0.4.3     colorspace_1.3-2  rlang_0.1.6

[7] stringr_1.2.0     plyr_1.8.4        tools_3.4.3

[10] grid_3.4.3        gtable_0.2.0      utf8_1.1.3

[13] cli_1.0.0         withr_2.1.1.9000  htmltools_0.3.6

[16] yaml_2.1.16       lazyeval_0.2.1    assertthat_0.2.0

[19] digest_0.6.15     tibble_1.4.2      crayon_1.3.4

[22] base64enc_0.1-3   animation_2.5     labeling_0.3

[25] stringi_1.1.6     compiler_3.4.3    pillar_1.1.0

[28] installr_0.19.0   scales_0.5.0.9000
   



 往期精彩内容整理合集 

2017年R语言发展报告(国内)

R语言中文社区历史文章整理(作者篇)

R语言中文社区历史文章整理(类型篇)


公众号后台回复关键字即可学习

回复 R                  R语言快速入门及数据挖掘 
回复 Kaggle案例  Kaggle十大案例精讲(连载中)
回复 文本挖掘      手把手教你做文本挖掘
回复 可视化          R语言可视化在商务场景中的应用 
回复 大数据         大数据系列免费视频教程 
回复 量化投资      张丹教你如何用R语言量化投资 
回复 用户画像      京东大数据,揭秘用户画像
回复 数据挖掘     常用数据挖掘算法原理解释与应用
回复 机器学习     人工智能系列之机器学习与实践
回复 爬虫            R语言爬虫实战案例分享

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

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