淺談數據可視化

2021-01-12 嘉數匯
前段時間,參加了SODA上海開放數據創新應用大賽。我們隊伍為阿爾戈,是希臘神話中搭載英雄的戰艦。我主要進行了少量數據處理和系統可視化部分,在這個過程中,覺得數據可視化是一個非常迷人的話題,這過程中也了解了很多相關的資料,學習了一些基礎的工具,在這裡分享給大家,也是為自己做一個整理和記錄。


1、什麼是數據可視化?


數據可視化,是利用計算機圖形學和圖像處理技術,將數據轉換為圖形或者圖像在屏幕上顯示出來進行交互處理的理論方法和技術。當然這是最基本的理解,進一步來說,數據可視化毫無疑問是基於數據的,我們很幸運地處於這樣一個讓我們興奮的時代,數據科學讓我們越來越多地從數據中發現人類社會中的複雜行為模式,以數據為基礎的技術決定著人類的未來,但並非是數據本身改變了我們的世界,起決定作用的是我們可用的知識。大數據已經改變了我們生活工作的方式,也對我們的思維模式帶來影響。隨著體量多,類型複雜的大數據更加接近我們,傳統的數據處理方法顯然無法適應,而數據可視化是一種能很好展示大數據,處理大數據的方法。同時現在隨著圖形圖像處理的快速發展,渲染引擎提高,可視化能更好的使用。當然,數據可視化不只是只各種工具,新穎的技術,同時作為一種表達數據的方式,它是對現實世界的抽象表達。它像文字一樣,為我們講述各種各樣的故事。


2、為什麼要進行數據可視化?


(1)我們利用視覺獲取的信息量,遠遠比別的感官要多得多

     

如圖所示,視覺器官是人和動物利用光的作用感知外界事物的感受器官,光作用於視覺器官,使其感受細胞興奮,其信息經過視覺神經系統加工後產生視覺。通過視覺,人和動物感知到畫面的大小,明暗,顏色,變化趨勢,人的知識中至少百分十八十以上的信息經過視覺獲得,所以,數據可視化可以幫助我們更好的傳遞信息,畢竟人對視覺獲取的信息比較容易。



(2)數據可視化能夠幫助我們對數據有更加全面的認識


對該解釋有一個經典的例子。 F. J. Anscombe 在1973年在他的一篇論文 "Graphs in Statistical Analysis"中分析散點圖和線性回歸的關係裡面提到圖像表示對數據分析的重要性。他用了下面這個例子,如下有四組數據:


對這四組數據進行簡單的數據分析,每組數據有變量X和Y,我們使用常用的統計算法去分析這四組數據,會發現這四組數據擁有相同的統計值:


顯然,按照傳統的統計分析方法,我們無法找出這四組數據的區別,但是如果採用可視化的方法:

第一租數據圖告訴我們,x 和 y 有week linear relation。

第二組數據圖告訴我們, x 和 y 有curve regression relation。

第三組數據圖告訴我們, x 和 y 有strong  linear relation 而且還有一個異常點。

第四組數據圖可以看書橫坐標數據集中在一起,而且也有一個異常值。


我們用了簡單的圖表對比以後,就會發現實際上這些在用圖像表示出來後,有完全不一樣的故事。


(3)數據可視化能夠在小空間中展示大規模數據

如圖,每一個數據變成一個點,數據間關係通過線段連接,大量的數據能映射到非常小的一張圖片上。



(4)人類大腦在記憶能力的限制


人類的記憶能力是有限的,我們不可能記住所有的數據,單純地記憶數據特診對我們來說也是不小的挑戰。俗話說的好,百聞不如一見。如果能夠將數據總結到一張圖表中,我們通過圖像記憶,能更好地幫助我們記憶。

 

3、數據可視化的原材料


基於數據的可視化組件可以分為四種:視覺暗示、坐標系、標尺以及背景信息。不論在譜圖的什麼位置,可視化都是基於數據和這四種組件創建的。有時它們是顯式的,而有時它們則會組成一個無形的框架。這些組件協同工作,對一個組件的選擇會影響到其他組件。


