數據可視化

數據可視化是關於數據之視覺表現形式的研究;其中,這種數據的視覺表現形式被定義爲一種以某種概要形式抽提出來的信息,包括相應信息單位的各類屬性和變量(簡單來講,數據可視化就是用圖形的方式來表徵數據的規律。)前端

首先要明確幾點:

  • 數據可視化歷來只是表層的東西,數據分析纔是核心。就像一我的,不必定長得漂亮人格就高尚,也不必定長得很差看人格就低下。而應該反過來,只有數據分析內涵豐富、價值高,數據可視化才能內容豐富、有價值。
  • 但是這是個看臉的世界,大部分人對於數據也都是外行的,只有把數據可視化作得漂亮才能吸引他們的注意;只有把數據可視化作得簡單易懂,他們才能理解數據分析的內涵。
  • 對於數據可視化,最重要的東西曆來不是圖形、工具、配色這些套路性的東西,而在於創意和靈感。可你又不是參加比賽,並不須要那麼多的創意靈感。在平常工做中,仍是以實用爲主,因此掌握套路仍是很必要的。

1、經常使用圖形

一、散點圖

散點圖用來表徵兩個(若是多個就分面,如上圖)數值型變量間的關係,每一個點的位置(即x軸和y軸座標)映射着兩個變量的值。固然對於三個數值型變量,也有三維散點圖,不過用得很少。
經過觀察散點圖上數據點的分佈狀況,咱們能夠推斷出變量間的相關性。若是變量之間不存在相互關係,那麼在散點圖上就會表現爲隨機分佈的離散的點,若是存在某種相關性,那麼大部分的數據點就會相對密集並以某種趨勢呈現。數據的相關關係主要分爲:正相關(兩個變量值同時增加)、負相關(一個變量值增長另外一個變量值降低)、不相關、線性相關、指數相關等,表如今散點圖上的大體分佈以下圖所示。那些離點集羣較遠的點咱們稱爲離羣點或者異常點。 編程

氣泡圖

在散點圖的基礎上加一個維度,把各個點的面積大小映射一個新的變量,這樣不只點的位置還有大小表示數據特徵。 服務器

折線圖

把散點圖各個散點用折線鏈接起來就成了折線圖,固然不只僅只是爲了好看,當散點越多,折線就越平滑地趨近於曲線,能更加貼切地反映連續型變量的規律。 網絡

面積圖

把折線圖進一步往座標軸投影就成了面積圖,本質其實跟折線圖沒區別,只是看起來更加飽滿一點。 數據結構

柱狀圖

柱狀圖是一種用得很普遍的圖形,它表徵分類型變量 vs 數值型變量的關係。若是分類型變量的每個取值還能繼續分類,那麼簡單的柱狀圖就變成了複雜的柱狀圖,每個類別僅由一根柱變成多根柱,多根柱能夠串列,也能夠並列。 值得一提的是,柱狀圖通常須要排序:若是分類型變量是有序的,按照它自己的順序排列便可;若是分類型變量無序,那麼則根據數值型變量的大小進行排序,使柱狀圖的高度單調變化。 app

條形圖

只不過把柱狀圖座標旋轉一下,豎着的變成橫着的,這個可根據版面自由選擇。上圖示例就是串列的堆疊條形圖。 echarts

玫瑰圖

本質仍是柱狀圖,只不過把直角座標系映射成極座標系。看起來比柱狀圖更美觀。 工具

瀑布圖

瀑布圖是柱狀圖的一種延伸,它通常表示某個指標隨時間的漲跌規律,每個柱狀也不都是從0開始的,而是從前一個柱狀的終點位置開始,這樣既反映了每個時刻的漲跌狀況,也反映了數值指標在每個時刻的值。 學習

餅圖

餅圖的本質還是柱狀圖,只不過餅圖通常用來表示各個類別的比例,而不是絕對的數值,用角度來映射大小。 值得一提的是,由於一個圓餅只有360度,若是類別太多了,這個餅會被切割得很是細,不利於閱讀;這種狀況下老老實實地用柱狀圖。 大數據

圓環圖

本質就是餅圖,只不過把實心圓換成了空心的圓環;若是清一色的餅圖太過單調,能夠考慮換個環形圖。

馬賽克圖

