日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2025/3/15 编程问答 13 豆豆
生活随笔 收集整理的這篇文章主要介紹了 gganimate|让你的图动起来!!! 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

這是ggplot中十分可愛(ài)的一個(gè)擴(kuò)增包,目的只有一個(gè),就是讓你的圖動(dòng)起來(lái)!就是醬紫!!

gganimate擴(kuò)展了ggplot2實(shí)現(xiàn)的圖形語(yǔ)法,包括動(dòng)畫(huà)描述。它通過(guò)提供一系列新的語(yǔ)法類來(lái)實(shí)現(xiàn)這一點(diǎn),這些類可以添加到繪圖對(duì)象中,以便自定義它應(yīng)該如何隨時(shí)間變化。

下面是他的parameter:

transition_*()定義了數(shù)據(jù)應(yīng)該如何展開(kāi)以及它與時(shí)間的關(guān)系。
view_*()定義位置比例應(yīng)如何沿動(dòng)畫(huà)更改。
shadow_*()定義如何在給定的時(shí)間點(diǎn)呈現(xiàn)來(lái)自其他時(shí)間點(diǎn)的數(shù)據(jù)。
enter_*()/ exit_*()定義新數(shù)據(jù)應(yīng)如何顯示以及舊數(shù)據(jù)在動(dòng)畫(huà)過(guò)程中應(yīng)如何消失。
ease_aes()定義了在過(guò)渡期間應(yīng)該如何進(jìn)行過(guò)渡。

舉個(gè)栗子!

#安裝輔助包,該包有兩個(gè)版本,已經(jīng)更新為最新版本,老版本在未來(lái)將不再支持。install.packages("gganimate")# 安裝開(kāi)發(fā)版 # 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')

加載時(shí)間是比較長(zhǎng)的,需要耐心等待哈!

Yet Another Example

首先查看一下數(shù)據(jù)格式吧,Gapminder是關(guān)于預(yù)期壽命,人均國(guó)內(nèi)生產(chǎn)總值和國(guó)家人口的數(shù)據(jù)摘錄。

library(gapminder) head(gapminder)#我們看一下數(shù)據(jù)格式

ggplot(gapminder, aes(gdpPercap, lifeExp, size = pop, colour = country)) + #點(diǎn)的大小和顏色分別由pop和country決定;geom_point(alpha = 0.7, show.legend = FALSE) +scale_colour_manual(values = country_colors) + #進(jìn)行數(shù)值之間的映射scale_size(range = c(2, 12)) + #設(shè)置繪圖符號(hào)大小scale_x_log10() + #連續(xù)數(shù)據(jù)位置的標(biāo)準(zhǔn)化facet_wrap(~continent) + #按照continent進(jìn)行分類# Here comes the gganimate specific bitslabs(title = 'Year: {frame_time}', x = 'GDP per capita', y = 'life expectancy') +transition_time(year) +ease_aes('linear')#指數(shù)據(jù)變化的狀態(tài),線性發(fā)展比較緩慢

哈哈哈,現(xiàn)在我們以腫瘤數(shù)據(jù)為例進(jìn)行演示一下:

我編了一組測(cè)試數(shù)據(jù),其中將腫瘤分為I,II,III型,IV型為control,然后分別顯示了再不同樣本中不同腫瘤分型下的部分基因的表達(dá)情況。

library(ggplot2) library(gganimate) #首先我們進(jìn)行數(shù)據(jù)的讀入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進(jìn)行分型,并畫(huà)出箱式圖

同樣對(duì)不同gene在各組中的分布情況進(jìn)行描述:

library(ggplot2) p <- ggplot(test,aes(x=subgroup,y=expression,fill=subgroup))+geom_boxplot()+geom_jitter()+theme_bw() p +facet_grid(.~gene)#按照gene對(duì)各個(gè)小組進(jìn)行分類

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

想不想讓你的數(shù)據(jù)動(dòng)來(lái)動(dòng)去,哈哈哈,不妨試試這個(gè)R包!

如果想學(xué)習(xí)更多有關(guān)該R包的情況,可以點(diǎn)擊:https://github.com/thomasp85/gganimate

撰文:May

校對(duì):生信寶典

你可能還想看

  • R語(yǔ)言 - 熱圖美化

  • R語(yǔ)言 - 線圖繪制

  • R語(yǔ)言 - 箱線圖(小提琴圖、抖動(dòng)圖、區(qū)域散點(diǎn)圖)

  • R語(yǔ)言 - 火山圖

  • R語(yǔ)言 - 富集分析泡泡圖

  • R語(yǔ)言 - 散點(diǎn)圖繪制

  • R語(yǔ)言 - 韋恩圖

  • R語(yǔ)言 - 柱狀圖

往期精品(點(diǎn)擊圖片直達(dá)文字對(duì)應(yīng)教程)

后臺(tái)回復(fù)“生信寶典福利第一波”或點(diǎn)擊閱讀原文獲取教程合集

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的gganimate|让你的图动起来!!!的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。