tft每日頭條

 > 生活

 > r語言森林圖怎麼畫

r語言森林圖怎麼畫

生活 更新时间:2025-01-31 01:18:36
熱圖不隻是差異基因表達,機器學習領域一樣使用

熱圖可以實現“生信”領域的差異表達基因,展示在不同分組樣品中的表達水平;一般一列表示一個樣品,一行表示一個基因,其中的顔色表示的相對表達值。

r語言森林圖怎麼畫(R實現熱圖太陽花圖)1

實際上,熱圖還與“高大上”的芯片設計、機器學習有着密切的關系;畢竟原理相通,核心的東西隻有那麼“一套把戲”而已。

在芯片設計、機器學習領域,隻需要把表達的信息名稱對應上“芯片引腳”~“電平信号”或者“圖像噪聲”~“算法”,一樣可以實現!R最大的優勢就是數據信息可視化能力

r語言森林圖怎麼畫(R實現熱圖太陽花圖)2

熱圖本質上就是聚類的可視化。在 R 中,基礎包 stats 提供了一個層次聚類的函數hclust,即 Hierarchical clustering 的縮寫。該函數的基本思路是:

  1. 将需要聚類的對象單獨作為一類 cluster;
  2. 根據算法(比如 complete linkage)将兩個最相似的 cluster 聚為一類;
  3. 重複 2 過程,直到所有 cluster 都聚為一類。

r語言森林圖怎麼畫(R實現熱圖太陽花圖)3


太陽花圖用來克服散點圖中數據點重疊問題

太陽花圖(sunflower plot),也稱為向日葵散點圖;太陽花圖是在特定的圖形位置上使用不同的字符。

library(car); cc<-Vocab; names(cc)

[1] "year" "sex" "education" "vocabulary"

plot(cc[,3:4],col=rainbow(22),cex=2,pch=17,las=1,col.axis='blue',ann=F,tck=0.01)

r語言森林圖怎麼畫(R實現熱圖太陽花圖)4

數據集cc共有30351個數據點,在上圖中無法看出哪些數據點存在重疊?太陽花圖可以在有重疊的地方用一朵“向日葵”的花瓣數目來表示重疊數據的個數;下圖就可以實現對分散數據交叉重疊情況的比較。

sunflowerplot(cc[,3:4],seg.col='blue',cex=1.6,col='red')

r語言森林圖怎麼畫(R實現熱圖太陽花圖)5

圖中左上角數據點隻有上、下兩個花瓣,代表該數據點大于10和小于10的位置各有一個數據;如果某點花瓣數量很多,表示該點位置前後左右重疊的數據量越大;藍色實心圓圈表示有很多很多的數據點。


随機數據的“太陽花”

aaa<-round(rnorm(100));aaa<-rep(aaa,5);aaa<-jitter(aaa,3);aaa

par(las=1,col.axis='lightblue',tck=0.01,ann=F)

sunflowerplot(1:500/500,sample(aaa,500),digits=1,pch=13,cex=1.1,col='red',seg.col='blue',seg.lwd=2)

r語言森林圖怎麼畫(R實現熱圖太陽花圖)6

sunflowerplot(rnorm(500),sample(aaa,500),digits=1,pch=19,cex=1.1,col='red',seg.col='blue',seg.lwd=2)

r語言森林圖怎麼畫(R實現熱圖太陽花圖)7

digits

當number參數未被指定, 在計算重數之前y四舍五入到digits有效數字。

如果數據量不是太大,可用“軸須圖”的方式來顯示數據量的分布密度。

r語言森林圖怎麼畫(R實現熱圖太陽花圖)8

hist(cc[1:290,4],prob=T,breaks=9,labels=T,col=rainbow(9),ann=F)

rug(jitter(cc[1:290,4],amount=0.7), col = "red")


花瓣圖充分展示分組信息

繪制venn圖最多支持5組數據,當組别數大于5時,venn圖即使能夠畫出來,看上去也非常複雜,不夠直觀;在實際的數據分析中,組别大于5的情況還是經常遇到的,這時就可以考慮用花瓣圖來進行數據的可視化。

花瓣圖中,所有樣本都有共同的信息,但是每個樣本也有獨有的信息;花瓣圖既美觀,展示的信息也很直觀。如下圖所示:

r語言森林圖怎麼畫(R實現熱圖太陽花圖)9

相關代碼參見:R語言繪制花瓣圖flower plot - 廬州月光 - 博客園

上圖對其中代碼的相關參數作了系統的調整,也調整了部分文本内容,還改變了顔色的顯示及圖形布局的設計;其實,隻要熟悉底層的繪圖指令,很快就能實現。


最高境界的“圈圖”的實現

“圈圖”尤其适合“生信”中的基因表達;隻要安裝上circlize包,實現看似極為“高大上”的圈圖,也是分分鐘的事情。

r語言森林圖怎麼畫(R實現熱圖太陽花圖)10

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved