讓我們快速浏覽一下這張圖表:
這張可視化資料圖(最初用tableau軟體建立 )是如何利用資料可視化來幫助決策者的一個很好的例子。想象一下,如果這些資訊通過表格來告訴投資者,你認為你會花多長時間來向他解釋?
如今的世界裡,随着資料量的不斷增長,很難不用可視化的形式來呈現你資料裡的全部資訊。雖然有專門的工具,如tableau, qlikview 和 d3.js,但沒有任何東西能代替有很好可視化能力的模組化/統計工具。尤其是它有助于做若幹探索性資料分析和特征化工程。這就是r語言,它提供了令人難以置信的幫助。
r語言提供了令人滿意的一套内置函數和庫(如 ggplot2, leaflet, lattice)用來建立可視化效果以呈現資料。在本文中,我已經涉及了用r語言程式設計來建立既常見又先進的可視化效果的步驟。但是,在介紹那些之前,讓我們快速浏覽一下資料可視化簡史。如果您對曆史不感興趣,沒問題,您可以跳到下一節。
資料可視化簡史
從曆史來看,資料可視化的進化已經被著名的從業者在工作中完成了。威廉.普萊菲(william playfair)是統計圖形化方法的創始人。威廉.普萊菲發明了四種類型的圖表:線圖、經濟學資料的柱狀圖、餅狀圖和圓圖。約瑟夫·普裡斯特利(joseph priestly)建立了第一個劃時代的時間線圖,其中的每一個柱形是用來顯示一個人的壽命(1765)。沒錯,時間線圖被發明于250年前,而不是facebook發明的!
最著名的早期可視化資料是由charles minard所描繪的napoleon’s march(俄法戰争)。可視化資料中包含了随着時間的變化,氣溫對拿破侖入侵俄國産生廣泛影響的資訊。在圖形中,值得注意的是,在二個次元上的六種類型資料,分别表示:拿破侖軍隊的數量,距離,溫度,緯度和經度,行軍方向和跟特定日期有關的位置。
弗洛倫斯·南丁格爾(florence nightangle)也是資料可視化的先驅。她用資料圖表的方式描述了疾病對軍隊的死亡率的影響(1858)。瓊恩·雪諾(john snow)(不是《權力的遊戲》裡的人物)是把地圖用在圖表和空間分析的先驅。在1854年的倫敦,用這地圖發現了霍亂疫情的源頭與公共水泵有關,資訊圖幫助精确定位爆發源到某一個泵的位置。
用r語言進行資料可視化
在這篇文章中,我們将建立以下可視化效果:
基本可視化效果
1. 直方圖
2. 條形圖/線型圖
3. 箱式圖
4. 散點圖
進階可視化效果
1. 熱點圖
2. 影像鑲嵌圖
3. 地圖可視化
4. 3維圖
5. 相關圖
r語言 小竅門:
histdata軟體包提供了一個小資料集,它很有趣并且在統計和資料可視化的曆史上很重要。
便簽:
基本圖形可以很容易地用r語言進行建立。繪圖(plot)指令是要關注的指令。
2. 它的參數有x軸資料、y軸資料、x軸标簽、y軸标簽、顔色和标題。要建立線圖,隻需簡單地使用參數,類型選擇為l。
3. 如果你想要箱式圖,你可以選用箱式圖(boxplot),要條形圖就用條形圖函數。
1.直方圖
基本上,直方圖是将資料分解為一個個的小格子(或間隔),并顯示它們的頻率分布。您可以更改間隔,看看這樣做對資料可視化可了解性的影響。
給您舉個例子。
注意:我們使用的par(mfrow=c(2,5))指令,為的是清晰地把多個圖放在同一頁上(參看下面的代碼)。
library(rcolorbrewer)
data(vadeaths)
par(mfrow=c(2,3))
hist(vadeaths,breaks=10, col=brewer.pal(3,"set3"),main="set3 3 colors")
hist(vadeaths,breaks=3 ,col=brewer.pal(3,"set2"),main="set2 3 colors")
hist(vadeaths,breaks=7, col=brewer.pal(3,"set1"),main="set1 3 colors")
hist(vadeaths,,breaks= 2, col=brewer.pal(8,"set3"),main="set3 8 colors")
hist(vadeaths,col=brewer.pal(8,"greys"),main="greys 8 colors")
hist(vadeaths,col=brewer.pal(8,"greens"),main="greens 8 colors")
請注意,如果間隔數少于被指定的顔色數,顔色會變成極值,如上圖中的“set3 8 colors”圖。如果間隔數目超過了顔色的數目,則顔色會開始像在第一行中一樣地重複出現。
2.條形圖/線型圖
線型圖
下面的折線圖顯示了在給定時間内飛機乘客數的增長情況。折線圖通常是分析一段時間内延伸趨勢的首選。此外,當我們需要比較數量随着某種變量(例如時間)的相對變化時,線型圖也是适用的。下面是代碼:
plot(airpassengers,type="l") #simple line plot
條形圖
條形圖适用于顯示跨幾個組别的累計彙總之間的比較。層疊圖用于跨類别的條形圖。下面是代碼:
barplot(iris$petal.length) #creating simple bar graph
barplot(iris$sepal.length,col = brewer.pal(3,"set1"))
barplot(table(iris$species,iris$sepal.length),col = brewer.pal(3,"set1")) #stacked plot
箱式圖顯示5個有統計學意義的數字,分别是最小數、第一四分數位、中位數、第三四分位數和最大數。是以,它在資料延伸的可視化上非常有用,還能得出相應的推論。下面是簡單的代碼:
boxplot(iris$petal.length~iris$species) #creating box plot between two variable
讓我們來了解下面的代碼:
在下面的例子中,我在螢幕上顯示了4個圖。通過使用~符号,我可以将(萼片的長度)的伸展是如何跨各種類别(的物種)進行可視化。我在最後的兩個圖中示範了調色闆。調色闆是一組顔色,用來使圖示更有吸引力,而且能幫助在資料中建立醒目的差別。
data(iris)
par(mfrow=c(2,2))
boxplot(iris$sepal.length,col="red")
boxplot(iris$sepal.length~iris$species,col="red")
oxplot(iris$sepal.length~iris$species,col=heat.colors(3))
boxplot(iris$sepal.length~iris$species,col=topo.colors(3))
4. 散點圖(包括3d等功能)
散點圖有助于輕松地把資料可視化和進行簡單的資料檢查。這裡有簡單散點圖和多元散點圖的代碼:
plot(x=iris$petal.length) #simple scatter plot
plot(x=iris$petal.length,y=iris$species) #multivariate scatter plot
散點圖矩陣可以幫助将彼此交叉的多個變量可視化。
plot(iris,col=brewer.pal(3,"set1"))
您可能會想,我還沒有把餅圖清單成基本圖形。這不是失誤,而是我故意這麼做的。這是因為,資料可視化專業人員不贊成使用餅圖來表示資料。因為人的眼睛不能像目測線性距離那樣精确地目測出圓的距離。隻需要簡單地把任何可用餅圖表示的東西都用線圖表示。但是,如果你喜歡餅圖,可使用:
pie(table(iris$species))
到這裡為止,我們已經學過的所有圖表清單如下:
您可能已經注意到,在一些圖表中,他們的标題已被截斷,因為我把太多圖表放在同一個螢幕上。要改變這一點,你隻需要改變par函數的‘mfrow’參數。
原文釋出時間為:2015-07-20
本文來自雲栖社群合作夥伴“大資料文摘”,了解相關資訊可以關注“bigdatadigest”微信公衆号