R語言可視化——散點圖及其美化技巧!

今天開始跟大家分享散點圖及其美化技巧!

R語言中的散點圖需要兩個數值型變數分別作為X軸、Y軸映射對象,同時通過顏色、大小、形狀進行分類變數映射。

由於散點圖在數據量較多的情況下效果更佳,這裡使用ggplot包內自帶的數據集diamonds進行案例演示。

ggplot(diamonds,aes(carat,price))+geom_point()n

在R中製作散點圖的基本語法如上,數據集、X軸、Y軸,最後是散點圖圖層。

以上散點圖是最簡單的不加任何修飾的默認圖形,通過在aes映射中添加分類變數,以大小、顏色、形狀進行區分,就可以製作出多系列散點圖。

散點圖(形狀分類)

ggplot(diamonds,aes(carat,price))+geom_point(aes(shape=cut))n

散點圖(顏色分類)

ggplot(diamonds,aes(carat,price))+geom_point(aes(colour=cut))n

散點圖(大小分類)

ggplot(diamonds,aes(carat,price))+geom_point(aes(size=cut))n

也可以同時在一個函數語句中加入兩個以上的分類指標參數。

ggplot(diamonds,aes(carat,price))+geom_point(aes(colour=cut,size=table))n

由於該數據集記錄較多,所以數據點相互重合,很多區域很難辨識,R語言中提供了兩種處理方式:

使用alpha參數(透明化處理):

ggplot(diamonds,aes(carat,price))+geom_point(alpha = 1/10)n

使用像素級散點圖:

ggplot(diamonds,aes(carat,price))+geom_point(shape=".")n

由於散點圖可以通過添加size參數用來展示某一指標在散點上的大小,所以基本也不需要單獨的氣泡圖函數。

以上散點圖都沒有考慮過美化的問題;這裡通過添加主題、顏色模板可以將其美化:

ggplot(diamonds,aes(carat,price))+ngeom_point(aes(colour=cut))+nggtitle("Scatter Plot")+ntheme_economist(base_size=14)+nscale_colour_economist()+nguides(colour=guide_legend(title=NULL))n

ggplot(diamonds,aes(carat,price))+ngeom_point(aes(colour=cut,size=table))+nggtitle("Scatter Plot")+ntheme_wsj()+nscale_colour_wsj()+nguides(size=guide_legend(title=NULL),colour=guide_legend(title=NULL))n

ggplot(diamonds,aes(carat,price))+ngeom_point(aes(colour=cut,size=table))+nggtitle("Scatter Plot")+ntheme_economist(base_size=14)+nscale_colour_economist()+nguides(size=guide_legend(title=NULL),colour=guide_legend(title=NULL))n

當然,如果你覺得上數據集太過密集,想要看某一個區域內的具體分布情況,只需要添加xlim()、ylim()參數即可:

ggplot(diamonds,aes(carat,price))+ngeom_point(aes(colour=cut,size=table))+nggtitle("Scatter Plot")+ntheme_wsj()+nscale_colour_wsj()+nguides(size=guide_legend(title=NULL),colour=guide_legend(title=NULL))+nxlim(1,2)+nylim(5000,10000)n

ggplot(diamonds,aes(carat,price))+ngeom_point(aes(colour=cut,size=table))+nggtitle("Scatter Plot")+ntheme_economist(base_size=14)+nscale_colour_economist()+nguides(size=guide_legend(title=NULL),colour=guide_legend(title=NULL))+nxlim(1,2)+nylim(5000,10000)n

最後,如果你想要擬合出該數據集的走勢曲線,也可以通過添加geom_smooth()參數實現:

ggplot(diamonds,aes(carat,price))+ngeom_point()+ngeom_smooth(method=lm)+ntheme_classic()n

散點圖函數結合統計變換之後可以衍生無窮多中圖表類型,具體的圖表類型細節,可以參考哈德利的ggplot原著。

聯繫方式:

微信:ljty1991

博客主頁:raindus home

個人公眾號:數據小魔方(datamofang)

團隊公眾號:EasyCharts

qq交流群:[魔方學院]553270834


推薦閱讀:

可能是比Python更方便的詞雲製作了
亮瞎雙眼的Power BI自定義可視化圖表(2017最新版)
大數據可視化引擎 DHAgency:多樣數據,實時展示
數據表管理技能大科普
杭州租房市場初探

TAG:R编程语言 | 数据可视化 | 图表 |