馬賽克圖比較複雜,與柱狀圖相比,它的分類變量就多了幾個,並且還能實現交叉映射,因此比柱狀圖更抽象,更細化。 馬賽克圖隱含着大量的數據信息。例如:(1)從船員到頭等艙,存活率陡然提升;(2)大部分孩子都處在三等艙和二等艙中;(3)在頭等艙中的大部分女性都存活了下來,而三等艙中僅有一半女性存活;(4)船員中女性不多,致使該組的Survived標籤重疊(圖底部的No和Yes)。 擴展的馬賽克圖添加了顏色和陰影來表示擬合模型的殘差值。在本例中,藍色陰影代表,在假定生存率與船艙等級、性別和年齡層無關的條件下,該類別下的生存率一般超過預期值。紅色陰影則含義相反。必定要運行該例子的代碼,這樣你能夠真實感覺下着色圖形的效果。圖形代表,在模型的獨立條件下,頭等艙女性存活數和男性船員死亡數超過模型預期值。若是存活數與船艙等級、性別和年齡層獨立,三等艙男性的存活數比模型預期值低。

旭日圖

看起來跟餅圖比較像,但比餅圖更復雜得多。它從中心向外輻射,每輻射一層就細分一層,用來表示多個變量多層之間的比例關係。

直方圖

看起來跟柱狀圖很像,但其實本質並不同。直方圖用來表徵一個數值型變量的分佈,具體來講就是把這個連續型變量劃分紅多個區間,而後統計各個區間的頻數。直方圖橫軸是數值型變量自己的值,縱軸是頻數。

機率密度曲線圖

本質與直方圖相似,不過縱軸不是頻數而是頻率。正如折線圖和麪積圖同樣,機率密度曲線圖也可自由選擇要不要面積投影。這個圖太學術了,通常出如今數學教材中(好比正態分佈……)。

雷達圖

不少遊戲中的人物能力極向對比就是以雷達圖表示的。柱狀圖通常是一個分類型變量不一樣類別間的比較,雷達圖能夠是多個數值不在同一個scale之下;更具體地說,柱狀圖通常是橫向比較,雷達圖既能夠多個觀測之間的縱向比較,也能夠是一個觀測在不一樣變量間的橫向比較。 值得一提的是,雷達圖若是用來橫向比較,需先把各個數值變量做歸一化處理。

箱線圖

亦稱盒須圖,也是挺學術的一個圖。它用來表徵各個數值型變量的分佈情況,每一條橫線表明分位數,盒內部的橫線表明中位數,點表明異常值。

小提琴圖

本質與直方圖同樣,都是表徵數值型變量的分佈,每個小提琴的寬度表明它在該高度處的頻率範圍。

熱力圖

通常以顏色來映射密度或者其餘數值變量,通常來講,顏色最深的地方表示數據最集中。

日曆圖

是熱力圖的變種,它把每個矩形從新排列成日曆的形狀,這樣能夠方便地觀察一段時間內每一天的數值特徵。

地圖

用來可視化地理數據,這些數據通常由國家地理測繪部門提供,在一些網站上也能找到,經常使用的數據格式有shp、JSON、csv等。 地圖的繪製原理是基於大量的散點,勾勒成曲線,再鏈接成多邊形——其中每一塊多代形表明一個地區,能夠是國家、省、市、區縣等。 地圖的應用主兩有種狀況:一是如上圖同樣以顏色填充每個多邊形來映射一個指標,這種狀況下地圖跟柱狀圖本質相同,可是多了多邊形之間的位置關係;另外一種是在地圖上疊加散點或者曲線,來表徵各個點之間的地理位置。

地球圖

地圖是二維的,三維的就是地球圖。這種圖形通常是交互的,也就是說你能夠用鼠標實現地球的旋轉和縮放等操做。 值得一提的是,不要僅僅爲了3D就使用地球圖,要看數據自己的狀況。若是你的數據範圍原本就覆蓋全球,用地球圖很合適;但若是你的數據範圍小,就一個國內,甚至一個省市內的,搞個地球圖就太浮誇,並且整個球上只有一個很是小的區域有數據,是很不和諧的。

網絡圖

網絡圖的元素包含點和邊,邊分爲無向邊、單向邊和雙向邊來表徵點與點的鏈接關係,邊的粗細能夠映射這種關係的強弱。

arc diagram(圓弧圖)

arc diagram也是一種網絡圖,只不過它把全部的節點一字排開,以弧線來表示邊。這樣看起來藝術感更強,適合於節點較多的網絡關係可視化。

Chord Diagram(和絃圖)

