iT邦幫忙

0

[R語言]資料分析讀書心得04---geom and stat

上次提到在ggplot2裡面有很多geoms,每個geoms內部都有一個參數stat,如果我們現在感興趣的是 geom_bar (長條圖),我們可以透過跟之前一樣的方式,輸入 ?geom_bar 去查看它的stat參數的預設值,如果我們去查看 ?geom_bar 裡面的說明內容,會看到有一個部分叫做 computed variable ,意思是透過 geom_bar 我們形成了新的變數。 geom_barcomputed variable 如下:

Computed variables:

1.count:number of points in bin

2.prop:groupwise proportion

而不同的geom當然有不同的stat預設值以及不同的Computed variable,所以當畫圖時,要特別小心你的stat是設定在什麼值,以及有什麼computed varible 可以用。說那麼多,直接舉例子來看吧!

library(tidyverse)

我們首先看到如果我們程式碼打這樣,會發生甚麼事情呢?

ggplot(data=diamonds)+
geom_bar(mapping=aes(x=cut,y=color))

則我們的output會跑出:

錯誤: stat_count() can only have an x or y aesthetic.
Run rlang::last_error() to see where the error occurred.

這段錯誤訊息是在說明,其實geom_bar 只能有x或是y一個變數,不能同時出現,所以也說明不同的geom有的參數不會完全相同(不同於之前的散佈圖)。所以我們把程式碼改成:

ggplot(data=diamonds)+
  geom_bar(mapping=aes(x=cut))

https://ithelp.ithome.com.tw/upload/images/20200803/201249354emKwAXZXk.png

我們就做出了一個長條圖,但是如果我們去看一下diamonds這筆資料

head(diamonds)

https://ithelp.ithome.com.tw/upload/images/20200803/20124935YSY7kHmi5X.png

會發現我們根本沒有圖形上y軸顯示的count,而這個count其實就是我們剛剛的computed variable ,而長條圖的內建就是透過count或prop去畫圖(count是個數,prop是比例),我們可以試試以下程式碼。

ggplot(data=diamonds)+
  geom_bar(mapping=aes(x=cut,y=..prop..,group=1))

https://ithelp.ithome.com.tw/upload/images/20200803/20124935P5Jjx89EWx.png

如果要改成比例,則需要加上 group=1 才會顯示出正確的比例。

剛剛提到每個geom都有一個預設的stat,geom_bar的預設stat是 count 。 而其實每個stat也有自己預設的geom,但是他並不是剛剛好的一一對應。到這裡是不是一頭霧水呢?其實說那麼多只是想說明,當你圖畫錯的時候,先別慌,可以查查是不是stat的設定錯誤了,但是其實 Rstudio 有附上 cheatsheet 來比對,所以忘記了就上去察看就是了。

statgeom 的關係其實相當複雜,不過這篇文章的介紹主要是希望大家可以稍微了解圖形的畫法,今天的介紹到這,謝謝大家。


尚未有邦友留言

立即登入留言