iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 24
0
自我挑戰組

新手 R 語言學習紀錄系列 第 24

Day 24- R語言 ggplot2資料視覺化 Part 1- 基礎繪圖文法及qplot介紹

  • 分享至 

  • xImage
  •  

Day 24- R語言 ggplot2資料視覺化 Part 1- 基礎繪圖文法及qplot介紹
(前言:內個,我只是個剛接觸程式設計的小萌新,如果內文內容、程式碼、統計資料圖寫或畫的不對,還請各位大大指教 Orz)

從今天開始要使用ggplot來做繪圖啦(灑小花花),要記得先安裝ggplot2套件喔 ˊˇˋ

ggplot2真的好有名,功能也超級強大,每個網站都好推薦的說,所以今天開始就使用ggplot來繪圖。

首先我們先來暸解ggplot2的基礎原理及文法。ggplot2的繪圖原理是把一份資料轉換並套用到美學(aesthetics)幾何(geometry)統計 (statistics)座標 (coordinates)繪圖面 (facets)、**及主題(themes)**等使用者自訂的條件,因此,文法大致上分五個部分:aesthetics, geometry, facets, stats及scales 。aesthetics主要包含指定圖表顏色、線的粗細、大小等。Geometry主要指定圖表類型,例如點圖、線圖、長條圖…等,如果要在一張圖表中安插多張小圖表的話可以使用facets,如果要做資料的統計轉換時可以使用stats,scales則是修改點線的顏色、xy軸資料範圍等其他參數。

至於今天要學的是基礎的繪圖函數qplot(),qplot的功能大致上與R函數內建的plot()函數相同,就只是運用不同的套件執行這樣 ,不過我們也可以先用qplot做練習,適應一下ggplot的引數及程式寫法
qplot的作圖函數很簡單,大致上就是qplot(x軸資料, y軸資料, data = 使用資料, 其他引數)註:如果使用錢幣記號來直接指定資料來源的話,data可以不用打

首先先畫點圖,這次一樣用的也是cp空氣品質監測資料,用到的是PM2.5及 PM10資料。
先做單變量資料的繪圖,如果是單變量的話qplot會自動將圖表類型轉成直方圖,程式碼如下:

qplot(cp$PM2.5, xlab = "PM2.5", ylab = "Count")	

輸出結果如下:
https://ithelp.ithome.com.tw/upload/images/20191010/20120887CawJZkvfua.png
如果想要為資料上色的話,可以使用fill = 條件引數
再來做雙變量繪圖,雙變量繪圖就是點圖了,程式碼如下:

qplot(cp$PM10, cp$PM2.5, color = cp$TEMP, xlab = "PM10", ylab = "PM2.5")

可以看到我用PM10當作x軸指標,PM2.5為y軸指標,color使用溫度來當作點的顏色依據,xlabylab 和基礎作圖函數則沒什麼兩樣,是用來指定坐標名稱的,
繪圖結果如下:
https://ithelp.ithome.com.tw/upload/images/20191010/20120887e0VfaBo7zA.png
另外如果要指定點的形狀的話,可以用shapes = 條件調整,如果想要為資料上色的話,可以使用fill = 條件引數

接下來要用facets 這個特性做圖,facets可以讓使用者根據不同的條件讓ggplot自動為圖形做分類,語法為:facets = 直向分類~橫向分類。以PM10, PM2.5對月份的關係為例,程式碼如下:

qplot(cp$PM10, cp$PM2.5, data = cp, facets = .~cp$month, xlab = "PM10", ylab = "PM2.5")

繪圖結果如下:
https://ithelp.ithome.com.tw/upload/images/20191010/20120887Gvp9HuRDpv.png
如果把facets的.~cp$month顛倒過來的話,會產生這樣圖表:
https://ithelp.ithome.com.tw/upload/images/20191010/20120887Gj7ElhdnCz.png

當然,這張點圖也可以畫成直條圖的樣子,程式碼如下:

qplot(cp$PM10, data = cp, facets = cp$month~., xlab = "PM10", ylab = "PM2.5", binwidth = 2)

繪圖結果如下:
https://ithelp.ithome.com.tw/upload/images/20191010/20120887dbeMUXWGDD.png
(註:binwidth負責的是直方圖的分組間隔)

最後要學的是geometry的特性,這使用這個特性可以畫出漸近線及針對圖表形式作改變,例如點、線、盒狀圖等圖表。畫出漸近線的程式碼如下:

qplot(cp$PM10, cp$PM2.5, data = cp, xlab = "PM10", ylab = "PM2.5", geom = c("point", "smooth"), xlim = c(0, 450), ylim = c(0,410))

https://ithelp.ithome.com.tw/upload/images/20191010/20120887sdJy5lXDUJ.png
這邊我有設定xlimylim來調整圖表的比例(不然會有一小片沒有資料),另外geom引數要有pointsmooth引數,才會同時顯示點及漸近線

明天繼續學ggplot函數吧

參考資料:

  1. https://yijutseng.github.io/DataScienceRBook/vis.html
  2. https://blog.gtwang.org/r/ggplot2-tutorial-basic-concept-and-qplot/

上一篇
Day 23- R語言 資料篩選&基礎統計
下一篇
Day 25- R語言 ggplot2資料視覺化 Part 2- ggplot函數
系列文
新手 R 語言學習紀錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言