和絃圖通常用來表示雙向的網絡關係(好比AB兩個城市相互流入流出了多少人),數據結構通常爲鄰接矩陣。當節點不少的時候,各類弧線交叉得就很是密密麻麻,這種狀況下,要麼交互,要麼考慮別的圖形。

hierarchical edge bundling(分層邊緣捆綁)

hierarchical edge bundling也表示節點間的網絡關係,不過它把邊扭曲成曲線,這樣就適合節點比較多的可視化。

矩形樹圖

矩形樹圖本質就是決策樹的可視化,只不過排成矩形。它也是把各個變量層層細分,這一點跟sunburst圖相似。當變量比較多的時候,作成交互可縮放的形式更合適。

平行座標圖

平行座標圖的優勢是能夠把多個變量並形排開,把每個記錄都以折線鏈接上。這樣當數據量大的時候,其實能夠很方便地觀察各個變量的分佈狀況。

桑基圖

桑基圖看起來跟平行座標圖有點像,但含義不同。桑基圖主要的用法是表徵流量在各個層級的流動關係,上一層如何向下一層分散,下一層如何由下一層匯聚。

漏斗圖

互聯網運營有一個很重要的概念就是層級轉化,這個每層的轉化率用漏斗圖來可視化,形神俱佳。若是兩層之間的寬度近似,表徵該層的轉化率高;若是兩層之間的寬度一會兒減少了不少,表示轉化率低。

儀表盤

儀表盤的觀賞性大於實用性,實際上它的功能很簡單,就是表徵一個數值型變量在最小值和最大值之間的什麼分位。

象柱形圖

象柱形圖其實就是柱形圖,只不過把柱子換成了其它的圖形。若是數據自己有比較具體、形象的含義和背景,那麼用象柱形圖是一種比較新穎的選擇。

主題河流圖

主題河流圖好看,但很差解釋,若是不是交互式的,最好不要用。它通常是把多個類別隨時間的變化數據堆疊起來,表徵隨時間變化的趨勢。

詞雲圖

詞雲圖便是對詞彙的頻數進行可視化,一個詞越大它出現的次數就越多,通常與文本挖掘配合使用。 在實際的數據可視化中,每每不是孤立地用一個基本圖形,把多個圖形組合、鄰接,能交叉對比出更多的信息。好比在柱狀圖上疊加折線圖,在地圖上疊加散點圖,把多個柱狀圖放在一塊兒對比等等。 記住數據可視化展示信息是第一位的,好看卻是其次。

圖形語法總結

  • 數據(data):數據纔是圖形的靈魂,這點無需解釋。
  • 幾何對象(geom):也就是圖形自己,這是可視化的外形。根據數據特徵,選擇最合適的圖形。
  • 映射(mapping):映射即便把數據和圖形給鏈接起來。映射什麼數據變量,它是連續的仍是離散的?
  • 標度(scale):這個是從數據中剝離,可是控制數據如何映射到圖形上的屬性。圖形中用什麼通道來映射?經常使用的有顏色、長度、面積、形狀、透明度等通道。
  • 座標系(coord):座標系不必定非得是直角笛卡爾座標系,好比對於地圖並不適合,因此要作專門的投影操做。轉換座標系也有形成不一樣的視覺效果,好比把柱狀圖的座標系轉換成極座標系就變成了玫瑰圖。
  • 統計變換(stat):對數據進行常規的統計操做,不過也能夠先把數據處理好,可視化的時候就再也不作變換。
  • 分面(facet):若是圖形維度較高,並非一張圖能說明的,那麼就分面處理。分面其實是多加了一個維度,就像一頁紙和一頁書的區別。
  • 位置(position):通常來講圖形各個元素的位置是由數據決定的,不過在不影響分析的前提下爲了視覺美觀也能夠作一些微調。好比有的散點圖只看它在y軸的高度,這個時候就能夠在x軸上加擾動,不必不少點都擠在一塊兒。
    掌握了圖形語法,對理解可視化的本質,構思圖形屬性頗有幫助;只有掌握了圖形語法,才能真正自由地去創造數據可視化,而不只僅只是往模板裏套數據。

交互方式

交互性是數據可視化與信息圖的區別。
什麼是交互,就是用戶輸入一個信號,可視化系統能給出響應,以幫助他更好地理解可視化。數據可視化的本質是以簡單、直接的圖形幫助讀者更容易理解數據背後的規律,但許多可視化圖形作得太複雜了,反而不利於解讀,這個時候交互就能比較有效地解決這個問題。

