智能OPPO手機價格聯盟

最棒的7種R語言數據可視化

大數據分析挖掘2020-11-19 13:02:30

我 ?相 ?信 ?這 ?么 ?優秀 ?的 ?你?

?已 ?經 ?置 頂??了 ?我

翻譯|王海倫?選文|小象??

轉載請聯系后臺




隨著數據量不斷增加,拋開可視化技術講故事是不可能的。數據可視化是一門將數字轉化為有用知識的藝術。


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年十佳人工智能和機器學習圖書


北京快乐8中奖规则 全球通彩票 平特肖公式论坛 (-^O^-)MG搞笑斑马投注 (*^▽^*)MG孙悟空爆分打法 湖北快3基本走势图 (*^▽^*)MG宙斯古代财富游戏规则 (★^O^★)MG三剑客和女王_官方版 (-^O^-)MG丧尸来袭玩法介绍 2014甘肃快3走势图 赛马会香港 (★^O^★)MG丛林巫师_豪华版 (*^▽^*)MG丛林心脏怎么玩 内蒙古快三晚间 (★^O^★)MG外星大袭击彩金 出尽特玛与连码 福彩30选5开奖时间