上次提到在ggplot2裡面有很多geoms,每個geoms內部都有一個參數stat,如果我們現在感興趣的是 geom_bar (長條圖),我們可以透過跟之前一樣的方式,輸入 ?geom_bar 去查看它的stat參數的預設值,如果我們去查看 ?geom_bar 裡面的說明內容,會看到有一個部分叫做 computed variable ,意思是透過 geom_bar 我們形成了新的變數。 geom_bar 的 computed 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))
我們就做出了一個長條圖,但是如果我們去看一下diamonds這筆資料
head(diamonds)
會發現我們根本沒有圖形上y軸顯示的count,而這個count其實就是我們剛剛的computed variable ,而長條圖的內建就是透過count或prop去畫圖(count是個數,prop是比例),我們可以試試以下程式碼。
ggplot(data=diamonds)+
geom_bar(mapping=aes(x=cut,y=..prop..,group=1))
如果要改成比例,則需要加上 group=1 才會顯示出正確的比例。
剛剛提到每個geom都有一個預設的stat,geom_bar的預設stat是 count 。 而其實每個stat也有自己預設的geom,但是他並不是剛剛好的一一對應。到這裡是不是一頭霧水呢?其實說那麼多只是想說明,當你圖畫錯的時候,先別慌,可以查查是不是stat的設定錯誤了,但是其實 Rstudio 有附上 cheatsheet 來比對,所以忘記了就上去察看就是了。
stat 跟 geom 的關係其實相當複雜,不過這篇文章的介紹主要是希望大家可以稍微了解圖形的畫法,今天的介紹到這,謝謝大家。