當咱們談論數據可視化時,咱們實際談論的是將數據經過系統化、有邏輯的方式轉化爲最終的視覺呈現。數據可視化圖形有不少種類:初看散點圖(scatter plot)、餅圖(pie)和熱力圖(heatmap)並無什麼共同點,實際上這些圖形背後都有一套基礎圖形語言:捕獲數據,並將數據轉化爲紙上的墨點,或是屏幕上的像素。其內在本質在於:數據可視化將原始數據映射爲直觀可量化的視覺特徵,咱們將其稱爲圖形元素(aesthetics)。app
圖片 1.1:圖形元素一般包含的信息有 位置(position), 形狀(shape), 尺寸(size), 顏色(color), 線段寬度(line width), 線段類型(line type) 等。 有些信息是能夠同時是連續型(continuous) 或離散型(discrete) ,好比 position,size,line-width,color ,而其餘一般只能是離散型的。字體
上圖包含了一些基礎的圖形元素。圖形元素有一些關鍵特徵,首先是位置(position),用來描述元素的位置信息。一般在 標準 2D 空間中,用 x, y 來描述位置信息,固然在 1 維 或者 3 維空間有其餘的位置描述方式。 而後,全部的圖形元素有 形狀(shape), 尺寸(size),顏色(color) 等信息,即便咱們只是繪製黑白元素,咱們也要給圖形元素設置合適的顏色用於展現,譬如在白色背景上能夠繪製黑色圖形,可是白色圖形就不行了。最後,咱們在有些場景下會應用不一樣寬度的線段和不一樣類型的線段(實線、虛線等)。3d
在上圖以外,咱們還會遇到更多的圖形元素,譬如展現字體是須要考慮字體系列(font family),字體大小(font size),若是要處理圖形相互覆蓋,還須要考慮到圖形透明度變化。cdn
圖形元素能夠分爲兩大類:連續型和離散型。連續型含義是任意兩個數據之間均可以存在中間狀態,好比時間就是連續型的,50s 和 51s 之間還能夠存在 50.5s,50.51s 甚至更多。相互在一個房間可人數是離散的,房間能夠容納 5 人或者 6 人,但不能是 5.5 人。圖上 position、size、line width,color 能夠是連續型的,而 shape 和 line type 一般只能是離散型。htm
接下來咱們來看下須要展現的數據的種類。一般你可能會覺數據應該是數字類型的,但其實數字只是可視化數據中的兩個類別而已。以下表所示,除了連續型和離散型數字以外,還能夠經過離散型類別(cetegory)、日期或者時間形式(date/time)和文本(text)形式呈現。若是數據類型是數字,咱們稱之爲定量(quantitative),若是數據類型是其餘類型,咱們稱之爲定性(qualitative)。定性的變量被稱爲因子(factor),不一樣類別(category) 稱爲級別(level)。因子的級別一般是無序的(dog, cat, fish),不過也能夠是有序列表(good,fair,pool)。blog
變量類型 | 示例 | 變量分佈 | 描述 |
---|---|---|---|
連續數字 | 1.3, 5.7, 83 | 連續型 | 連續的數字類型,能夠是整數,也能夠是小數 |
離散數據 | [1, 2, 3] | 離散型 | 離散的數字單元 |
無序類別 | dog, cat, fish | 離散型 | 類別之間無順序關係,也被稱爲因子 |
有序類別 | good,fair,pool | 離散型 | 類別之間有順序關係,也被稱爲有序因子 |
日期或時間 | Jan. 5 2018, 8:03am | 離散型 or 連續型 | 查看一段連續時間時能夠是連續型數據 |
文本 | 個人名字 | 無 or 離散型 | 普通文本 |
表格 2.1排序
下面咱們來看一組具體數據,來自美國 4 個城市的天氣數據。數據包含了 5 列信息:Month,Day,Location,Station ID, Temperature。其中 Month 是有序因子(ordered factor),Day 是離散的數字類型,location 和 Station ID 是無序因子(unordered factor),而 Temperature 則是連續的數字值。圖片
表格 2.2 一組真實天氣數據get
Month | Day | Location | Station ID | Temperature |
---|---|---|---|---|
Jan | 1 | Chicago | USW00014819 | 25.6 |
Jan | 1 | San Diego | USW00093107 | 55.2 |
Jan | 1 | Houston | USW00012918 | 53.9 |
Jan | 1 | Death Valley | USC00042319 | 51.0 |
Jan | 2 | Chicago | USW00014819 | 25.5 |
Jan | 2 | San Diego | USW00093107 | 55.3 |
Jan | 2 | Houston | USW00012918 | 53.8 |
Jan | 2 | Death Valley | USC00042319 | 51.2 |
Jan | 3 | Chicago | USW00014819 | 25.3 |
Jan | 3 | San Diego | USW00093107 | 55.3 |
Jan | 3 | Death Valley | USC00042319 | 51.3 |
Jan | 3 | Houston | USW00012918 | 53.8 |
想實現將數據映射到圖形元素,首先須要指定哪些數據類別對應到圖形元素哪些特徵。舉個例子,若是圖形上有 x 軸,那咱們就須要考慮指定哪些數據分佈在座標軸上的不一樣位置(position),相似的,咱們還要考慮哪些數據來對應到特定的形狀(shape)和顏色(color),這種數據和圖形元素之間的對應關係就是經過比例尺(scale) 來建立的。比例尺定義了數據和圖形元素之間一一映射關係。也就是說,比例尺是一對一的,對於每個數據集,都只能是一個圖形元素特徵,反之亦然。若是比例尺不是一一對應的,數據可視化就會變得模糊不清。
圖片 2.2:比例尺鏈接數據集到圖形元素。圖上數字 1 到 4 分別創建了和位置(position)、形狀(shape)、顏色(color)的映射關係。在每一個比例尺上,每一個數據都對應一個惟一的圖形特徵,反之亦然。
咱們再來看實際一點的,以 表格2.2 數據爲例,咱們能夠分別將 month 和 temperature 映射到 x 軸和 y 軸上。而 location 則做爲顏色分類,並生成實線線段。最終生成的效果就是標準的折線圖,展現 4 個城市在一年不一樣月份的溫度趨勢圖。
圖 2.3:4個城市的溫度趨勢折線圖,x 軸表明月份,y 軸表明溫度,而顏色用來區分不一樣城市
圖 2.3 是很是常見的用於展現溫度趨勢的折線圖,也是大部分數據科學家憑直覺就會選擇的可視化實現。然而,咱們也能夠指定不一樣變量來生成不一樣比例尺。舉例來講,相比於將 temperature 映射到 y 軸,location 映射爲顏色,咱們能夠反着來。此時咱們關心的關鍵變量(temperature)就經過顏色來呈現,咱們須要定義更大的顏色範圍來傳遞更有價值的信息。此時,我會選擇用正方塊來替換折線,一個色塊對應一個城市和月份,下圖我按照每個月的平均溫度進行對色塊的着色。
圖 2.4:此時 x 軸仍是月份,可是 y 軸變成了城市,而顏色經過溫度來區分
我要強調一下,圖 2.4 上有兩種基於位置的比例尺,分別是基於 x 軸分佈的 month,和基於 y 軸分佈的 location,且二者都不是連續型變量。其中 Month 是有序因子幷包含 12 個級別(level), 而 Location 是 4 個層級的無序因子,二者都是離散型比例尺。離散型數據的因子一般在座標軸上等間距分佈,若是是有序的(好比 Month),則會按照適當的順序分佈,若是是無序的(好比 Location),那麼能夠按照需求自由分佈。圖 2.4,我按照從冷(Chicago)到熱(Death Valley)生成一個漸變效果,固然我也能夠採用其餘的排序方式。
圖 2.3 和圖 2.4 都應用了 3 個比例尺 —— 2 個基於位置的比例尺和 1 個基於顏色的比例尺,這是可視化圖形的經常使用比例尺數量,固然咱們也能夠應用更多的比例尺數量。圖 2.5 上就應用了 5 個比例尺 —— 2 個位置比例尺,1 個 顏色比例尺,1 個尺寸比例尺和 1 個形狀比例尺,每一個比例尺都表明了數據的不一樣維度。
圖 2.5: 汽車燃油效率與排量之比。圖上應用了 5 個維度來展現數據。(i) x軸(發動機排量); (ii) y 軸(燃油機效率); (iii) 點顏色(功率); (iv) 點尺寸(汽車重量); (v) 點的形狀(氣缸數量); 4/5 的維度(排量、效率、功率、重量)是連續型數據,只有剩下的氣缸數量字段能夠認爲是離散型數字,或是定性有序類型。