熱圖可以實現“生信”領域的差異表達基因,展示在不同分組樣品中的表達水平;一般一列表示一個樣品,一行表示一個基因,其中的顔色表示的相對表達值。
實際上,熱圖還與“高大上”的芯片設計、機器學習有着密切的關系;畢竟原理相通,核心的東西隻有那麼“一套把戲”而已。
在芯片設計、機器學習領域,隻需要把表達的信息名稱對應上“芯片引腳”~“電平信号”或者“圖像噪聲”~“算法”,一樣可以實現!R最大的優勢就是數據信息可視化能力。
熱圖本質上就是聚類的可視化。在 R 中,基礎包 stats 提供了一個層次聚類的函數hclust,即 Hierarchical clustering 的縮寫。該函數的基本思路是:
太陽花圖(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)
數據集cc共有30351個數據點,在上圖中無法看出哪些數據點存在重疊?太陽花圖可以在有重疊的地方用一朵“向日葵”的花瓣數目來表示重疊數據的個數;下圖就可以實現對分散數據交叉重疊情況的比較。
sunflowerplot(cc[,3:4],seg.col='blue',cex=1.6,col='red')
圖中左上角數據點隻有上、下兩個花瓣,代表該數據點大于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)
sunflowerplot(rnorm(500),sample(aaa,500),digits=1,pch=19,cex=1.1,col='red',seg.col='blue',seg.lwd=2)
digits |
當number參數未被指定, 在計算重數之前y四舍五入到digits有效數字。 |
如果數據量不是太大,可用“軸須圖”的方式來顯示數據量的分布密度。
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語言繪制花瓣圖flower plot - 廬州月光 - 博客園
上圖對其中代碼的相關參數作了系統的調整,也調整了部分文本内容,還改變了顔色的顯示及圖形布局的設計;其實,隻要熟悉底層的繪圖指令,很快就能實現。
“圈圖”尤其适合“生信”中的基因表達;隻要安裝上circlize包,實現看似極為“高大上”的圈圖,也是分分鐘的事情。
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!