天天看點

R軟體輕松實作熱圖、太陽花圖、花瓣圖、圈圖——圈熱太陽花瓣

熱圖不隻是差異基因表達,機器學習領域一樣使用

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

R軟體輕松實作熱圖、太陽花圖、花瓣圖、圈圖——圈熱太陽花瓣

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

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

R軟體輕松實作熱圖、太陽花圖、花瓣圖、圈圖——圈熱太陽花瓣

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

  1. 将需要聚類的對象單獨作為一類 cluster;
  2. 根據算法(比如 complete linkage)将兩個最相似的 cluster 聚為一類;
  3. 重複 2 過程,直到所有 cluster 都聚為一類。
R軟體輕松實作熱圖、太陽花圖、花瓣圖、圈圖——圈熱太陽花瓣

太陽花圖用來克服散點圖中資料點重疊問題

太陽花圖(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軟體輕松實作熱圖、太陽花圖、花瓣圖、圈圖——圈熱太陽花瓣

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

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

R軟體輕松實作熱圖、太陽花圖、花瓣圖、圈圖——圈熱太陽花瓣

圖中左上角資料點隻有上、下兩個花瓣,代表該資料點大于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軟體輕松實作熱圖、太陽花圖、花瓣圖、圈圖——圈熱太陽花瓣

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

R軟體輕松實作熱圖、太陽花圖、花瓣圖、圈圖——圈熱太陽花瓣
digits 當number參數未被指定, x資料列在計算重數之前y四舍五入到digits有效數字。

如果資料量不是太大,可以在使用“軸須圖”的方式來顯示資料量的分布密度;

R軟體輕松實作熱圖、太陽花圖、花瓣圖、圈圖——圈熱太陽花瓣

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

lines(density(cc[1:290,4]),col='blue',lwd=3,lty=3)

花瓣圖充分展示分組資訊

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

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

R軟體輕松實作熱圖、太陽花圖、花瓣圖、圈圖——圈熱太陽花瓣

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

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

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

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

R軟體輕松實作熱圖、太陽花圖、花瓣圖、圈圖——圈熱太陽花瓣

繼續閱讀