(1)視覺暗示


可視化最基本的形式就是簡單地把數據映射成彩色圖形。它的工作原理就是大腦傾向於尋找模式,你可以在圖形和它所代表的數字間來回切換。這一點很重要。你必須確定數據的本質並沒有在這反覆切換中丟失,如果不能映射回數據,可視化圖表就只是一堆無用的圖形。


(2)坐標系


編碼數據的時候,總得把物體放到一定的位置。有一個結構化的空間,還有指定圖形和顏色畫在哪裡的規則,這就是坐標系,它賦予 XY 坐標或經緯度以意義。有幾種不同的坐標系,一下三種坐標系幾乎可以覆蓋所有的需求,它們分別為直角坐標系(也稱為笛卡爾坐標系)、極坐標系和地理坐標系。


(3)標尺


坐標係指定了可視化的維度,而標尺則指定了在每一個維度裡數據映射到哪裡。標尺有很多種,你也可以用數學函數定義自己的標尺,但是基本上不會偏離這三種標尺,分別為數字標尺、分類標尺和時間標尺。


(4)背景信息


背景信息(幫助更好地理解數據相關的 5W 信息,即何人、何事、何時、何地、為何)可以使數據更清晰,並且能正確引導讀者。至少,幾個月後回過頭來再看的時候,它可以提醒你這張圖在說什麼。有時背景信息是直接畫出來的,有時它們則隱含在媒介中。


4、數據可視化過程

你在分析中所採取的具體步驟會隨著數據集合項目的不同而不同,但在探索數據可視化時,總體而言應該考慮以下四點:

擁有什麼數據?

關於數據你想了解什麼?

應該使用哪種可視化方式?

你看見了什麼,有意義嗎?


(1)你擁有什麼數據?


這一步常見的錯誤是先形成視覺形式,然後再找數據。其實應該反過來,先有數據,在進行可視化。通常獲得需要的數據是最困難,耗時最多的一步。在本次比賽中,我們得到了大量的異構數據。為了之後可視化,需要對數據進行整理,這裡我們花費了大量的時間。數據可視化是基於數據的,所以首先我們需要明確自己擁有的數據,並掌握必要的數據處理方法。


(2)關於數據,你想了解什麼?


數據可視化主要有兩個用途:一個是用於講故事,一個是用於探索。往往當我們有一個包含數以千計甚至數個百萬觀察結果的數據集時,我們「淹沒在信息海洋中」,不知道從哪裡開始才好。為了避免這種情況的發生,你得學會遊泳。我們要做的就是提出與數據有關的問題,讓好奇心來引導你。針對問題,回答得越具體,方向就越明確。你可能想知道數據中最好的和最差的各是什麼,這時候,你會研究排名;如果有多個變量,就要決定什麼是有好處的,什麼是不好的。如果有時序數據,你可能還會想知道幾十年來什麼改善了,什麼更糟了。


(3)應該採用哪種可視化方式?


有很多圖表和視覺暗示的組合可以選擇。為數據選擇正確的表格的時候,你可能會感到茫然。在研究的初期階段,更重要的是要從不同的角度觀察數據,並深入到對項目更重要的事情上。


製作多個圖表的時,要比較所有的變量,看看有沒有值得進一步研究的東西。


先從總體上觀察數據,然後放大到具體的分類和獨立的特點。這裡,我給出基本圖表的選擇方法:

柱狀圖:適用於二維數據集,但只有一個維度需要比較。柱狀圖利用柱子的高度,反應數據的差異。肉眼對高度差異很敏感,便是效果比較好。柱狀圖的局限在於只適用於中小規模的數據集。

折線圖:折線圖適用於二維的大數據集,尤其是那些趨勢比單個數據點更重要的場合。它還適用於多個二維數據集的比較。

