gganimate绘制动图观察连续变化数据

  gganimate|让你的图动起来!!!

这是ggplot中十分可爱的一个扩增包,目的只有一个,就是让你的图动起来!就是酱紫!!

gganimate扩展了ggplot2实现的图形语法,包括动画描述。它通过提供一系列新的语法类来实现这一点,这些类可以添加到绘图对象中,以便自定义它应该如何随时间变化。

下面是他的parameter:

transition_*()定义了数据应该如何展开以及它与时间的关系。
view_*()定义位置比例应如何沿动画更改。
shadow_*()定义如何在给定的时间点呈现来自其他时间点的数据。
enter_*()/ exit_*()定义新数据应如何显示以及旧数据在动画过程中应如何消失。
ease_aes()定义了在过渡期间应该如何进行过渡。

举个栗子!

#安装辅助包,该包有两个版本,已经更新为最新版本,老版本在未来将不再支持。install.packages("gganimate")# 安装开发版
# install.packages('devtools')
# devtools::install_github('thomasp85/gganimate')
library(ggplot2)
library(gganimate)ggplot(mtcars, aes(factor(cyl), mpg)) +geom_boxplot() + geom_point() +# Here comes the gganimate codetransition_states(gear,transition_length = 2,state_length = 1) +enter_fade() +exit_shrink() +ease_aes('sine-in-out')

加载时间是比较长的,需要耐心等待哈!

Yet Another Example

首先查看一下数据格式吧,Gapminder是关于预期寿命,人均国内生产总值和国家人口的数据摘录。

library(gapminder)
head(gapminder)#我们看一下数据格式

ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) +
#点的大小和颜色分别由pop和country决定;geom_point(alpha = 0.7, show.legend = FALSE) +scale_colour_manual(values = country_colors) +        #进行数值之间的映射scale_size(range = c(2, 12)) +                    #设置绘图符号大小scale_x_log10() +                              #连续数据位置的标准化facet_wrap(~continent) +                     #按照continent进行分类# Here comes the gganimate specific bitslabs(title = 'Year: {frame_time}', x = 'GDP per capita', y = 'life expectancy') +transition_time(year) +ease_aes('linear')#指数据变化的状态,线性发展比较缓慢

哈哈哈,现在我们以肿瘤数据为例进行演示一下:

我编了一组测试数据,其中将肿瘤分为I,II,III型,IV型为control,然后分别显示了再不同样本中不同肿瘤分型下的部分基因的表达情况。

