?;鶊D(Sankey diagram)
爾云間? 一個(gè)專門做科研的團(tuán)隊(duì)
? ?

?;鶊D(Sankey diagram),即?;芰糠至鲌D,也叫?;芰科胶鈭D。它是一種特定類型的流程圖,圖中延伸的分支的寬度對應(yīng)數(shù)據(jù)流量的大小,比較適用于用戶流量等數(shù)據(jù)的可視化分析。因1898年Matthew Henry Phineas Riall Sankey繪制的“蒸汽機(jī)的能源效率圖”而聞名,此后便以其名字命名為“?;鶊D”。
感興趣的小伙伴可以去看看Charles Minard在1869年所作的拿破侖東征俄國的信息圖,用到的就是桑葚圖展示的哦。

那么桑基圖要怎么看?小果在這里為大家梳理一下!
(1)看線條的走向(2)看粗細(xì)的變化?(3)看節(jié)點(diǎn)間的比較
桑基圖主要由邊、流量和節(jié)點(diǎn)組成,其中邊代表了流動的數(shù)據(jù),流量代表了數(shù)據(jù)流動的具體數(shù)值,節(jié)點(diǎn)代表了不同的分類,邊的寬度與流量成比例,邊越寬,數(shù)值越大。

桑基圖可以運(yùn)用的場景主要有:
場景一:
miRNA和靶基因的關(guān)系。
場景二:
一個(gè)group包含多個(gè)基因,同一個(gè)基因的不同突變可能屬于多個(gè)group。像例圖一樣,展示高頻突變基因所處的分組。
場景三:
人群按性別、年齡、家族史等特征分組,展示不同分組得癌癥的規(guī)律。

下面是具體的代碼實(shí)戰(zhàn)部分:
###讀取數(shù)據(jù),查看數(shù)據(jù)
df <- read.table("sankey.txt",sep = "\t",row.names = 1,header = T)
head(df)
###install.packages("ggalluvial")
###加載R包
library(ggalluvial)
#定義顏色,后面從這里選顏色
mycol <- rep(c("#223D6C","#D20A13","#FFD121","#088247","#11AA4D","#58CDD9","#7A142C","#5D90BA","#029149","#431A3D","#91612D","#6E568C","#E0367A","#D8D155","#64495D","#7CC767"),3)
#格式轉(zhuǎn)換
UCB_lodes <- to_lodes_form(df[,1:ncol(df)],
?????????????????????????? axes = 1:ncol(df),
?????????????????????????? id = "Cohort")
dim(UCB_lodes)
?
head(UCB_lodes)
?
pdf("1sankey.pdf")
?
ggplot(UCB_lodes,
?????? aes(x = x, stratum = stratum, alluvium = Cohort,
?????????? fill = stratum, label = stratum)) +
? scale_x_discrete(expand = c(0, 0)) +
? geom_flow(width = 1/8) + #線跟方塊間空隙的寬窄
? geom_stratum(alpha = .9,width = 1/10) + #方塊的透明度、寬度
? geom_text(stat = "stratum", size = 3,color="black") + #文字大小、顏色
?#不喜歡默認(rèn)的配色方案,用前面自己寫的配色方案
? scale_fill_manual(values = mycol) +
xlab("") + ylab("") +
? theme_bw() + #去除背景色
? theme(panel.grid =element_blank()) + #去除網(wǎng)格線
? theme(panel.border = element_blank()) + #去除外層邊框
? theme(axis.line = element_blank(),axis.ticks = element_blank(),axis.text = element_blank()) + #去掉坐標(biāo)軸
? ggtitle("")+
? guides(fill = FALSE)
dev.off()
###還可以只選其中一部分列來畫,此處只畫第一列和第三列
UCB_lodes <- to_lodes_form(df[,c(1,3)],
?????????????????????????? axes = 1:2,
?????????????????????????? id = "Cohort")

結(jié)果圖展示
文末附代碼和數(shù)據(jù),關(guān)注小果,悄悄變強(qiáng)哦。

推薦閱讀
關(guān)注小果,小果將會持續(xù)為你帶來更多生信干貨哦。

生信果? 生信入門、R語言、生信圖解讀與繪制、軟件操作、代碼復(fù)現(xiàn)、生信硬核知識技能、服務(wù)器等原創(chuàng)內(nèi)容公眾號