餅圖:餅圖應該是一種避免使用的圖表,因為肉眼對面積的大小不敏感。一般情況下,總是應該用柱狀圖替代餅圖,但是有一個例外,就是反應某個部分佔整體的比重。

散點圖:散點圖適用於三維數據集,但其中只有兩維需要比較。有時候為了識別第三維,可以為每個點加上文字標識,或者不同的顏色。

氣泡圖:氣泡圖是散點圖的一種變形,通過每個點的面積大小,反應第三維。如果為氣泡圖加上不同顏色(或者文字標籤),氣泡圖就可以用來表示四維數據。

雷達圖:雷達圖適用於多維數據(四維以上),且每個維度必須可以排序。但是,它有一個局限,就是數據點最多6個,否則無法辨別,因此試用場合有限。


(4)你看到了什麼,有意義嗎?


可視化數據之後,你需要尋找一些東西。包括增長、減少、離群值、或者一些組合,當然,確保不要再模式中混入幹擾信息。同時也要注意有多少變化,以及模式有多明顯。數據中的差異與隨機性相比是怎樣的?因為估值的不確定性、人為的或技術的錯誤或者因為人和事物與眾不同,從而使得你的觀察結果與眾不同。人們常常認為數據就是事實,因為數字是不可能變動的。但是數據具有不確定性,因為每個數據點都是對某一瞬間所發生的事情的快速捕捉,其他地內容都是你推斷的。

 

5、上海市各大商圈人流預警系統


(1)實時人流檢測


系統展示的是一塊地圖,該地圖基於採用百度地圖開發。我們固定了顯示範圍為上海市區域。通過熱力圖的方式來反映各商圈的人流信息,人數越多的地方越好。為了獲得更具體的人流數據,我們還加入信息點,通過地圖覆蓋物實現。當滑鼠懸浮到信息點的時候,會顯示該商圈具體人流情況,我們使用了哪些數據,就顯示出來。


下圖是系統界面:(包含時間信息顯示,天氣預報,事故預警,人流信息列表,地圖容器,以及兩個數據圖表分析)


(2)百度地圖開發