library(ggplot2)
library(gganimate)
#首先我们进行数据的读入data <- "subgroup,sample,gene,expression
I,Tumor,p53,12.725952
II,Tumor,p53,11.914176
III,Tumor,p53,12.315768
IV,Normal,p53,12.978894
I,Tumor,p53,11.93924
II,Tumor,p53,12.262185
III,Tumor,p53,11.538924
IV,Normal,p53,12.016589
I,Tumor,p53,12.302574
II,Tumor,p53,11.939233
III,Tumor,p53,12.803992
IV,Normal,p53,10.674506
I,Tumor,p53,12.569142
II,Tumor,p53,12.088496
III,Tumor,p53,9.971951
IV,Normal,p53,13.008554
I,Tumor,p53,12.804154
II,Tumor,p53,11.847107
III,Tumor,p53,12.081261
IV,Normal,p53,12.158431
I,Tumor,p53,11.096693
II,Tumor,p53,12.655811
III,Tumor,p53,11.509067
IV,Normal,p53,12.523573
I,Tumor,p53,11.3554
II,Tumor,p53,11.560566
III,Tumor,p53,10.969046
IV,Normal,p53,11.169892
I,Tumor,p53,12.884054
II,Tumor,p53,12.284268
III,Tumor,her2,9.575523
IV,Normal,her2,12.409381
I,Tumor,her2,12.114364
II,Tumor,her2,11.493997
III,Tumor,her2,10.987106
IV,Normal,her2,11.943991
I,Tumor,her2,11.171378
II,Tumor,her2,13.120248
III,Tumor,her2,12.628872
IV,Normal,her2,11.91914
I,Tumor,her2,12.36504
II,Tumor,her2,12.707354
III,Tumor,her2,12.54517
IV,Normal,her2,12.199749
I,Tumor,her2,13.184496
II,Tumor,her2,12.640412
III,Tumor,her2,12.716897
IV,Normal,her2,13.359091
I,Tumor,her2,11.760945
II,Tumor,her2,11.406367
III,Tumor,her2,11.984382
IV,Normal,her2,12.254977
I,Tumor,her2,11.579763
II,Tumor,her2,11.983042
III,Tumor,her2,12.566317
IV,Normal,her2,10.869331
I,Tumor,her2,10.910963
II,Tumor,her2,11.948207
III,Tumor,myc,12.363072
IV,Normal,myc,12.755182
I,Tumor,myc,11.922223
II,Tumor,myc,9.618839
III,Tumor,myc,12.693868
IV,Normal,myc,13.40685
I,Tumor,myc,11.871609
II,Tumor,myc,11.783704
III,Tumor,myc,12.485053
IV,Normal,myc,12.669123
I,Tumor,myc,11.653691
II,Tumor,myc,11.675768
III,Tumor,myc,12.744605
IV,Normal,myc,12.911619
I,Tumor,myc,12.008307
II,Tumor,myc,11.838161
III,Tumor,myc,12.590989
IV,Normal,myc,11.680278
I,Tumor,myc,11.719241
II,Tumor,myc,10.156746
III,Tumor,myc,11.84406
IV,Normal,myc,12.975393
I,Tumor,myc,10.963332
II,Tumor,myc,12.338216
III,Tumor,myc,12.030859
IV,Normal,myc,11.119114
I,Tumor,myc,12.661349
II,Tumor,myc,13.168166
III,Tumor,myc,11.707595
IV,Normal,myc,12.06719
I,Tumor,myc,12.463962
II,Tumor,myc,12.288819
III,Tumor,myc,12.036757
IV,Normal,myc,12.98055
I,Tumor,myc,11.343075
II,Tumor,myc,12.565481
III,Tumor,myc,12.279996
IV,Normal,myc,12.965189
I,Tumor,myc,12.946155
II,Tumor,myc,11.688462
III,Tumor,sox4,11.944477
IV,Normal,sox4,12.128177
I,Tumor,sox4,11.116105
II,Tumor,sox4,11.148871
III,Tumor,sox4,13.139244
IV,Normal,sox4,10.043207
I,Tumor,sox4,12.043914
II,Tumor,sox4,9.990576
III,Tumor,sox4,11.624263
IV,Normal,sox4,11.647402
I,Tumor,sox4,12.502176
II,Tumor,sox4,12.291812
III,Tumor,sox4,11.421913
IV,Normal,sox4,12.282511
I,Tumor,sox4,12.511991
II,Tumor,sox4,12.285322
III,Tumor,sox4,11.7884
IV,Normal,sox4,13.747552
I,Tumor,sox4,11.212993
II,Tumor,sox4,12.936845
III,Tumor,sox4,12.442484
IV,Normal,sox4,10.324288
I,Tumor,sox4,12.436421
II,Tumor,sox4,11.923122
III,Tumor,sox4,12.831474
IV,Normal,sox4,12.271537
I,Tumor,sox4,12.208086
II,Tumor,sox4,11.830799
III,Tumor,sox4,12.410238
IV,Normal,sox4,12.13912
I,Tumor,sox4,12.47"test <- read.csv(text=data,header=T)
head(test)

library(ggplot2)
ggplot(test,aes(x=subgroup,y=expression,fill=subgroup))+geom_boxplot()+geom_jitter()+theme_bw()                     #按照subgroup进行分型,并画出箱式图

同样对不同gene在各组中的分布情况进行描述:

library(ggplot2)
p <- ggplot(test,aes(x=subgroup,y=expression,fill=subgroup))+geom_boxplot()+geom_jitter()+theme_bw()
p +facet_grid(.~gene)#按照gene对各个小组进行分类

library(ggplot2)
library(gganimate)
p <- ggplot(test,aes(x=subgroup,y=expression,fill=subgroup))+geom_boxplot()+geom_jitter()+theme_bw()
p +transition_states(gene, state_length = 0)+labs(title = "{closest_state} expression")

想不想让你的数据动来动去,哈哈哈,不妨试试这个R包!

如果想学习更多有关该R包的情况,可以点击:https://github.com/thomasp85/gganimate。|||||作者:清华大学医学院 苑晓梅

猜你喜欢

10000+:菌群分析 宝宝与猫狗 梅毒狂想曲 提DNA发Nature Cell专刊 肠道指挥大脑

系列教程:微生物组入门 Biostar 微生物组  宏基因组

专业技能:学术图表 高分文章 生信宝典 不可或缺的人

一文读懂:宏基因组 寄生虫益处 进化树

必备技能:提问 搜索  Endnote

文献阅读 热心肠 SemanticScholar Geenmedical

扩增子分析:图表解读 分析流程 统计绘图

16S功能预测   PICRUSt  FAPROTAX  Bugbase Tax4Fun

