桑基圖怎么看怎么畫(附R代碼)

什么是晒保基圖

勺话拢基圖(Sankey diagram),即煞鞑#基能量分流圖酸些,也叫桑基能量平衡圖檐蚜。它是一種特定類型的流程圖魄懂,圖中延伸的分支的寬度對應數(shù)據(jù)流量的大小,比較適用于用戶流量等數(shù)據(jù)的可視化分析闯第。因1898年Matthew Henry Phineas Riall Sankey繪制的“蒸汽機的能源效率圖”而聞名逢渔,此后便以其名字命名為“桑基圖”乡括。

用一個故事來介紹一下伤嗬基圖:



這個非常著名的圖是Charles Minard在1869年所作的拿破侖東征俄國的信息圖智厌。Charles Minard是信息圖表的之父,他是信息圖領域的創(chuàng)始者盲赊。這張圖描繪的是拿破侖在1812到1813年進攻俄國的情況铣鹏。它的背景是一個真實的地圖,西邊是波蘭的邊境哀蘑,東邊是莫斯科诚卸。圖上那條主線的寬度代表拿破侖軍隊的人數(shù),黃色表示進攻路線绘迁,黑色表示撤退的路線: 他開始于42萬人合溺,在向莫斯科進軍的過程中喪失了很多人,到達莫斯科時只剩下10萬人缀台,而最后從莫斯科活著返回的只剩下1萬人棠赛。

為什么說這個圖好呢,因為除了主線的寬度之外膛腐,這張圖還告訴了你更多的東西睛约。畫面下面的折線圖告訴你當時的溫度,其中最高的點是0度哲身,最低到達過零下30度辩涝,回城的黑線周圍嗨標注了月份,可以看出勘天,拿破侖的軍隊在達打到莫斯科的時候已經(jīng)是將近十月分了怔揩,等到完全撤離俄國已經(jīng)是12月份了,如果你仔細觀察脯丝,會發(fā)現(xiàn)在撤退過程中他們路過了一條叫Studienska的河沧踏,軍隊人數(shù)在河兩岸出現(xiàn)了劇減,原來那個時候天氣寒冷巾钉,軍隊長促情況下淌水過河,于是在這條寒冷的河中凍死了很多人秘案。

根據(jù)Edward Tufte所總結的信息設計原則:

  • 這個圖讓顯示出了比較關系(Show comparisons, contrasts, differences)砰苍,比如軍隊人數(shù)的起始時候的寬度和結束時候的寬度的強烈對比,比如過那條河流的時候軍隊人數(shù)的劇烈的變化等等阱高。
  • 這個圖解釋了因果關系(Show causality, mechanism, structure, explanation)赚导,比如時間,溫度和軍隊人數(shù)的關系赤惊。
  • 這個圖有多個變量(Multivariate analysis)吼旧,1), 軍隊人數(shù)。 2), 地理的位置(經(jīng)度和緯度)3), 軍隊的行進方向未舟。 4), 溫度圈暗。 5), 時間掂为。

所有的這些信息都不是獨立存在的,他們結合在一起员串,將觀眾帶入當時的拿破侖的旅程勇哗,同時能讓人感受到無情的戰(zhàn)爭奪走人們生命的痛苦。

纱缙耄基圖怎么看
  • 線條的走向
  • 粗細的變化
  • 節(jié)點間的比較
繪制屬于自己的捎担基圖

現(xiàn)如今的可視化軟件行業(yè)如此發(fā)達,制作此類擅祓校基圖已絕非難事扰法,從最高端的JS庫(D3、Echarts毅厚、highchart)到主流的數(shù)據(jù)科學編程工具(R塞颁、Python等)亦或者人人都能上手的自助式BI工具(PowerBI、Tableau等)都可以勝任此項工作卧斟。

library(ggalluvial)
#install.packages("ggalluvial")
library(reshape2)
mydata<-read.table("igraph//otu_table_group.g.relative.xls",header = T,sep = "\t")
mydata<-head(mydata,n=10)
mydata<-mydata[,-length(colnames(mydata))]
mydata<-melt(mydata,variable.name="Group",value.name="Abundance")
head(mydata)

ggplot(data = mydata,
       aes(axis1 = Taxonomy, axis2 = Group,
           weight = Abundance)) +
  scale_x_discrete(limits = c("Taxonomy", "Group"), expand = c(.01, .05)) +
  geom_alluvium(aes(fill = Taxonomy)) +
  geom_stratum() + geom_text(stat = "stratum", label.strata = TRUE) +
  #theme_minimal() +
  #theme_tropical()
  ggtitle("Taxonomy abundance in each group")

我們可以把各個層級都畫出來殴边,這樣看的更具體:

library(reshape2)
library(ggalluvial)
library(tidyverse)
mydata<-read.table("igraph//otu_table_group.g.relative.xls",header = T,sep = "\t")
mydata<-head(mydata,n=10)
mydata<-separate(data = mydata, col = Tax_detail, into = c("k", "p","c","o","f","g"), sep = ";")
#mydata$Tax_detail=  gsub(";","\t",mydata$Tax_detail)

#mydata<-mydata[,-length(colnames(mydata))]

mydata<-melt(mydata,variable.name="Group",value.name="Abundance")
mydata$genus<-mydata$g
ggplot(data = mydata,
       aes(axis1 = k, axis2 = p,axis3 = c,axis4 = o,axis5 = f,axis6 = g,axis7 = Group,
           weight = Abundance)) +
  scale_x_discrete(limits = c("k", "p","c","o","f","g","Group","Abundance"), expand = c(.01, .05)) +
  geom_alluvium(aes(fill = genus)) +
  geom_stratum() + geom_text(stat = "stratum", label.strata = TRUE) +
  #theme_minimal() +
  #theme_tropical()
  #theme_matrix()
  theme_bvbw()
  ggtitle("Taxonomy abundance in each group")