交互的好處主要有:

  • 節省空間。想一想看,若是要把一個月天天的數據都作一張圖,難道要作30張圖?以交互的方式,讓用戶本身選擇哪一天,而後進行數據篩選、計算、從新畫圖,1張圖就夠了。
  • 展示源數據。圖形通常是對數據的具象化,因此它通常不展示具體的數字。可是當用戶就想了解具體的數字,沒必要再貼一張表格,把鼠標移到對應的位置就會彈出數據提示框。
  • 引導性強。若是隻把一張圖扔給用戶讓他們本身去理解,這樣體驗太差;配我的在一邊講解成本又過高。交互式可視化系統能夠作引導模塊,引導用戶去探索、理解,也能增長用戶的興趣和成就感。

經常使用配色

調色板

bootswatch 可在bootswatch上參考相關的CSS配色方案。

經常使用工具

ggplot2

R最擅長的除了統計建模就是可視化了,而ggplot2是最流行、最強大的繪圖包(應該沒有之一)。對於靜態圖,只要你有足夠的創意,ggplot2基本均可以經過其系統完備的畫圖語法實現。而R中也有相關的包能夠把ggplo2圖形變成交互式,彌補了ggplot2自己不能交互的弱點。

d3.js

d3.js個很強大的庫,許多先進、前衛的圖形在上面都有demo,它能夠在較底層以較高的自由度畫圖並配置交互效果。可是它的學習曲線很陡,坑也較多。

echarts

echarts在江湖上被稱爲」百度爲數很少的良心產品「,這個庫跟d3相反,它離應用層更近,提供了許多示例模板,把代碼copy過去改改數據就好了。因此echarts的優勢是上手容易、圖表漂亮、交互式效果也很好,缺點是自由度低,一旦你有個創意echarts沒提供對應的模板,那就沒辦法了。

Excel

隨着Excel的發展,它的圖表也愈來愈豐富美觀,很容易上手,仍然是把數據往模板裏套的方式。

PS & AI

這兩個是設計師的工具,可是出了一張可視化的圖以後每每須要進一步修繕,這就是設計師的工做了。能夠生成一張pdf矢量圖,而後導入PS或AI中,這樣對每個元素操做都很方便。

DataV

DataV很適合作大屏可視化展現,效果很炫酷,並且模板愈來愈成熟,上手難度也愈來愈低,同時價格也不貴。 DataV作的大屏展現

思考一個問題:數據可視化究竟是否須要編程?
對於大數據量、自由度要求較高、創意設計強的可視化應當要編程(特別是前端編程),可是對於平常小規模、簡化、通用的可視化,用工具便可。 並且隨着數據可視化技術的發展,它的門檻必定是愈來愈低,愈來愈不須要編程也能作出很好的可視化效果。

應用場景

大屏展現

這種狀況通常是企業級的數據可視化應用,通常是領導向客戶展現介紹產品和業務時所用,因此它的難度和工做量也最高。大屏展現要求大氣、炫酷、交互性強。

原型分享

好比用R中的shiny快速搭建一個可視化原型,而後在公司內部搭建一個內網服務器部署上去,內部同事均可以交互使用,很方便地瞭解產品原型及數據規律。這種狀況下沒必要太花哨,可是要具體、清晰,還有要必定的交互性。

圖文報告

這個是放在報告中或者PPT中展現給別人看的,因此靜態圖表就行,這個難度最低。報告中的圖表要求簡潔、清晰、易於解讀。

  • 數據可視化自己是表層的東西,但是一款優秀的數據可視化必定要有深入的內涵。從技術的角度來講,要有大數據整理、數據分析和數據挖掘的智能因子在裏面;從背景的角度來講,可視化做品就如同文藝做品同樣要源於實際,高於實際,假大空、純粹只爲了炫技的可視化並無什麼意義。
  • 不要只用套路,要有本身的創意和設計。有一些做品只不過純粹套用一下echarts的模板,除了數據改了一下,其餘都沒改;這種做品即便能過初賽,也不能過複賽。
  • 數據可視化是爲了向別人展現,讓別人理解數據背後的背景和內容的,也是整個數據分析的最後一環。因此除了可視化做品自己,演講也是很重要的,不要張口閉口一堆貌似高大上的技術,那隻會拔苗助長;要講故事,講得越通俗、越有趣效果越好。
相關文章
相關標籤/搜索