iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 20
1
Big Data

R語言與機器學習見面會系列 第 20

Day20 R語言散佈圖(Scattper Plot)

散佈圖(Scattper Plot)可以描述二維以上的資料變數分佈情形,她能神奇的把資料分析結果用最淺白的方式讓人閱讀,透過淡化對照組數據以及重點聚焦,我們能讓每個點有著長幼之分,有時計算相關係數之前(correlation coefficient),我們經常先畫散佈圖,並暗自希望數據能呈現出迴歸直線(regression line)。

ggplot2散佈圖函式


geom_point(mapping = NULL, data = NULL, stat = "identity", position = "identity",  
  na.rm = FALSE, ...) 

http://docs.ggplot2.org/0.9.3.1/geom_point.html

我們在資料夾MyR新增一支Day20.R
http://ithelp.ithome.com.tw/upload/images/20161220/20103434EYpTnC0GRm.jpg

散佈圖


散佈圖會用R內建的鑽石資料集來測試,電視上都有演,決定鑽石最主要決定價格的原因是大小(克拉數),但廣告中還常強調鑽石的顏色(color)、淨度(clarity)、切工(cut),試試看用散佈圖來觀察價格!

在Day20.R中輸入程式碼

#散佈圖(1) 
ggplot(diamonds, aes(x = carat, y = price)) + geom_point() 

執行結果

http://ithelp.ithome.com.tw/upload/images/20161220/20103434MyzELHkRSg.png

大多數的鑽石統計資料集中在0.2-1.2克拉,而且克拉數越大,價格越高,呈現一種陡峭的曲線。

密度圖


試試看密度圖來看鑽石大小的分佈:

#密度圖(density) 
ggplot(data = diamonds) + geom_density(aes(x = carat), fill = "#003366") 

http://ithelp.ithome.com.tw/upload/images/20161220/20103434mtDkBjhe8C.png

趕快和老婆說,越小顆(0.2-0.4)的才是王道!!!是不是!

表達完二個維度了,如果想看第三個維度:鑽石的淨度?

多個維度


利用點的顏色(color)表達第3個維度:鑽石的淨度

在Day20.R中輸入程式碼

#散佈圖(2) 鑽石的淨度
ggplot(diamonds, aes(x = carat, y = price)) + geom_point(aes(color = clarity)) 

執行結果
http://ithelp.ithome.com.tw/upload/images/20161220/20103434p943J8KUls.jpg

嗯,越完美無瑕(IF)的鑽石,價格相較其他極輕微(VVS)、輕微暇(VS)、微暇(SI)來得高。

也可以加上不同形狀(shape)的點來表達淨度(clarity)差異:

ggplot(diamonds, aes(x = carat, y = price, shape = clarity)) + geom_point(aes(color = clarity))

也許點座標少一點應該會更合適!

散佈圖矩陣


當出現更第4個維度(變數)的需求時,可以考慮用矩陣方式表示關係。

在Day20.R中輸入程式碼

#散佈圖矩陣(3) Y軸:切工  X軸:顏色 
ggplot(diamonds, aes(x = carat, y = price)) + geom_point(aes(color = color)) + facet_grid(cut ~ color) 

執行結果:

http://ithelp.ithome.com.tw/upload/images/20161220/20103434q1srzjev2w.png

散佈圖加上密度


試著用Iris鳶尾花資料集來觀察3個亞種花瓣長度及寬度的分佈。

在Day20.R輸入以下程式碼

ggplot(iris, aes(x = Petal.Length, y = Petal.Width)) + geom_point(aes(color = Species)) + stat_density2d(aes(color = Species)) 

http://ithelp.ithome.com.tw/upload/images/20161220/20103434K1Of2B0up0.png
可以蠻清楚分辨出觀測數據是屬於哪一種亞種。

點的大小


先使用顏色分色鳶尾花亞種,再利用花瓣長度決定點的大小,再加一點半透明。

qplot(Sepal.Length, Petal.Length, data = iris, color = Species, size = Petal.Width, alpha = I(0.7))

執行結果:
http://ithelp.ithome.com.tw/upload/images/20161220/20103434vPYolHjSSL.png

參考:

http://docs.ggplot2.org/0.9.3.1/geom_point.html
http://docs.ggplot2.org/0.9.3.1/facet_grid.html

R Graphics cookbook


鑽石總是和浪漫在一起
http://ithelp.ithome.com.tw/upload/images/20161220/201034347atZChpCqL.jpg

2009.10 honeymoon攝於paris,france


上一篇
Day19 R語言小提琴圖(Violin Plot)
下一篇
Day21 R語言地圖(Map)與網路圖(Network Graph)
系列文
R語言與機器學習見面會30

1 則留言

我要留言

立即登入留言