iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 5
0
自我挑戰組

使用R進行探索式資料分析之初探系列 第 5

ggplot2探討車子油耗表現之一

  • 分享至 

  • xImage
  •  

上一篇以鐵達尼號的存活機率展示了ggplot2的操作性,而這一篇會再深入ggplot2一些參數和函式,當然ggplot2的參數及數量相當多,我會以最常用一些參數對於我們在做資料探索及溝通為主,當然這一部分是我的主觀的認定,若是各位覺得我沒提到ggplot2的參數及函式,但又很常用,歡迎各位留言給我,教學相長;而在深入ggplot2要以幾篇呈現目前沒有規劃,畢竟我們白天都有些事要做,不是全職在寫文章的人,因上一篇晚上寫得太久隔天白天超沒精神.....

在開始前還是一樣必須載入套件會使用到tidyverse該套件,而這個套件載扮演甚麼角色ㄋ?可參閱下列網址對於tidyverse的介紹https://en.wikipedia.org/wiki/Tidyverse
若是沒有安裝套件可執行下列程式碼並載入套件或參考前面幾篇的講解

install.packages("tidyverse")

library(tidyverse)

library(ggplot2)

這一次使用的資料集為mpg為ggplot2內建資料集,因此你必須載入ggplot2套件,該資料集才會出現,而這一份資料集為美國環保署收集38種類型汽車,在高速公路上所表現的油耗,資料集的變數說明可輸入?mpg程式碼,在RStidio的右下角出現資料集的變數說明。

首先我們先掌握資料集的初步資訊

mpg
str(mpg)

執行mpg指令出現下圖資料列表以第一筆為例製造商為奧迪、型號為A4、引擎cc數為1800cc、年份為1999、4汽缸自排前置驅動、在城市行駛每加侖可行駛18英里、在高速公路每加侖可行駛29英里等。
https://ithelp.ithome.com.tw/upload/images/20200905/20120756Yk2jyLluPP.png

執行**str(mpg)**出現下圖mpg共計234筆資料11個變數以及變數的資料型態
https://ithelp.ithome.com.tw/upload/images/20200905/20120756va6n5Aqm2v.png

了解相關資料集後,在油價飆漲的年代我們最關心每加侖車子可行駛多遠,所以我們提出一個假設引擎cc數大小是否會影響行駛的英里數以高速公路為例

ggplot(data = mpg) + 
  geom_point(mapping = aes(x = displ, y = hwy))

https://ithelp.ithome.com.tw/upload/images/20200905/20120756I818Rxf78J.png

嗯.....看起來在1500cc2500cc每加侖可跑到30英里還有可跑到40英里,但5500cc也有些車子可跑到25英里,似乎可驗證假設引擎的大小會影響行駛的英里數,但又說不出那邊怪。

所以我們加入class變數,該變數為車子的種類如車子是皮卡、休旅車、房車並賦予顏色,在視覺化能有效區分

ggplot(data = mpg)+
  geom_point(mapping = aes(x=displ,y=hwy,color=class))

https://ithelp.ithome.com.tw/upload/images/20200905/20120756jvMKhLiXCU.png
嗯....看起來清楚多了並有很好的解釋,在粉紅色的SUV以及淺藍色的Pickup(皮卡)每加侖跑的英里數坐落在20英里以下,其他車型幾乎每加侖坐落在20英里-30里這個區間,每加侖可跑出30英里以上的車型包含subcompact(超小型房車)、compact(小型房車)、midsize(中型房車),所以透此散佈圖發現車子的重量會影響車子的油耗

在上圖我們加三個變數包含displhwyclass,以中文解釋為引擎的大小在高速路上行駛時車身重量以及引擎大小是否增加油秏,在上圖中我們將車子的種類(Class)以顏色做區分看油秏坐落在哪一個英里數區間,若是大家有仔細看圖的話事需要仔細對應顏色,在資料視覺化而言是有達到視覺化的呈現。

但也只有60分所以ggplot2產生另一個函式稱之為構面子圖facet_wrap(),這可以不同的變數進行組合對於欲探所問題提供精準的做法,我們在以上圖為例子套入構面函式

ggplot(data = mpg)+
  geom_point(mapping = aes(x=displ,y=hwy))+
  facet_wrap(~class,nrow = 2)

https://ithelp.ithome.com.tw/upload/images/20200905/20120756F8rUoGUErW.png
此時我們可以看到將Class變數切成子圖,每個子圖都應英里數,所以分析者或使用者更能清楚每種車子類型坐落在何種英里數區間;在facet_grid(~class)函式中看到~蟲字號,當初以為是一個變數到另一變數之間所有變數都列出,令我很困惑!查了相關原文資料發現蟲字號代表建立的意思,換言之,facet_grid(~class)為例就是建立Class為子圖,程式就是如此!

上圖中我們發現引擎大小和車子的重量會影響油耗表現,所以引擎跟氣缸數(cyl)多寡是否增加引擎(displ)的重量,而車身的重量就是車的驅動(drv)方式,而車的驅動(drv)方式形成車子的類型(class),所以驅動方式會增加車身的重量嗎?

ggplot(data = mpg)+
  geom_point(mapping = aes(x=displ,y=hwy))+
  facet_grid(drv~cyl)

https://ithelp.ithome.com.tw/upload/images/20200905/20120756OMZxo0CjxZ.png

在圖中汽缸數及車的驅動方式的確會影響油耗的表現,假如這是我的研究主題,我的指導教授一定講說不行!你如何證明引擎的重量是汽缸數多寡而形成的,這不夠嚴謹!重作........7788 8877 12345678 ㄟ....人生很無奈的.....不好意思...想到我的論文....拉回來,所以我們換一角度說,我們可以大膽推測引擎的重量和汽缸數的多寡以及車子的重輛跟他的驅動方式必存在一定的關係,因此會影響車子在高速公路上的油耗表現。

今天就先到這邊,有時我在想我的指導教授跟我去廟裏拜拜一樣,你跟神明說了半天神明也不會說甚麼,一切心領神會,我的論文交給我的指導教授,他也不說好,也沒說不好,一切宛如神明一般不說任何一句話,每天晚上只能在鐵人發文撫慰我孤獨及不安的心靈.......


上一篇
用R分析_人類在災難面前是否保有人性的光輝之二
下一篇
ggplot2探討車子油耗表現之二
系列文
使用R進行探索式資料分析之初探30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言