本次開發中主要使用百度地圖,可以通過百度地圖開放平臺(http://lbsyun.baidu.com/)獲取SDK,以及API參考。


百度地圖是百度提供的一項網絡地圖搜索服務,覆蓋了國內近400個城市、數千個區縣。在百度地圖裡,用戶可以查詢街道、商場、樓盤的地理位置,也可以找到離您最近的所有餐館、學校、銀行、公園等等。2010年8月26日,在使用百度地圖服務時,除普通的電子地圖功能之外,新增加了三維地圖按鈕。

本次開發中遇到兩個坑,這裡分享下:

百度有自己專門的一套坐標系統,現在國際上使用的GPS坐標(WGS84),我們獲得數據都是WGS84的坐標信息,所以這個過程中需要進行坐標系的轉換,百度提供了轉化的函數,所以實現過程中用node謝了轉化的腳本。

為了滑鼠懸浮覆蓋物彈出信息框,發現百度自帶的infoWindow樣式固定,同時網頁版百度地圖api還提供了開源庫infobox用作替換infowindows。但是開發中發現還是無法滿足我需要,所以自己通過寫CSS的方式實現。


查看網頁信息,會發先infowindow由多個div組合,樣式寫死在html中,沒有關注點分離,所以操作過程中等地圖渲染完成後再次修改樣式,這樣導致執行效率比較低,目前沒有其他解決方法。考慮自己寫個開源庫實現。



(3)商圈人流走勢


為了展示商圈的人流走勢,顯然我們選擇了折線圖。在前端開發中,統計圖的繪製我們選擇了Echarts(http://echarts.baidu.com/)。


Echarts是一個純JavaScript的圖標庫,可以流暢的運行在PC和行動裝置上,兼容當前絕大部分瀏覽器(IE8/9/10/11,Chrome,Firefox,Safari等),底層依賴輕量級的Canvas類庫ZRender,提供直觀、生動、可交互,可高度個性化定製的數據可視化圖表。


現在Echart已經迭代到了版本3,其中加入了更多豐富的交互功能和更多的可視化效果,並且對移動端做了深度的優化。Echarts官網也提供了完整的文檔,入手較快。


(4)商圈人流對比


在商圈人流走勢中,我們的橫坐標是我們自定義算法中的商圈擁擠度,所以各大商圈走勢幾乎一致,在擁擠度的差別上對比卻不明顯,為了體現三大商圈的對比,我們採用d3.js庫動態的展示了商圈人流數上的對比。


D3.js(https://d3js.org/)是一個JavaScript庫,它可以通過數據來操作文檔。D3可以通過使用HTML、SVG和CSS把數據鮮活形象地展現出來。D3嚴格遵循Web標準,因而可以讓你的程序輕鬆兼容現代主流瀏覽器並避免對特定框架的依賴。同時,它提供了強大的可視化組件,可以讓使用者以數據驅動的方式去操作DOM。


D3官網也提供了較為清晰的文檔,但相比Echarts,D3的實現更為靈活,所有入門難度稍微大一些。

 

(5)D3.js和Echarts選擇上的建議


在圖表製作的JavaScript庫中,有前面提到的Echarts,d3.js,這裡在介紹一個highcharts.js,Highcharts和echarts是一類東西,但跟d3.js維度不同。假如前面兩個能解決你的需求,那麼就可以先不考慮d3。英語好選highcharts,英語不好選echarts。當然最好要先評估一下它們對瀏覽器的兼容性,免得寫完了發現用戶那運行不了。Highcharts和echarts基本上就是畫圖表用的,而d3.js 更自由些,你很容易去做出自己想要的效果,比如mindchart、heat chart、tile chart 之類的東西。d3.js源碼封裝對svg的操作,而svg不依賴解析度,而canvas則依賴解析度低,對密集型遊戲處理效果還是很不錯的,而svg對複雜高的渲染速度會很慢.不過d3.js最新的迭代版本已經支持canvas操作。

 

6、優秀的數據可視化作品欣賞


在學習過程中,腦海中有了這個名詞,當遇到這方面的內容總會多關注下,下面分享一些優秀的可視化作品。

http://www.iqiyi.com/v_19rrnue9oc.html,愛奇藝中可以搜索可視化看到。這裡不是打廣告哈。

D3製作的example(注意迭代版本): https://github.com/d3/d3/wiki/Gallery

風、氣象、海洋狀況的全球地圖: https://earth.nullschool.net/zh-cn/

視物|致知: http://www.vizinsight.com/

阿里指數: https://alizs.taobao.com/

iremember: http://i-remember.fr/en

標籤雲製作tagul: https://tagul.com/

可視化案例: http://www.open-open.com/news/view/154a034/

地理信息可視化開源庫: http://mapv.baidu.com/

看名字就知道: http://www.informationisbeautiful.net/

同樣看名字就知道: http://www.visualisingdata.com/

 

當然,優秀的可視化作品數不勝數,我也分享下幾本可視化方面的書籍。

連結:http://pan.baidu.com/s/1hsmJPaO,密碼:io4x


最後希望大家能夠喜歡可視化。 



相關焦點

  • 美院資深設計師借用圖撲案例,淺談數據時代的可視化設計
    小結結合情感打造二維設計美感上篇我們講到了《可視化設計-數據時代的美味製造者(上篇)》,分析完了邏輯性的可視化概念與設計流程。接下來讓我們開始具體的講解可視化設計進行中的設計方法。首先,想要設計出一個好看的可視化大屏,藝術性是必不可少的。
  • 數據可視化的基本流程
    作者 | 向倩文來源 | 數據產品手記大多數人對數據可視化的第一印象,可能就是各種圖形,比如Excel圖表模塊中的柱狀圖、條形圖、折線圖、餅圖、散點圖等等,就不一一列舉了。以上所述,只是數據可視化的具體體現,但是數據可視化卻不止於此。
  • 海洋數據三維可視化
    海洋數據可視化平臺指通過海洋信息三維可視化技術,實現海洋信息數據的可視化。海洋數據可視化是科學管理海洋數據的重要組成部分,它能夠將無法直接查看的數據以直觀的圖形方式展示出來,提高海洋數據研究利用能力,能提髙數據訪問效率及安全性。
  • 兩步搞定數據可視化
    數據可視化強調以圖形形式呈現抽象信息。數據可視化使我們能夠發現傳統報告,表格或電子表格中未被注意的模式,趨勢和相關性。研究表明,人類對視覺的反應優於任何其他類型的刺激。人類大腦處理視覺信息的速度比文本快60,000倍。
  • 從數據可視化到交互式數據分析
    高可視性的可視化項目主要關注兩個目的:帶來靈感和幫助解釋。然而,可視化可以通過數據分析來增加對複雜問題的理解,這樣的項目雖然不多見,但不代表不重要。數據可視化的三個主要用途我知道我這樣總結可能存在嚴重簡化的風險。但是,我發現根據主要目的(有意或無意)確定數據可視化的三類主要用途是很有用的,這也有助於我在本文後面闡明一些觀點。
  • 數據可視化的一些思考丨從三個問題看數據可視化的商業前景
    數據可視化的需求場景是什麼?一種場景是「看」,數據可視化的主要作用是展示匯報,是信息的獲取。比如前不久RayData團隊為央視頻打造的生態可視化交互管理系統,以及在央視現場的工作區,利用RayData Web做出來的環形可視化大屏,都是為了讓管理者、運營者、業務人員更好地獲取相關信息。另一種場景是「用」,數據可視化的主要目的是交互管理,是數據的應用。
  • 最佳大數據可視化技術
    當我們試圖理解和解釋數據時,或者當我們尋找數百或數千個變量之間的關係以確定它們的相對重要性時,情況就更是如此。 識別重要關係的最有效方法之一是通過高級分析和易於理解的可視化。數據可視化幾乎應用於所有知識領域。 不同學科的科學家使用計算機技術對複雜事件建模並可視化無法直接觀察到的現象,例如天氣模式,醫療條件或數學關係。
  • 數據可視化在移動端的應用
    隨著大數據行業的快速發展,數據可視化設計在移動端的應用越來越多。今天我們就數據可視化在移動端的使用場景、特點、注意事項以及各個使用場景進行一次簡單的分享。應用場景數據可視化在移動端的主要體現是「數據圖表」,我們最常用的數據設計組件就是:柱狀圖、折線圖、環形圖等,它們簡單易懂,容易被用戶接受。
  • 數據可視化之旅(三):數據圖表的選擇(中)
    作者 | Destiny 來源 | 木東居士 0x00 前言數據圖表的選擇(上),分享了「時序數據」和「比例數據」的可視化圖表方案。不同的數據類型、不同的闡述目的,決定了數據可視化展現形式的差異。因此,今天這篇文章,主要是分享兩類不同的可視化目的及其可選擇的圖表形式。「對比型數據」:對比兩組或兩組以上數據的差異。
  • 數據統計分析——可視化看板(駕駛艙)
    和數據打交道十五年了,我和大家一樣,初學階段也是學習excel的各種技巧,也學習了各種的函數公式,但是學到最後,發現excel的技巧對我來說幾乎沒什麼用,函數公式學了幾百個,最後,經常用到的也只是個位數,而且,當excel工作表數據量增大時,函數公式就帶不動了,比較卡,怎麼辦呢?
  • 大數據可視化技術的挑戰及應對措施
    大數據可視化內涵   數據可視化就是將抽象的「數據」以可見的形式表現出來,幫助人理解數據。大數據可視化相對傳統的數據可視化,處理的數據對象有了本質不同,在已有的小規模或適度規模的結構化數據基礎上,大數據可視化需要有效處理大規模、多類型、快速更新類型的數據。
  • 優秀的數據可視化,原來是這樣做的!
    這樣炫酷的數據可視化,小編真的不會。開個玩笑,其實工作中我們並不需要作出很炫酷的視覺呈現,數據可視化主要旨在藉助於圖形化手段,清晰有效地傳達與溝通信息,有效地傳達思想概念,美學形式與功能需要齊頭並進,通過直觀地傳達關鍵的方面與特徵,從而實現對於相當稀疏而又複雜的數據集的深入洞察。
  • 分析零距離 數據可視化產品選型指南
    一方面,數據賦予可視化以意義;另一方面,可視化增加數據的靈性,兩者相輔相成,幫助企業從信息中提取知識、從知識中收穫價值。  維基百科對數據可視化的定義較為權威,它認為數據可視化是技術上較為高級的技術方法,而這些技術方法允許利用圖形、圖像處理、計算機視覺以及用戶界面,通過表達、建模以及對立體、表面、屬性以及動畫的顯示,對數據加以可視化解釋。
  • 為什麼可視化數據有一定的誤差值?
    已經討論得太多太多,但是還是有很多值得聊一聊的,比如,大數據信息可視化,這是 大數據應用 於實際中必須要解決的問題。早在18世紀,英國統計學家普萊費爾·蘭伯特就提出了統計信息可視化的理念,經過長期的發展,信息可視化技術到今天已經成為大數據展示的重要手段,信息可視化作為視覺信息轉換技術,以提高數據表現效果為目的,可以更直觀對大數據進行瀏覽與觀察
  • 企業為什麼要做數據可視化系統
    數據可視化,先要理解數據,再去掌握可視化的方法,這樣才能實現高效的數據可視化。在設計時,你可能會遇到以下幾種常見的數據類型: 當然,大數據可視化的圖表遠遠不止以上幾種,最關鍵的是如何利用好這些工具及圖表,歸納起來,一名數據可視化工程師需要具備三個方面的能力,數據分析能力、交互視覺能力、研發能力。 數據可視化主要是在藉助於圖形化手段,清晰有效地傳達與溝通信息。
  • 大公司都是怎麼做數據可視化規範的
    本周,表哥嘗試翻譯了一篇3次凱度信息之美獲獎者——Amy Cesal 的文章《What are Data Visualization Style Guidelines》,一起看看她是如何看待數據可視化設計系統的吧!1、什麼是數據可視化設計系統?
  • 超硬核的 Python 數據可視化教程!
    Python實現可視化的三個步驟:確定問題,選擇圖形 轉換數據,應用函數 參數設置,一目了然 1、首先,要知道我們用哪些庫來畫圖?matplotlibpython中最基本的作圖庫就是matplotlib,是一個最基礎的Python可視化庫,一般都是從matplotlib上手Python數據可視化,然後開始做縱向與橫向拓展。
  • 這16個數據可視化案例,驚豔了全球數據行業
    數據可視化可以幫你更容易的解釋趨勢和統計數據。  數據是非常強大的。當然,如果你能真正理解它想告訴你的內容,那它的強大之處就更能體現出來了。  通過觀察數字和統計數據的轉換以獲得清晰的結論並不是一件容易的事。必須用一個合乎邏輯的、易於理解的方式來呈現數據。  談談數據可視化。
  • 這5種數據可視化方式是數據科學家標配!
    【IT168 編譯】數據可視化是數據科學家工作的重要組成部分。在項目的早期階段,你通常會進行探索性數據分析(EDA)以獲取對數據的一些洞察。創建可視化確實有助於使事情更清晰易懂,特別是對於大型高維數據集。在你的項目結束時,能夠以清晰、簡潔和引人注目的方式展示你的最終結果非常重要,因為你的受眾往往是非技術性客戶,他們可以理解。
  • 百度數據可視化實驗室正式成立,發布深度學習可視化平臺 Visual DL