在线工具:16S预测培养基 生信绘图

科研经验:云笔记  云协作 公众号

编程模板: Shell  R Perl

生物科普:  肠道细菌 人体上的生命 生命大跃进  细胞暗战 人体奥秘  

写在后面

为鼓励读者交流、快速解决科研困难,我们建立了“宏基因组”专业讨论群,目前己有国内外5000+ 一线科研人员加入。参与讨论,获得专业解答,欢迎分享此文至朋友圈,并扫码加主编好友带你入群,务必备注“姓名-单位-研究方向-职称/年级”。PI请明示身份,另有海内外微生物相关PI群供大佬合作交流。技术问题寻求帮助,首先阅读《如何优雅的提问》学习解决问题思路,仍未解决群内讨论,问题不私聊,帮助同行。

学习16S扩增子、宏基因组科研思路和分析实战,关注“宏基因组”

点击阅读原文,跳转最新文章目录阅读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1381528.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

让我们一起来看看可爱的猫咪吧

我想喜欢小猫咪的人&#xff0c;一定非常可爱和温柔吧 前言 这个视频中的小猫咪贼可爱&#xff0c;然后下面的那给进度条是只小猫咪走来走去的。 然后我就想可以拿进度条做点事情&#xff0c;一开始想搜一搜借鉴一下&#xff0c;但是根本没有这种高度自定义的。唉 经历 互联…

【人工智能】人类大脑中的神经元群体是如何相互作用,进而产生感知和行为的?

人类大脑中的神经元群体是如何相互作用,进而产生感知和行为的? 文章目录 人类大脑中的神经元群体是如何相互作用,进而产生感知和行为的?引言第一章:神经元基础1.1 细胞构成1.2 电信号传输1.3 神经递质及突触传递第二章:神经元群体的作用2.1 神经元网络2.2 网络拓扑2.3 神…

动图学 JavaScript 之:原型继承

前言 你是否曾思考为什么我们能使用 JS 中的一些内置属性和方法&#xff0c;比如 .length&#xff0c;.split()&#xff0c;.join()&#xff1f;我们并没有显式地声明它们&#xff0c;那么究竟它们从哪里来的呢&#xff1f;可不要说什么“那是 JS 中的魔法&#xff01;”。其实…

顺风车撑起100亿估值,嘀嗒是怎样“闷声发大财”的?

6月30日晚&#xff0c;滴滴“低调”挂牌纽交所&#xff0c;摘得国内“共享出行第一股”的桂冠&#xff0c;在今年轰轰烈烈的网约车企业上市浪潮中领跑。而曾对“共享出行第一股”跃跃欲试的嘀嗒出行&#xff0c;虽然在冲击IPO的路上起步最早&#xff0c;但上市之路却颇为忐忑&a…

嘀嗒出行IPO 会成为出行界的“拼多多”吗

出行界&#xff0c;都快忘了嘀嗒。 可以说&#xff0c;相比于行业老大滴滴&#xff0c;嘀嗒并不怎么亮眼。但是谁也没有想到&#xff0c;6年后&#xff0c;嘀嗒华丽的一个转身&#xff0c;就是在去IPO的路上。 闷声做事的嘀嗒真的值得IPO吗&#xff1f;此时IPO又暗藏什么玄机…

sklearn中的线性回归大家族

1 概述 1.1 线性回归大家族 回归是一种应用广泛的预测建模技术&#xff0c;这种技术的核心在于预测的结果是连续型变量。决策树、随机森林、支持向量机的分类器等分类算法的预测标签是分类变量&#xff0c;多以{0,1}来表示&#xff0c;而无监督学习算法&#xff08;如CPA、Km…

十二星座神话故事

对于西方的星座&#xff0c;绝大部分都有很多精彩的希腊神话故事。边看神话边记星座是一种非常好的方法。推荐对于爱好天文的孩子&#xff0c;可以购买一些希腊神话书籍。这样从最浅显的星座知识入手&#xff0c;讲述怎样观测、认识恒星&#xff0c;地球与天体的视运动&#xf…

主流计算机编程语言之父---集锦

主流计算机编程语言之父---集锦 收藏 1)J. Backus的FORTRAN语言 早期电脑都直接采用机器语言&#xff0c;即用“0”和“1”为指令代码来编写程序&#xff0c;难写难读&#xff0c;编程效率极低。为了方便编程&#xff0c;随即出现了汇编语言&#xff0c;虽然提高了效率&am…

26岁离开谷歌,女朋友一个建议助他开发出10亿美元App