最后,畫一個DNA:

#install.packages("riverplot")
library( riverplot )
plot.new()
par( usr= c( 0, 4, -2.5, 2.5 ) )
w <- 0.4
cols <- c( "blue", "green" )
init <- c( -0.8, -0.5 )
pos <- c( 1, -1 )
step <- 0.5
for( i in rep( rep( c( 1, 2 ), each= 2 ), 5 ) ) {
  curveseg( init[i], init[i] + step, pos[1], pos[2], width= w, col= cols[i] )
  init[i] <- init[i] + step
  pos <- pos * -1
}

兩種不同的信息可視化
Sankey diagram
百度百科||烧溆铮基圖
纱赴叮基圖有何作用,砂逡遥基圖又是怎么做出來的是偷?
riverplot繪制桑基圖
流量結構分布圖——赡汲眩基圖(Sankey)
Alluvial Diagrams in ggplot2
ggalluvial:沖擊圖展示組間變化蛋铆、時間序列和復雜多屬性alluvial diagram
BioSankey
Calypso

close.gif
關閉.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市放接,隨后出現(xiàn)的幾起案子刺啦,更是在濱河造成了極大的恐慌,老刑警劉巖纠脾,帶你破解...
    沈念sama閱讀 218,858評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件玛瘸,死亡現(xiàn)場離奇詭異,居然都是意外死亡苟蹈,警方通過查閱死者的電腦和手機糊渊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,372評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來慧脱,“玉大人渺绒,你說我怎么就攤上這事。” “怎么了宗兼?”我有些...
    開封第一講書人閱讀 165,282評論 0 356
  • 文/不壞的土叔 我叫張陵躏鱼,是天一觀的道長。 經(jīng)常有香客問我针炉,道長挠他,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,842評論 1 295
  • 正文 為了忘掉前任篡帕,我火速辦了婚禮殖侵,結果婚禮上,老公的妹妹穿的比我還像新娘镰烧。我一直安慰自己拢军,他們只是感情好,可當我...
    茶點故事閱讀 67,857評論 6 392
  • 文/花漫 我一把揭開白布怔鳖。 她就那樣靜靜地躺著茉唉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪结执。 梳的紋絲不亂的頭發(fā)上度陆,一...
    開封第一講書人閱讀 51,679評論 1 305
  • 那天,我揣著相機與錄音献幔,去河邊找鬼懂傀。 笑死,一個胖子當著我的面吹牛蜡感,可吹牛的內容都是我干的蹬蚁。 我是一名探鬼主播,決...
    沈念sama閱讀 40,406評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼郑兴,長吁一口氣:“原來是場噩夢啊……” “哼犀斋!你這毒婦竟也來了?” 一聲冷哼從身側響起情连,我...
    開封第一講書人閱讀 39,311評論 0 276
  • 序言:老撾萬榮一對情侶失蹤叽粹,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后却舀,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體虫几,經(jīng)...
    沈念sama閱讀 45,767評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年禁筏,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片衡招。...
    茶點故事閱讀 40,090評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡篱昔,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情州刽,我是刑警寧澤空执,帶...
    沈念sama閱讀 35,785評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站穗椅,受9級特大地震影響辨绊,放射性物質發(fā)生泄漏。R本人自食惡果不足惜匹表,卻給世界環(huán)境...
    茶點故事閱讀 41,420評論 3 331
  • 文/蒙蒙 一门坷、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧袍镀,春花似錦默蚌、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,988評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至设江,卻和暖如春锦茁,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背叉存。 一陣腳步聲響...
    開封第一講書人閱讀 33,101評論 1 271
  • 我被黑心中介騙來泰國打工码俩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鹉胖。 一個月前我還...
    沈念sama閱讀 48,298評論 3 372
  • 正文 我出身青樓握玛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親甫菠。 傳聞我的和親對象是個殘疾皇子挠铲,可洞房花燭夜當晚...
    茶點故事閱讀 45,033評論 2 355

推薦閱讀更多精彩內容

  • 1789年法國爆發(fā)了旨在推翻封建專制勢力的資產(chǎn)階級革命,不久拿破侖在法國稱帝寂诱。伴隨著拿破侖的上臺拂苹,法國的國力顯著增...
    路春深閱讀 6,294評論 2 20
  • 善鞍簦基圖是一種方便說明信息、資源流動和圖形丘喻,圖形中的分脯宿、合正如漂流的分叉與匯合,如可用于比較不同簇間關系泉粉,可以用來表...
    村狗兒閱讀 3,770評論 1 8
  • 這里连霉,古典的歌劇和現(xiàn)代的搖滾樂融為一體榴芳;高聳如云哥特式建筑和摩天大廈一起直插云霄。這里跺撼,曾是世界國土面積最大的國家...
    yoyoshxy閱讀 1,557評論 0 5
  • 一窟感、dubbo-springfox特性簡介 二、dubbo-springfox入門案例 三歉井、dubbo-sprin...
    原水寒閱讀 7,704評論 11 17
  • 他并不怕摔柿祈,這些年來,也摔過很多次哩至。但摔到地上躏嚎,畢竟還會疼。?如果有個人能接住他憨募,那就再好不過了紧索。 為一人而入紅塵...
    凌夜軒_a545閱讀 378評論 0 0