我 ?相 ?信 ?這 ?么 ?優秀 ?的 ?你?
?已 ?經 ?置 頂??了 ?我
翻譯|王海倫?選文|小象??
轉載請聯系后臺
隨著數據量不斷增加,拋開可視化技術講故事是不可能的。數據可視化是一門將數字轉化為有用知識的藝術。
R語言編程提供一套建立可視化和展現數據的內置函數和庫,讓你學習這門藝術。在可視化的技術實現之前,讓我們先看看如何選擇正確的圖表類型。
選擇正確的圖表類型
基本的展現類型有如下四種:
1.???比較
2.???組成
3.???分布
4.???關系
?
為了確定哪一種類型的圖表適合你的數據,我建議你應該回答一些問題比如,
§?在一個圖表中你想展現多少個變量?
§?每個變量中你會顯示多少個數據點?
§?你將要顯示的是一段時間,一些個體還是一些組的數值?
?
下圖是AndrewAbela博士關于選擇正確的圖表類型的一個很好的解釋。
?
在你的日常生活中,大部分時間你會接觸到以下7種圖表。
1.???Scattered Plot(散點圖)
2.???Histogram(柱狀圖)
3.???Bar & Stack Bar Chart (條形圖和堆積條形圖)
4.???Box Plot (箱線圖)
5.???Area Chart(面積圖)
6.???Heat Map(熱點圖)
7.???Correlogram(相關圖)
?
我們將使用如下圖所示的‘大集市數據’樣例來展現如何使用R語言創建可視化。你可以從?https://docs.google.com/spreadsheets/d/1PR5StHxg2jlMCb4IUilGSEwhylXn-3q3EJucSaVolCU/edit#gid=0?查看完整數據集。
現在讓我們一起看如何使用R語言運用這些可視化。
◇◆◇◆◇
散點圖 Scatter Plot
什么時候使用:散點圖是用來觀察兩個連續變量之間的關系。
?
上述的集市數據集中,如果你想根據成本數據可視化商品,那么我們可以使用兩個連續變量的散點圖,即下圖中的Item_Visibility和 Item_MRP。
這是一個使用帶有geom_point()的函數ggplot()的簡單散點圖R語言代碼。
library(ggplot2)????????? // ggplot2 is an R library forvisualizations train.
ggplot(train,aes(Item_Visibility, Item_MRP)) + geom_point() + scale_x_continuous("ItemVisibility", breaks = seq(0,0.35,0.05))+ scale_y_continuous("ItemMRP", breaks = seq(0,270,by = 30))+ theme_bw()
現在我們可以看到第三個變量,一個提供每種數據集特征的類別變量(Item_Type)。下圖中,不同的類別通過不同顏色的item_type表示出來。
增加了category的R語言代碼:
ggplot(train,aes(Item_Visibility, Item_MRP)) + geom_point(aes(color = Item_Type)) +
? scale_x_continuous("ItemVisibility", breaks = seq(0,0.35,0.05))+
? scale_y_continuous("Item MRP",breaks = seq(0,270,by = 30))+
? theme_bw() +labs(title="Scatterplot")
如下圖書所示,我們也可以為每個Item_Type單獨創建散點圖使其之更加直觀清晰。
單個類別的散點圖R語言代碼:
ggplot(train,aes(Item_Visibility, Item_MRP)) + geom_point(aes(color = Item_Type)) +
? scale_x_continuous("ItemVisibility", breaks = seq(0,0.35,0.05))+
? scale_y_continuous("Item MRP",breaks = seq(0,270,by = 30))+
? theme_bw() +labs(title="Scatterplot") + facet_wrap( ~ Item_Type)
這里,facet_wrap將Item_Type包裹在矩陣層中并且發揮了重要作用。
◇◆◇◆◇
柱形圖(Histogram)
什么時候使用:柱形圖用來繪制連續變量。他將數據分解到箱子中,并且展現這些箱子的分布頻率。我們可以不斷的改變這些箱子的大小并且觀察它對可視化的影響。
?
我們的集市數據中,如果我們想知道基于成本的商品計數,如下圖所示,那么我們可以使用基于連續變量Item_MRP的柱形圖。
這是使用帶有geom_histogram()的函數ggplot()的簡單柱形圖R語言代碼。
ggplot(train,aes(Item_MRP)) + geom_histogram(binwidth = 2)+
? scale_x_continuous("Item MRP",breaks = seq(0,270,by = 30))+
? scale_y_continuous("Count", breaks= seq(0,200,by = 20))+
? labs(title = "Histogram")
◇◆◇◆◇
條形圖和堆積條形圖(Bar & Stack Bar Chart)
什么時候使用:當你想繪制一個類別變量或者連續變量和類別變量的一個組合時,建議使用條形圖。
?
我們數據集中,如果我們想知道具體年份創建的商店計數時,如下圖所示,那么使用變量EstablishmentYear的條形圖將是最佳選擇。
這是帶有一個連續變量的函數ggplot()的簡單條形圖R語言代碼。
ggplot(train,aes(Outlet_Establishment_Year)) + geom_bar(fill = "red")+theme_bw()+
? scale_x_continuous("EstablishmentYear", breaks = seq(1985,2010)) +
? scale_y_continuous("Count", breaks= seq(0,1500,150)) +
? coord_flip()+ labs(title = "BarChart") + theme_gray()
◇◆◇◆◇
豎形條形圖(Vertical Bar Chart)
你可以移除參數coord_flip()將其變換成豎形條形圖。
為了了解一個條形圖中,基于商店類型(類別變量)的商品重量(連續變量),使用下述代碼:
ggplot(train,aes(Item_Type, Item_Weight)) + geom_bar(stat = "identity", fill ="darkblue") + scale_x_discrete("Outlet Type")+scale_y_continuous("Item Weight", breaks = seq(0,15000, by = 500))+theme(axis.text.x = element_text(angle = 90, vjust = 0.5)) + labs(title ="Bar Chart")
?
◇◆◇◆◇
堆積條形圖(Stacked Bar chart)
堆積條形圖是條形圖的一種高級版本,用來可視化類別變量的一個組合。
我們的數據集中,如果我們想了解基于類別變量比如種類(OutletType)和位置 (Outlet Location Type)的商店計數,堆積條形圖將會是最佳選擇。
這是使用函數ggplot()的簡單堆積條形圖R語言代碼。
ggplot(train,aes(Outlet_Location_Type, fill = Outlet_Type)) + geom_bar()+
labs(title ="Stacked Bar Chart", x = "Outlet Location Type", y ="Count of Outlets")
?
◇◆◇◆◇
箱線圖(Box Plot)
什么時候使用:箱線圖用來繪制類別和連續變量的一個組合。它有助于可視化數據的傳播和檢測異常值。它展示了統計學中五個顯著的數值-最小值,值的25%,中位數,值的75%和最大值。
?
我們的數據集中,如果我們想要確定每個商店具體商品的銷售情況,包括最小值,最大值以及中位數,箱線圖將會有幫助。此外,如下圖所示它還給出了銷售商品的商店信息。
這些黑點表示異常值。異常值檢測和去除是成功數據探索的重要一步。
這是使用帶有geom_boxplot的函數ggplot()的簡單箱線圖R語言代碼。
ggplot(train,aes(Outlet_Identifier, Item_Outlet_Sales)) + geom_boxplot(fill ="red")+
scale_y_continuous("ItemOutlet Sales", breaks= seq(0,15000, by=500))+
labs(title = "BoxPlot", x = "Outlet Identifier")
?
◇◆◇◆◇
面積圖(Area Chart)
什么時候使用:面積圖用來顯示變量或者數據集的連續性。它和線圖非常相似,并且通常用來時間序列繪制。此外,它也被用來繪制連續變量和分析潛在趨勢。
?
我們的數據集中,當我們想分析商店商品的銷售趨勢時,我們可以繪制如下面積圖。它顯示了基于銷售商品的商店計數。
這是帶有geom_area的函數ggplot()的顯示商店商品銷售連續性的簡單面積圖R語言代碼。
ggplot(train,aes(Item_Outlet_Sales)) + geom_area(stat = "bin", bins = 30, fill ="steelblue") + scale_x_continuous(breaks = seq(0,11000,1000))+labs(title = "Area Chart", x = "Item Outlet Sales", y ="Count")
?
◇◆◇◆◇
熱點圖(Heat Map)
什么時候使用:熱點圖使用一張二維圖像中顏色的強度(密度)來顯示2,3個或者更多變量之間的關系。它允許你探索軸的兩個緯度以及顏色密度表示的第三個緯度。
我們的數據集中,如果我們想知道每個商店中每個商品的成本,如下圖所示,我們可以使用數據集中的3個變量MRP,OutletIdentifier和Item Type 來繪制熱點圖。
黑色部分表示商品MRP接近50。亮一些的部分表示商品MRP接近250。
這是一個使用函數ggplot()的簡單熱點圖R語言代碼。
?ggplot(train, aes(Outlet_Identifier,Item_Type))+
? geom_raster(aes(fill = Item_MRP))+
? labs(title ="Heat Map", x ="Outlet Identifier", y = "Item Type")+
? scale_fill_continuous(name = "ItemMRP")
?
◇◆◇◆◇
相關圖(Correlogram)
什么時候使用:相關圖用來測試數據中可用變量之間的相關程度。矩陣中小方框可以被添加陰影或者著色來表示相關值。
?
顏色越深,變量間的相關值越高。正的相關值用藍色表示,負的相關值用紅色表示。顏色密度和相關值成正比關系。
我們的數據集中,讓我們通過下圖來查看商品成本,重量,可見度與商店成立年份和商店銷售之間的相關性。
我們的例子中,我們可以看到商品成本和商店銷售正相關,商品重量和可見度負相關。
這是使用函數corrgram()的簡單相關圖R語言代碼。
install.packages("corrgram")
library(corrgram)
?
corrgram(train,order=NULL, panel=panel.shade, text.panel=panel.txt,
?????????? main="Correlogram")
?
現在我想你使用起來R語言編程中的ggplot2庫將會很容易了。
?
除了可視化之外,你可以通過點擊閱讀原文訪問我們的Google Analytics Data Mining with R(包括三個應用)在線研討會記錄學習使用R語言進行數據挖掘。
譯者介紹
王海倫
IT從業者,對大數據云計算人工智能等前沿技術非常感興趣。
往期精彩文章推薦,點擊圖片可閱讀
2016年十佳人工智能和機器學習圖書