作者简介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语言爬虫实战案例分享

R语言可视化学习笔记之gganimate包相关推荐

  1. R语言可视化学习笔记之ggridges包绘制山峦图

    作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源. 严涛老师的绘图教程还有: gganimate |诺奖文章里面的动图绘制教程来了!! ggplot2学习笔记之 ...

  2. R语言可视化学习笔记之ggridges包

    作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源. 严涛老师的绘图教程还有: gganimate |诺奖文章里面的动图绘制教程来了!! ggplot2学习笔记之 ...

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

    本文转载自"R语言中文社区",己获授权. 作者简介Introduction taoyan:伪码农,R语言爱好者,爱开源. 个人博客: https://ytlogos.github. ...

  4. R语言小白学习笔记13—基本统计

    R语言小白学习笔记13-基本统计 笔记链接 学习笔记13-基本统计 13.1 概括性统计量 13.2 相关系数和协方差 13.3 t-检验 13.3.1 单样本t检验 13.3.2 两样本t检验 13 ...

  5. R语言小白学习笔记12—概率分布

    R语言小白学习笔记12-概率分布 笔记链接 学习笔记12-概率分布 12.1 正态分布 12.2 二项分布 12.3 泊松分布 12.4 其他分布 笔记链接 学习笔记1-R语言基础. 学习笔记2-高级 ...

  6. R语言数据处理学习记录--使用linkET包完成mental test

    R语言数据处理学习记录–使用linkET包完成mental test 注:本文仅作为自己的学习记录以备复习查阅 一 简单介绍一下 这个包依旧是来自于GitHub上,作者给出的介绍:linkET的目标是 ...

  7. R语言小白学习笔记3—R语言读取数据

    R语言小白学习笔记3-R语言读取数据 笔记链接 想说的话 学习笔记3-R语言读取数据 3.1 读取CSV文件 3.1.1 read_delim函数 3.1.2 fread函数 3.2 读取Excel数 ...

  8. r型聚类典型指标_应用统计学与R语言实现学习笔记(十)——聚类分析

    Chapter 10 Cluster Analysis 本篇是第十章,内容是聚类分析.由于之后的几章是典型的分析方法.而且在14章的案例里面可能不会体现,所以内容里会渗透较多的R语言操作.由于简书不支 ...

  9. r语言实现关联分析--关联规则挖掘(Apriori算法) (r语言预测学习笔记)

    r语言实现关联分析–关联规则挖掘 关联分析: 引子: 我们一般把一件事情发生,对另一间事情也会产生影响的关系叫做关联.而关联分析就是在大量数据中发现项集之间有趣的关联和相关联系(形如"由于某 ...

  10. R语言可视化散点图、使用ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置min.segment.length参数为Inf不添加标签线段)

    R语言ggplot2可视化:可视化散点图并为散点图中的数据点添加文本标签.使用ggrepel包的geom_text_repel函数避免数据点之间的标签互相重叠(设置min.segment.length ...

最新文章

  1. 代码如何获取单反相机拍摄的照片_看看如何拍摄出更好的照片
  2. python螺旋打印二维数组_Python使用迭代器打印螺旋矩阵的思路及代码示例
  3. buu Alice与Bob
  4. 杭电1043java实现bfs一遍
  5. Android之在Java socket作为服务器里面返回数据头部怎么写入浏览器需要下载文件的文件名
  6. 中label换行问题_如何巧妙处理 Git 多平台换行符问题(LF or CRLF)
  7. mac iterm 怎么搜索不能输入_Mac高效开发之iTerm2、Prezto和Solarized主题
  8. nginx——ngx_http_gzip_module
  9. 使用Kotlin进行Android开发
  10. Java网络编程之实现HTTP断点续传下载工具(附源代码)
  11. CSDN博客成长记录
  12. python定义整型数组_Python数组定义方法
  13. iphone主屏幕动态壁纸_iPhone不需长按自动触发动态壁纸教程
  14. PXE系列之四:PXE无盘LINUX工作站
  15. delphi文件操作
  16. HTML—超文本标记语言
  17. latex 数学符号-- 希腊字母、上下标、分数、运算符、箭头、标注、分隔符、省略号、空白间距
  18. Handling 2 trigger(s) that missed their scheduled fire-time,JobPersistenceException: Couldn't store
  19. C++算法进制间的转换
  20. 学习linux能有什么用

热门文章

  1. 阿里27个炸天的开源项目,值得收藏!
  2. 天天唠叨的MySQL优化,到底该怎么玩?
  3. 马云:我不懂技术,但我尊重技术(附演讲全文
  4. 我身边的那些有钱人。。
  5. form表单居中_HTML基本结构、命名及对表单专项练习解释
  6. *第三周*数据结构实践项目一【顺序表的基本运算】
  7. 【C#】C#获取本地的内网(局域网)和外网(公网)IP地址的方法
  8. python操作excel的读写
  9. [Asp.net]常见word,excel,ppt,pdf在线预览方案,有图有真相,总有一款适合你!(续)...
  10. JavaScript的类型转换