首页 > 其他分享 >gganimate|让你的图动起来!!!

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

时间:2023-04-21 12:36:00浏览次数:38  
标签:aes gganimate transition 起来 library 图动 ggplot2 geom


这是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 code
  transition_states(
    gear,
    transition_length = 2,
    state_length = 1
  ) +
  enter_fade() +
  exit_shrink() +
  ease_aes('sine-in-out')

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

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

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

gganimate|让你的图动起来!!!_人工智能_03

Yet Another Example

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

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

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

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 bits
  labs(title = 'Year: {frame_time}', x = 'GDP per capita', y = 'life expectancy') +
  transition_time(year) +
  ease_aes('linear')#指数据变化的状态,线性发展比较缓慢

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

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

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

我编了一组测试数据,其中将肿瘤分为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)

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

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

gganimate|让你的图动起来!!!_数据可视化_08

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

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

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

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

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

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

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

如果想学习更多有关该R包的情况,可以点击:https://github.com/thomasp85/gganimate

撰文:May

校对:生信宝典

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

标签:aes,gganimate,transition,起来,library,图动,ggplot2,geom
From: https://blog.51cto.com/u_16077014/6212519

相关文章

  • 火山引擎 DataTester:让企业“无代码”也能用起来的 A/B 实验平台
     更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群当数字化变革方兴未艾,无代码正受到前所未有的关注。Salesforce的数据显示,52%的IT部门表示,公司内部IT相关的技能差距是一个大问题,优秀的开发人员难找且成本高昂,而“无代码”能让编码技能有......
  • 火山引擎 DataTester:让企业“无代码”也能用起来的 A/B 实验平台
    更多技术交流、求职机会,欢迎关注字节跳动数据平台微信公众号,回复【1】进入官方交流群 当数字化变革方兴未艾,无代码正受到前所未有的关注。Salesforce的数据显示,52%的IT部门表示,公司内部IT相关的技能差距是一个大问题,优秀的开发人员难找且成本高昂,而“无代码”能让编码技......
  • STM32启动分析之main函数是怎样跑起来的
    1、MDK目标文件1)MDK中C程序编译后的结果,即可执行文件数据分类:RAMZIbss存储未初始化的或初始化为0的全局变量和静态变量heap堆,系统malloc和free操作的内存stack栈,存储函数临时局部变量RWdata已经初始化且不为0的全局变量和静态变量FLASHROtext代码段,C......
  • 前端常用/不常用插件【想起来才会去更新】
    maptalks支持2d/3d地图渲染及操作,maptalks可支持1w左右图形渲染(再多了就会有一点点卡,和电脑性能也有关系)官网:www.maptalks.org 组件中的组件maptalks.three:可支持three及一些简单数据样式,具体的还没用过maptalks.snap:绘制图形可贴边操作maptalks.arcgistilelayerarcgis......
  • 让坦克动起来 3
              要用方法必须实现set和get的方法       ......
  • ES2023来了, 赶紧卷起来
    前言ES2023是ECMAScript(即JavaScript)的下一个主要版本,它将在2023年发布。在这篇博客中,我将介绍一些可能会包含在ES2023中的新功能和改进。PipelineOperatorPipelineOperator(管道操作符)是一种新的语法,可以使链式函数调用更加简洁、易于阅读。它允许你通过把函数调用作为管道操......
  • 「刷起来」Go必看的进阶面试题详解
    勤学如春起之苗,不见其增日有所长;辍学如磨刀之石,不见其损日有所亏。本文的重点:逃逸分析、延迟语句、散列表、通道、接口。1.逃逸分析逃逸分析是Go语言中的一项重要优化技术,可以帮助程序减少内存分配和垃圾回收的开销,从而提高程序的性能。下面是一道涉及逃逸分析的面试题及其详......
  • 英雄联盟比赛选手的六芒星能力图动画是如何制作的?
    最近,在看LPL比赛的时候,看到这样一个有意思的六芒星能力图动画:今天,我们就来使用纯CSS实现这样一个动画效果!实现背景网格对于如下这样一个背景网格,最好的方式当然肯定是切图,或者使用SVG路径。如果一定要使用CSS,勉强也能做,这就涉及了不规则图形边框效果,我们有一些方式可以实现,......
  • 逆向——浮点数的表示,遇到了就去在线查吧,还原起来比较难受
    第二节2.5数据类型与存储 浮点数这玩意自己去在线转换下就行了: http://www.styb.cn/cms/ieee_754.php     详细:         第二节2.6浮点数的存法记住知识点:1、小数点左移,指数部分:指数减1的二进制数  2、小数点右移,指......
  • 《程序是怎样跑起来的》读书笔记1——对程序员来说CPU是什么
    一丶什么是程序程序是指令和数组的组合体,如:print("你好世界"),其中print是指令,你好世界是数据。CPU能直接识别和执行的只有机器语言,使用C,java这种高级语言编写的程序需要编译转换后才可以运行。二丶CPU的内部结构CPU即中央处理器,相当于计算机的大脑,内部由许多晶体管构成,负责解......