淺談數據可視化

2022-02-03 嘉數匯
前段時間,參加了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

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


相關焦點

  • 淺談數據中心DCN硬體資源池架構設計
    SDN網絡在部署時引入控制器和分析器,開局階段即使用控制器部署和納管區域內所有網絡設備,在Multi-site場景下可以實現統一管理入口,實現單一數據中心內overlay骨幹網絡和網絡邊緣接入點的配置和管理,同時具備整體調度數據中心間網絡東西向流量的能力;分析器能夠提供更高的網絡服務化能力,從網絡健康檢查、初步故障定位、變更前後網絡狀態等網絡可視化能力出發,實現網絡全鏈路運行狀態監控,
  • 數據可視化 | 52個實用的數據可視化工具!
    (換行)別急,這就送上一份最全,最全,最全的可視化工具合集,輕鬆做出讓人忍不住"wow"的數據圖表~1高下製圖高下製圖是一款圖表設計軟體,可以在軟體上快速將數據顯示在圖表上,讓用戶在可視化的界面查看數據,您可以在軟體編輯數據,可以將外部數據文件導入軟體,直接選擇一種模板就可以顯示圖表數據,通過這款軟體可以提升製圖效率
  • 數據可視化概覽
    而將這三個分支整合在一起形成的新學科 「數據可視化」,這是可視化研究領域的新起點。——《數據可視化》廣義的數據可視化涉及信息技術、自然科學、統計分析、圖形學、交互、地理信息等多種學科。信息可視化與科學可視化有所不同:科學可視化處理的數據具有天然幾何結構(如磁感線、流體分布等),信息可視化處理的數據具有抽象數據結構。柱狀圖、趨勢圖、流程圖、樹狀圖等,都屬於信息可視化,這些圖形的設計都將抽象的概念轉化成為可視化信息。
  • Python數據可視化:可視化數據分析插件D-Tale
    D-Tale數據可視化插件是後端框架Flask與前端框架React組合產生的一款開源的數據可視化分析插件。
  • 【數據可視化】新冠疫情數據可視化
    首先進行導包以及數據讀取:import numpy as npimport pandas as pdimport pyechartsfrom datetime import datetimefrom pyecharts import options as optsfrom pyecharts.charts
  • 「數據可視化工具」霧裡看花
    這個項目的初衷是希望能普及可視化,讓人人都能把自己感興趣的數據生成漂亮的圖表。網站提供了免費的可視化服務,你只要上傳你的數據,就可以得到你想要的可視化圖表。ManyEyes提供了數十種最受歡迎的可視化方案。
  • 淺談基於數字孿生的IT資源可視化管理
    就變更影響分析而言,如果CMDB中的關係數據不夠完善,影響範圍的確認就會變得很難。我們通過自動發現已經將IT資源間關係數據同步到CMDB,同時支持變更記錄的回溯,從而滿足了內部變更審計的要求。同時通過建立自動化的數據追蹤檢查能力,對配置數據質量進行量化與可視化,幫助數據責任方及時發現數據質量問題。
  • 數據可視化的七大趨勢
    ProPublica的調查記者兼開發者Lena Groeger,以及金融時報的數據可視化記者Jane Pong在2017年全球深度報導大會上分享了他們對當前數據可視化趨勢的一些看法。Groeger表示,目前的可視化技術水平已經遠遠超出了Google Maps,而且每天都會出現很多實驗性的技術。「現在你可以用地圖來講故事。
  • Matplotlib數據可視化!
    數據可視化,就是指將結構或非結構數據轉換成適當的可視化圖表,然後將隱藏在數據中的信息直接展現於人們面前。相比傳統的用表格或文檔展現數據的方式,可視化能將數據以更加直觀的方式展現出來,使數據更加客觀、更具說服力。數據可視化已經被用於工作科研的方方面面,如工作報表、科研論文等,成為了不可或缺的基礎技能。現在,就讓我們一起來學習下數據可視化的基礎知識。
  • IP地理數據可視化
    IP位址是網際網路上每臺設備的身份證號碼,通過這個號碼我們可以查詢到對應的地理位置信息。IP位址信息批量查詢需要寫程序實現,用Python、R或任何其他語言都可以,考慮到Python豐富的爬蟲庫,推薦使用Python,具體的實現Github上有大量案例可以參考。3.Tableau可視化這一步需要用到TableauDesktop這款數據可視化分析軟體。Tableau在Gartner發布的BI魔力象限圖中連續4年處於領導者象限,在易用性方面更是遙遙領先。
  • 數據可視化技術:python數據可視化工具庫匯總(共21個)
    什麼樣的數據、什麼樣的場景用什麼樣的圖表都是有一定的規定的。(這個以後寫一篇博客來記錄一下。當然我後續還會把自己的一些學習數據可視化的筆記放上來。)這裡主要分享一些比較常用的python可視化庫。感興趣的小夥伴往下看。
  • 使用QGIS實現城市空氣品質指數(AQI)數據可視化
    本文以生態環境部今天(2021年1月28日)發布的實時空氣品質指數為例,通過QGIS演示空氣品質指數地圖製作過程,展示QGIS點數據分級可視化和表達式生成文字標註技巧,最終的效果圖如下:本文的示範數據及圖層樣式文件打包下載地址為:連結: https://pan.baidu.com/s/1hX0_UsAK-v7xWqTjMuCj2A
  • 「 Python數據可視化系列」3. 使用Leather進行數據可視化
    在本章中,我們將使用Jupyter Notebook、Python、數據可視化庫leather進行基本的數據可視化。pip3 install--upgrade pip運行以下語句安裝用於數據可視化演示的庫:!pip3 install leather這將在計算機上安裝leather數據可視化庫。在下一節中,我們將使用筆記本開始學習Python利用leather庫的可視化。
  • 可視化腦洞十五個數據可視化的奇妙例子
    、財新數據可視化實驗室創始人黃志敏老師,從本期開始擔任可視化專欄特約欄目主編。特約專欄主編黃志敏老師推薦語:可視化是數據、藝術和技術的結合。那必定意味著數據可視化比得上千言萬語,對不對?無論如何,是時候讓我們收羅一些最具視覺衝擊力的複雜數據集了。以下是我最喜歡的15個例子。
  • 淺談python數據處理與可視化應用於大學實驗和化學科研
    所編寫代碼在.m腳本文件中存放,只能由MATLAB自身解釋器解釋處理,代碼的可移植性偏差(雖然拿VSCode也可以寫.m腳本,但最終要是要打開MATLAB才能用它)3.在大型數據文件的處理和數據可視化方面,出圖依然偏醜且寫代碼的舒適感不夠(也可能是我太菜了,在MATLAB裡面找不到那種寫python代碼的快感)4.商業軟體,收費啊!
  • 數據之美——可視化讓數據不再單調
    隨著大數據時代的來臨,數據如同幾何級般飛速增長。但繁雜的數據、冗餘的信息、總是單調無味的,人們也很難從有限的時間中提取出有價值的信息。數據可視化能夠為你的數據提供更優雅美觀的交互方式,更好地傳達自己的想法,讓每個人體驗到數據之美。如果你還沒有掌握這一技能,並為自己不知如何下手而煩惱,不妨從《數據可視化原理與實例》這本書開始。
  • 可視化 數據可視化常用的五種方式及案例分析
    對數據可視化這塊兒進行了研究和心得的整理,跟大家分享下數據可視化常用的五種方式,希望能給大家帶來思路的拓展。概念藉助於圖形化的手段,清晰、快捷有效的傳達與溝通信息。從用戶的角度,數據可視化可以讓用戶快速抓住要點信息,讓關鍵的數據點從人類的眼睛快速通往心靈深處。 數據可視化一般會具備以下幾個特點:準確性、創新性 和 簡潔性。
  • 數據可視化之——REmap
    REmap是ECharts中交互地圖可視化功能的R接口,通過它可以直接使用R代碼(而不必寫JS代碼)來實現交互地圖可視化。
  • 數據可視化神器-Flourish
    如何開始玩耍?註冊後,點擊 「Get started for free」 就可以開始你無比愉快的數據可視化之旅了。【第2步】新建數據可視化點擊 「New visualizaiton」 ,可以看到各種各樣能使用的數據可視化模板了,根據需求選擇合適的即可。
  • 數據可視化實踐之美
    開篇主要是介紹了一些常用的數據可視化工具和圖表,讓各位看官對數據可視化有一個較為全面的認識。後續篇章會深入介紹如何運用工具繪製精美圖表的技術細節。隨著DT時代的到來,傳統的統計圖表很難對複雜數據進行直觀地展示。這幾年數據可視化作為一個新研究領域也變得越來越火。成功的可視化,如果做得漂亮,雖表面簡單卻富含深意,可以讓觀測者一眼就能洞察事實並產生新的理解。