本文來源:公眾號(hào)“生信寶典”
數(shù)模競(jìng)賽的論文里常常會(huì)遇到需要數(shù)據(jù)可視化的情況,因?yàn)閳D表能更直觀清晰的表述問題。評(píng)閱老師需要在短時(shí)間內(nèi)閱讀大量的論文,此時(shí)就需要簡(jiǎn)單易懂且漂亮的圖表來抓住老師的眼球。
首先從維基百科上搬出數(shù)據(jù)可視化的概念:
數(shù)據(jù)可視化是關(guān)于數(shù)據(jù)的視覺表現(xiàn)形式的研究;其中,這種數(shù)據(jù)的視覺表現(xiàn)形式被定義為一種以某種概要形式抽提出來的信息,包括相應(yīng)信息單位的各種屬性和變量。簡(jiǎn)單來說,數(shù)據(jù)可視化就是用圖形的方式來表征數(shù)據(jù)的規(guī)律。
首先要明確幾點(diǎn):
1.數(shù)據(jù)可視化從來不止是表層的東西,數(shù)據(jù)分析才是核心。就像一個(gè)人,不一定長(zhǎng)得漂亮人格就高尚,也不一定長(zhǎng)得不好看人格就低下。而應(yīng)該反過來,只有數(shù)據(jù)分析內(nèi)涵豐富、價(jià)值高,數(shù)據(jù)可視化才能內(nèi)容豐富、有價(jià)值。
2.在一個(gè)看臉的世界,只有把數(shù)據(jù)可視化做得漂亮才更能吸引別人的注意;只有把數(shù)據(jù)可視化做得簡(jiǎn)單易懂,他們才能理解數(shù)據(jù)分析的內(nèi)涵。
3.對(duì)于數(shù)據(jù)可視化,最重要的東西從來不是圖形、工具、配色這些套路性的東西,而在于創(chuàng)意和靈感。但創(chuàng)意和靈感的前提,還是要以實(shí)用為主,所以掌握套路還是很必要的。
本文旨在總結(jié)數(shù)據(jù)可視化基本套路,理解了本文的內(nèi)容,在此基礎(chǔ)上加上自己的創(chuàng)意,數(shù)據(jù)可視化部分就會(huì)變得比較亮眼。熟悉了套路怎么看,再結(jié)合專業(yè)知識(shí),就可以解釋可視化結(jié)果了。
常用圖形
散點(diǎn)圖
散點(diǎn)圖用來表征兩個(gè)(如果多個(gè)就分面,如上圖)數(shù)值型變量間的關(guān)系,每個(gè)點(diǎn)的位置(即x軸和y軸坐標(biāo))映射著兩個(gè)變量的值。當(dāng)然對(duì)于三個(gè)數(shù)值型變量,也有三維散點(diǎn)圖,不過用得不多。
氣泡圖
在散點(diǎn)圖的基礎(chǔ)上加一個(gè)維度,把各個(gè)點(diǎn)的面積大小映射一個(gè)新的變量,這樣不僅點(diǎn)的位置還有大小表示數(shù)據(jù)特征。
折線圖
把散點(diǎn)圖各個(gè)散點(diǎn)用折線連接起來就成了折線圖,當(dāng)然不僅僅只是為了好看,當(dāng)散點(diǎn)越多,折線就越平滑地趨近于曲線,能更加貼切地反映連續(xù)型變量的規(guī)律。
面積圖
把折線圖進(jìn)一步往坐標(biāo)軸投影就成了面積圖,本質(zhì)其實(shí)跟折線圖沒區(qū)別,只是看起來更加飽滿一點(diǎn)。
柱狀圖
柱狀圖是一種用得很廣泛的圖形,它表征分類型變量 vs 數(shù)值型變量的關(guān)系。如果分類型變量的每一個(gè)取值還能繼續(xù)分類,那么簡(jiǎn)單的柱狀圖就變成了復(fù)雜的柱狀圖,每一個(gè)類別僅由一根柱變成多根柱,多根柱可以串列,也可以并列。
值得一提的是,柱狀圖一般需要排序:如果分類型變量是有序的,按照它本身的順序排列即可;如果分類型變量無序,那么則根據(jù)數(shù)值型變量的大小進(jìn)行排序,使柱狀圖的高度單調(diào)變化。(排序的宗旨是直觀的表達(dá)出想展示的規(guī)律)
條形圖
只不過把柱狀圖坐標(biāo)旋轉(zhuǎn)一下,豎著的變成橫著的,這個(gè)可根據(jù)版面自由選擇。上圖示例就是串列的堆疊條形圖。
南丁格爾玫瑰圖
本質(zhì)還是柱狀圖,只不過把直角坐標(biāo)系映射成極坐標(biāo)系??雌饋肀戎鶢顖D更美觀。
瀑布圖
瀑布圖是柱狀圖的一種延伸,它一般表示某個(gè)指標(biāo)隨時(shí)間的漲跌規(guī)律,每一個(gè)柱狀也不都是從0開始的,而是從前一個(gè)柱狀的終點(diǎn)位置開始,這樣既反映了每一個(gè)時(shí)刻的漲跌情況,也反映了數(shù)值指標(biāo)在每一個(gè)時(shí)刻的值。
餅圖
餅圖的本質(zhì)仍是柱狀圖,只不過餅圖一般用來表示各個(gè)類別的比例,而不是絕對(duì)的數(shù)值,用角度來映射大小。
值得一提的是,因?yàn)橐粋€(gè)圓餅只有360度,如果類別太多了,這個(gè)餅會(huì)被切割得非常細(xì),不利于閱讀;這種情況下老老實(shí)實(shí)地用柱狀圖。
圓環(huán)圖
本質(zhì)就是餅圖,只不過把實(shí)心圓換成了空心的圓環(huán);如果清一色的餅圖太過單調(diào),可以考慮換個(gè)環(huán)形圖。
sunburst chart
sunburst chart看起來跟餅圖比較像,但比餅圖更復(fù)雜得多。它從中心向外輻射,每輻射一層就細(xì)分一層,用來表示多個(gè)變量多層之間的比例關(guān)系。
馬賽克圖
馬賽克圖比較復(fù)雜,與柱狀圖相比,它的分類變量就多了幾個(gè),而且還能實(shí)現(xiàn)交叉映射,所以比柱狀圖更抽象,更細(xì)化。
馬賽克圖隱含著大量的數(shù)據(jù)信息。例如:(1)從船員到頭等艙,存活率陡然提高;(2)大部分孩子都處在三等艙和二等艙中;(3)在頭等艙中的大部分女性都存活了下來,而三等艙中僅有一半女性存活;(4)船員中女性很少,導(dǎo)致該組的Survived標(biāo)簽重疊(圖底部的No和Yes)。繼續(xù)觀察,你將發(fā)現(xiàn)更多有趣的信息。關(guān)注矩形的相對(duì)寬度和高度,你還能發(fā)現(xiàn)那晚其他什么秘密嗎?
擴(kuò)展的馬賽克圖添加了顏色和陰影來表示擬合模型的殘差值。在本例中,藍(lán)色陰影表明,在假定生存率與船艙等級(jí)、性別和年齡層無關(guān)的條件下,該類別下的生存率通常超過預(yù)期值。紅色陰影則含義相反。一定要運(yùn)行該例子的代碼,這樣你可以真實(shí)感受下著色圖形的效果。圖形表明,在模型的獨(dú)立條件下,頭等艙女性存活數(shù)和男性船員死亡數(shù)超過模型預(yù)期值。如果存活數(shù)與船艙等級(jí)、性別和年齡層獨(dú)立,三等艙男性的存活數(shù)比模型預(yù)期值低。嘗試運(yùn)行example(mosaic),可以了解更多馬賽克圖的細(xì)節(jié)。
直方圖
直方圖看起來跟柱狀圖很像,但其實(shí)本質(zhì)并不一樣 (這一點(diǎn)需要注意)。直方圖用來表征一個(gè)數(shù)值型變量的分布,具體來說就是把這個(gè)連續(xù)型變量劃分成多個(gè)區(qū)間,然后統(tǒng)計(jì)各個(gè)區(qū)間的頻數(shù)。直方圖橫軸是數(shù)值型變量本身的值,縱軸是頻數(shù)。
概率密度曲線圖
概率密度曲線圖本質(zhì)與直方圖類似,不過縱軸不是頻數(shù)而是頻率。正如折線圖和面積圖一樣,概率密度曲線圖也可自由選擇要不要面積投影。這個(gè)圖太學(xué)術(shù)了,一般出現(xiàn)在數(shù)學(xué)教材中(比如正態(tài)分布……)。
雷達(dá)圖
很多游戲中的人物能力極向?qū)Ρ染褪且岳走_(dá)圖表示的。柱狀圖一般是一個(gè)分類型變量不同類別間的比較,雷達(dá)圖可以是多個(gè)數(shù)值不在同一個(gè)scale之下;更具體地說,柱狀圖一般是橫向比較,雷達(dá)圖既可以多個(gè)觀測(cè)之間的縱向比較,也可以是一個(gè)觀測(cè)在不同變量間的橫向比較。
值得一提的是,雷達(dá)圖如果用來橫向比較,需先把各個(gè)數(shù)值變量作歸一化處理。
箱線圖
箱線圖亦稱盒須圖,也是挺學(xué)術(shù)的一個(gè)圖。它用來表征各個(gè)數(shù)值型變量的分布狀況,每一條橫線代表分位數(shù),盒內(nèi)部的橫線代表中位數(shù),點(diǎn)代表異常值。
小提琴圖
小提琴圖本質(zhì)與直方圖一樣,都是表征數(shù)值型變量的分布,每一個(gè)小提琴的寬度代表它在該高度處的頻率范圍。
熱力圖
熱力圖一般以顏色來映射密度或者其他數(shù)值變量,一般來說,顏色最深的地方表示數(shù)據(jù)最集中。(比較常用,對(duì)于熱圖的解釋還需要看圖例的含義)
日歷圖
日歷圖是熱力圖的變種,它把每一個(gè)矩形重新排列成日歷的形狀,這樣可以方便地觀察一段時(shí)間內(nèi)每一天的數(shù)值特征。
地圖
地圖用來可視化地理數(shù)據(jù),這些數(shù)據(jù)一般由國家地理測(cè)繪部門提供,在一些網(wǎng)站上也能找到,常用的數(shù)據(jù)格式有shp、JSON、csv等。
地圖的繪制原理是基于大量的散點(diǎn),勾勒成曲線,再連接成多邊形——其中每一塊多代形代表一個(gè)地區(qū),可以是國家、省、市、區(qū)縣等。
地圖的應(yīng)用主兩有種情況:一是如上圖一樣以顏色填充每一個(gè)多邊形來映射一個(gè)指標(biāo),這種情況下地圖跟柱狀圖本質(zhì)相同,但是多了多邊形之間的位置關(guān)系;另一種是在地圖上疊加散點(diǎn)或者曲線,來表征各個(gè)點(diǎn)之間的地理位置。
地球圖
地圖是二維的,三維的就是地球圖。這種圖形一般是交互的,也就是說你可以用鼠標(biāo)實(shí)現(xiàn)地球的旋轉(zhuǎn)和縮放等操作。
值得一提的是,不要僅僅為了3D就使用地球圖,要看數(shù)據(jù)本身的情況。如果你的數(shù)據(jù)范圍本來就覆蓋全球,用地球圖很合適;但如果你的數(shù)據(jù)范圍小,就一個(gè)國內(nèi),甚至一個(gè)省市內(nèi)的,搞個(gè)地球圖就太浮夸,而且整個(gè)球上只有一個(gè)非常小的區(qū)域有數(shù)據(jù),是很不和諧的。
網(wǎng)絡(luò)圖
網(wǎng)絡(luò)圖的元素包含點(diǎn)和邊,邊分為無向邊、單向邊和雙向邊來表征點(diǎn)與點(diǎn)的連接關(guān)系,邊的粗細(xì)可以映射這種關(guān)系的強(qiáng)弱。
arc diagram
arc diagram也是一種網(wǎng)絡(luò)圖,只不過它把所有的節(jié)點(diǎn)一字排開,以弧線來表示邊。這樣看起來藝術(shù)感更強(qiáng),適合于節(jié)點(diǎn)較多的網(wǎng)絡(luò)關(guān)系可視化。
和弦圖
和弦圖一般用來表示雙向的網(wǎng)絡(luò)關(guān)系(比如AB兩個(gè)城市相互流入流出了多少人),數(shù)據(jù)結(jié)構(gòu)一般為鄰接矩陣。當(dāng)節(jié)點(diǎn)很多的時(shí)候,各種弧線交叉得就非常密密麻麻,這種情況下,要么交互,要么考慮別的圖形。
hierarchical edge bundling
hierarchical edge bundling也表示節(jié)點(diǎn)間的網(wǎng)絡(luò)關(guān)系,不過它把邊扭曲成曲線,這樣就適合節(jié)點(diǎn)比較多的可視化。
矩形樹圖
矩形樹圖本質(zhì)就是決策樹的可視化,只不過排成矩形。它也是把各個(gè)變量層層細(xì)分,這一點(diǎn)跟sunburst圖類似。當(dāng)變量比較多的時(shí)候,做成交互可縮放的形式更合適。
平行坐標(biāo)圖
平行坐標(biāo)圖的優(yōu)點(diǎn)是可以把多個(gè)變量并形排開,把每一個(gè)記錄都以折線連接上。這樣當(dāng)數(shù)據(jù)量大的時(shí)候,其實(shí)可以很方便地觀察各個(gè)變量的分布情況。
?;鶊D
?;鶊D看起來跟平行坐標(biāo)圖有點(diǎn)像,但含義不一樣。?;鶊D主要的用法是表征流量在各個(gè)層級(jí)的流動(dòng)關(guān)系,上一層如何向下一層分散,下一層如何由下一層匯聚。
漏斗圖
互聯(lián)網(wǎng)運(yùn)營(yíng)有一個(gè)很重要的概念就是層級(jí)轉(zhuǎn)化,這個(gè)每層的轉(zhuǎn)化率用漏斗圖來可視化,形神俱佳。如果兩層之間的寬度近似,表征該層的轉(zhuǎn)化率高;如果兩層之間的寬度一下子減小了很多,表示轉(zhuǎn)化率低。
儀表盤
儀表盤的觀賞性大于實(shí)用性,實(shí)際上它的功能很簡(jiǎn)單,就是表征一個(gè)數(shù)值型變量在最小值和最大值之間的什么分位。
象柱形圖
象柱形圖其實(shí)就是柱形圖,只不過把柱子換成了其它的圖形。如果數(shù)據(jù)本身有比較具體、形象的含義和背景,那么用象柱形圖是一種比較新穎的選擇。
主題河流圖
主題河流圖好看,但不好解釋,如果不是交互式的,最好不要用。它一般是把多個(gè)類別隨時(shí)間的變化數(shù)據(jù)堆疊起來,表征隨時(shí)間變化的趨勢(shì)。
詞云圖
詞云圖即是對(duì)詞匯的頻數(shù)進(jìn)行可視化,一個(gè)詞越大它出現(xiàn)的次數(shù)就越多,一般與文本挖掘配合使用。
在實(shí)際的數(shù)據(jù)可視化中,往往不是孤立地用一個(gè)基本圖形,把多個(gè)圖形組合、鄰接,能交叉對(duì)比出更多的信息。比如在柱狀圖上疊加折線圖,在地圖上疊加散點(diǎn)圖,把多個(gè)柱狀圖放在一起對(duì)比等等。
記住數(shù)據(jù)可視化展現(xiàn)信息是第一位的,好看倒是其次。
圖形語法
看了以上這么多圖形,對(duì)可視化圖形也有了一個(gè)感性的認(rèn)識(shí)。現(xiàn)在粗略地介紹一下圖形語法,想學(xué)習(xí)全面的圖形語法還需去專門學(xué)習(xí)。
1.數(shù)據(jù)(data):數(shù)據(jù)才是圖形的靈魂,這點(diǎn)無需解釋。
2.幾何對(duì)象(geom):也就是圖形本身,這是可視化的外形。根據(jù)數(shù)據(jù)特征,選擇最合適的圖形。
3.映射(mapping):映射即是把數(shù)據(jù)和圖形給連接起來。映射什么數(shù)據(jù)變量,它是連續(xù)的還是離散的?
4.標(biāo)度(scale):這個(gè)是從數(shù)據(jù)中剝離,但是控制數(shù)據(jù)如何映射到圖形上的屬性。圖形中用什么通道來映射?常用的有顏色、長(zhǎng)度、面積、形狀、透明度等通道。
5.坐標(biāo)系(coord):坐標(biāo)系不一定非得是直角笛卡爾坐標(biāo)系,比如對(duì)于地圖并不適合,所以要做專門的投影操作。轉(zhuǎn)換坐標(biāo)系也有造成不同的視覺效果,比如把柱狀圖的坐標(biāo)系轉(zhuǎn)換成極坐標(biāo)系就變成了玫瑰圖。
6.統(tǒng)計(jì)變換(stat):對(duì)數(shù)據(jù)進(jìn)行常規(guī)的統(tǒng)計(jì)操作,不過也可以先把數(shù)據(jù)處理好,可視化的時(shí)候就不再做變換。
7.分面(facet):如果圖形維度較高,并不是一張圖能說明的,那么就分面處理。分面實(shí)際上是多加了一個(gè)維度,就像一頁紙和一頁書的區(qū)別。
8.位置(position):一般來說圖形各個(gè)元素的位置是由數(shù)據(jù)決定的,不過在不影響分析的前提下為了視覺美觀也可以做一些微調(diào)。比如有的散點(diǎn)圖只看它在y軸的高度,這個(gè)時(shí)候就可以在x軸上加擾動(dòng),沒必要很多點(diǎn)都擠在一起。
掌握了圖形語法,對(duì)理解可視化的本質(zhì),構(gòu)思圖形屬性很有幫助;只有掌握了圖形語法,才能真正自由地去創(chuàng)造數(shù)據(jù)可視化,而不僅僅只是往模板里套數(shù)據(jù)。