作者&#xff1a;Alan Trapulionis 链接&#xff1a;https://entrepreneurshandbook.co/26-year-old-coder-built-a-1-billion-app-in-2-years-after-following-his-girlfriends-advice-c6f378db1fd1 前言 Kevin Systrom 沮丧地离开了谷歌。 Kevin 在谷歌担任产品经理近三年之久…

Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习

Python 基础 之 jupyter notebook 中机器学习的简单入门书写数字识别 demo 操作学习 目录

【机器学习实战】使用sklearn中的线性回归LinearRegression对加利福尼亚房价进行预测

1.数据集 特征值 共有20640条数据&#xff0c;8个特征。 目标值 2.代码实现 2.1 回归预测 from sklearn.datasets import fetch_california_housing as fch # 大数据集&#xff0c;需要下载&#xff0c;加利福尼亚房价数据集 from sklearn.model_selection import train_…

回归预测4:机器学习处理加利福尼亚房价数据集

目录 1 介绍2 工具箱导入3 导入数据 数据分析4 拆分标签和特征5 ocean_proximity特征编码6 划分训练集-测试集7 模型训练和验证 1 介绍 我们使用California Housing Prices数据集进行预测&#xff0c;数据集地址&#xff1a;https://download.csdn.net/download/ww596520206/8…

AgentBind--Deepneuralnetworksidentifysequencecontextfeaturespredictiveoftranscriptionfactorbinding

推荐度&#xff1a;⭐⭐⭐⭐⭐亮点 设计了一种机器学习构架AgentBind&#xff0c;可以识别和解释对于转录因子&#xff08;TF&#xff09;结合最重要的序列特征。与以往大多数研究结合基序的系统或程序不同&#xff0c;AgentBind着眼于基序附近的序列背景&#xff0c;并可以研究…

VGG16论文解读

VGGNET VGG16相比AlexNet的一个改进是采用连续的几个3x3的卷积核代替AlexNet中的较大卷积核&#xff08;11x11&#xff0c;7x7&#xff0c;5x5&#xff09;。对于给定的感受野&#xff08;与输出有关的输入图片的局部大小&#xff09;&#xff0c;采用堆积的小卷积核是优于采用…

机器学习 加利福尼亚房价预测

学习目标&#xff1a; 提示&#xff1a;导入包 例如&#xff1a; import pandas as pd import numpy as npfrom sklearn.datasets import fetch_california_housing from sklearn.model_selection import KFold, train_test_split from sklearn.metrics import mean_squared…

目前加尼福尼亚自动驾驶公司测试公司————20150529

获准在加州测试自动驾驶汽车的公司 科技公司和汽车制造商正在竞相开发能够自主驾驶&#xff0c;不需要人类干预的汽车。市场对于这类汽车的兴趣已经协助刺激了人工智能和汽车专业人士的需求。无人车开发是一个耗费资金的项目&#xff0c;这可能会让部分风险投资家望而却步。 Z…

Python学习-KNN预测加尼福尼亚房价

加尼福尼亚房价数据集与KNN 需要的几个Python库 import matplotlib.pyplot as plt from sklearn import datasets from sklearn.neighbors import KNeighborsRegressor from sklearn.cross_validation import train_test_split from sklearn.metrics import mean_squared_e…

梅尔加尼服务器状态,梅尔加尼服务器第二界闪光平原暴力竞走大赛

梅尔加尼服务器第二界闪光平原暴力竞走大赛 (2006-12-12 10:27:42) 主办方:艾泽拉斯皇家记者协会 协办方:帕兰萨斯(LM)/同心盟(BL) 公会 奖品提供:第九城市 服务器:二区梅尔加尼 时间:2006年12月17日 下午2点进场地 2.30预赛开始 比赛规则:http://blog.sina.com.cn/u/47d86f7f0…

车载Tbox-CAN终端数据采集实现方案

因工作关系有机会与一家做汽车数据采集公司的Tbox终端产品做数据对接。 这个产品通过can口与汽车总线交换数据&#xff0c;再将采集的数据打包通过4G以tcp报文发送到云端。云端通过解析、格式转换后保存到数据库。 本文介绍用nodejs实现tcp报文的解析&#xff0c;报文描述如下…

如何做好 PHP 项目文档管理?PHPer 开发的必备利器!

对于常年写 PHP 的老司机来说&#xff0c;PHPDoc 一定不会陌生&#xff0c;不过从1.3.0开始&#xff0c;更名为 phpDocumentor。它作为一个用 PHP 写的工具&#xff0c;主要作用是从你的源代码的注释中生成文档&#xff0c;因此在给你的程序做注释的过程&#xff0c;也就是你编…