資料視覺化之美:經典案例與實踐解析
本文來自作者在GitChat(ID:GitChat_Club)上的精彩分享,CSDN獨家合作釋出。
隨著DT時代的到來,傳統的統計圖表很難對複雜資料進行直觀地展示。這幾年資料視覺化作為一個新研究領域也變得越來越火。成功的視覺化,如果做得漂亮,雖表面簡單卻富含深意,可以讓觀測者一眼就能洞察事實併產生新的理解。視覺化(visualization)和可視效果(visual)兩個詞是等價的,表示所有結構化的資訊表現方式,包括圖形、圖表、示意圖、地圖、故事情節圖以及不是很正式的結構化插圖。
基本的視覺化展現方式,如條形圖、折線圖、餅圖、雷達圖可以很容易通過各種軟體(如Excel)容易生成,這些方法是常見視覺化問題的良好且強大的解決方案。然而,使用這些方法的最佳方式侷限於一些特定的資料型別,而且其標準型和普遍性意味著它們基本無法達到新穎性。如果對地理空間資料、社會網路關係、多維資料進行視覺化,直觀地傳遞資料期望表達的資訊是需要特定的圖表型別來展示。
讓我們一起來看幾個經典的視覺化,觀測它們是如何充分利用其源資料結構的。
1. “美國大選”資料視覺化
在美國大選期間,美國媒體做了不少與之相關的資料報道,讓我們來回顧一下,他們是如何將美國大選的資料視覺化的吧!
下圖為各洲“選舉人票”的佔比情況。作者設計了兩種表現方法,一是以“選舉人票”的分佈做為底圖,一是直接以美國地圖作為底圖。除此圖上方雙方選舉人票總體數量對比外,滑鼠移至各洲上方還能顯示各洲“選舉人票”數量及對希拉里與特朗普的支援比例。
關於第三方選舉人影響的情況(在只有兩種選擇和有四個選舉人的情況下,選民的態度又是怎樣呢?)
特朗普的粉絲更多的是公立學校出身,而希拉里的則大都為精英階層。
希拉里的粉絲大都較為“書生氣”,使用與書籍相關的詞彙,其中有很多被認證為教授或博士;而特朗普的粉絲更加喜歡流行文化,他們可能同時是流行歌手的粉絲,也更加關注球類運動等。
2. 社會關係視覺化
社會網路分析(Social Netwrok Analysis,SNA)是在傳統的圖與網路的理論之上對社會網路資料進行分析的方法。隨著人類進入了移動網際網路時代,社會網路資料成了重要的資料資源。SNA的本質是利用各樣本間的關係來分析整體樣本的群落現象,並分析樣本點在群落形成中的作用以及群落間的關係。
近幾年手機端網遊越來越重視遊戲使用者社交性設計。這款遊戲的玩法設計特別強調強社交性:使用者可以在遊戲內組建家族,家族成員有不同的職務等級,使用者也可以在遊戲內給好友贈送道具。我們從資料庫中收集抽取了部分使用者的家族資料(Nodes)和好友溝通資料(Links)。其中Nodes資料集包括Id(使用者ID)、Label(使用者名稱稱)、Group(所屬家族)、Level(等級)的資訊;Links資料集包括Source(發起方)、Target(接收方)和Weight(鬥氣數量)資訊。
從網路圖可以看出,不同家族的成員基本緊密聯絡在一起,並通過一些關鍵成員與其他家族成員聯絡。例如我們發現右下角的那個社群的成員先通過user1使用者、再通過user12使用者跟其他社團成員聯絡在一個大網路圖中。
我們也可以用Gephi軟體快速繪製社會網路圖,並對其進行美化。
3. 地理資訊視覺化
在第一個例子中,我們已經見識到了地理資訊視覺化的魅力。接下來我們簡單瞭解下如何利用Remap包快速繪製可互動的地圖資料視覺化。目前託管在github,https://github.com/lchiffon/REmap。
百度遷徙圖是近年來非常流行的一種地理資訊視覺化,可以通過連線動態檢視人口流向。此處給大家繪製一幅動態航班圖的地理資訊視覺化圖,大家點選連結(http://langdawei.com/REmap/REmapExamples/Nanchang/html/demo1.html)可檢視動態效果。
也可以利用Remap快速實現未來天氣預報。
還可以把一些各地舉行的會議事件在地圖上進行視覺化展示,下圖是2015年中國R語言會議在各個城市舉行的視覺化展示(動圖連結:http://langdawei.com/REmap/REmapExamples/Nanchang/html/7COS.html)。
城市熱力圖也是近年來非常流行的一種地理資訊視覺化方式,通過顏色的深淺表示不同地區的實際數值大小(動圖連結:http://langdawei.com/REmap/REmapExamples/Nanchang/html/1GDP.html)。
通過以上的幾個小例子,相信大家已經驚歎於上面的視覺化效果,給人眼前一亮、耳目一新的感覺。以上視覺化並未運用到很高深的技術,如果你也掌握以下一些視覺化知識,也能繪製出以上圖表的效果。接下來,就給大家介紹幾個常用的互動資料視覺化手段:D3、Echarts和R(R是一款資料分析挖掘軟體,但是其擁有強大的視覺化功能,並能整合D3、Echarts相簿,實現互動繪圖)。
1. D3(https://d3js.org/)
D3 是最流行的視覺化庫之一,它被很多其他的表格外掛所使用。它允許繫結任意資料到DOM,然後將資料驅動轉換應用到Document中。你可以使用它用一個數組建立基本的HTML表格,或是利用它的流體過度和互動,用相似的資料建立驚人的SVG條形圖。
比如D3可以非常容易地繪製互動桑基圖。桑基圖(Sankey diagram),即桑基能量分流圖,也叫桑基能量平衡圖。它是一種特定型別的流程圖,圖中延伸的分支的寬度對應資料流量的大小,通常應用於能源、材料成分、金融等資料的視覺化分析。桑基圖最明顯的特徵就是,始末端的分支寬度總和相等,即所有主支寬度的總和應與所有分出去的分支寬度的總和相等,保持能量的平衡(動圖連結:https://bost.ocks.org/mike/sankey/)。
可以通過D3對Sunburst Partition視覺化探索。通過解析布點獲得的使用者行為路徑資料,我們可以用最簡單與直接的方式將每個使用者的事件路徑點選流資料進行統計,並用資料視覺化方法將其直觀地呈現出來。 D3.js是當前最流行的資料視覺化庫之一,我們可以利用其中的Sunburst Partition來刻畫使用者群體的事件路徑點選狀況。從該圖的圓心出發,層層向外推進,代表了使用者從開始使用產品到離開的整個行為統計;Sunburst事件路徑圖可以快速定位使用者的主流使用路徑。通過提取特定人群或特定模組之間的路徑資料,並使用Sunburst事件路徑圖進行分析,可以定位到更深層次的問題。靈活使用Sunburst路徑統計圖,是我們在路徑分析中的一大法寶(動圖連結:https://bl.ocks.org/mbostock/4063423)。
2.ECharts(http://echarts.baidu.com/)
ECharts,縮寫來自Enterprise Charts,商業級資料圖表,一個純Javascript的圖表庫,可以流暢的執行在PC和移動裝置上,相容當前絕大部分瀏覽器(IE6/7/8/9/10/11,chrome,firefox,Safari等),底層依賴輕量級的Canvas類庫ZRender,提供直觀,生動,可互動,可高度個性化定製的資料視覺化圖表。創新的拖拽重計算、資料檢視、值域漫遊等特性大大增強了使用者體驗,賦予了使用者對資料進行挖掘、整合的能力。
ECharts 3還新增更多圖表型別,更好的滿足不同資料的處理需求 更多的搭配方案讓你的資料呈現方式更個性和完美。
比如地圖資訊視覺化:
動圖連結:http://echarts.baidu.com/demo.html#lines-airline
利用ECharts繪製桑基圖。
3. R(https://www.r-project.org/)
R語言是一套開源的資料分析解決方案,幾乎可以獨立完成資料處理、資料視覺化、資料建模及模型評估等工作,而且可以完美配合其他工具進行資料互動。5) R語言擁有頂尖的製圖功能。不僅有 lattcie包、ggplot2包對複雜資料進行視覺化,更有rCharts包、recharts包、plotly包實現資料互動視覺化,甚至可以利用功能強大的shiny包實現R與web整合部署,構建網頁應用,幫助不懂CSS,HTML的使用者能利用R快速搭建自己的資料分析APP應用。
比如我們可以繪製動態互動的氣泡圖,通過下面的時間軸播放動態檢視不同年份的氣泡情況。
也可以利用networkD3包呼叫D3.js庫,繪製社會網路圖和桑基圖。
前文我們已經瞭解了幾種常用的資料視覺化技術。接下來,讓我們一起來學習下建立有效的視覺化的步驟。我們通常會按照下述的幾個關鍵步驟進行:
-
你有什麼資料?資料有哪些分類?
-
關於資料你想了解什麼?
-
應該使用哪種視覺化方式?
-
能夠進行視覺化的工具有哪些?
-
透過視覺化你看見了什麼,有什麼意義?
最後,複雜高維資料無法用單一的靜態圖表進行直觀地展示,因此需要藉助視覺化手段讓資料動起來,更好地發現數據價值。比如說有不同組別的資料,我們想檢視各組別間的資料和總計時,此時就可以通過互動式探索的形式進行展示。
還可以結合自己掌握的資料分析和視覺化技術,搭建資料視覺化平臺,從而實現智慧BI的視覺化功能。比如說,我們不需要具備開發能力,利用R工具的shiny包可以快速搭建資料視覺化原型。下面這個例子(https://www.showmeshiny.com/global-terrorism/)就是一個通過shiny包結合視覺化技術實現的一個視覺化平臺。
作者:Daniel謝佳標,樂逗遊戲挖掘團隊負責人,資深R語言使用者,業界知名講師,多本專業圖書的作者。閱讀原文檢視交流實錄。