上次提到在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 的关係其实相当複杂,不过这篇文章的介绍主要是希望大家可以稍微了解图形的画法,今天的介绍到这,谢谢大家。