iT邦幫忙

1

[R語言]資料分析讀書心得03---Geometric Objects

上次我們看過了散佈圖(geom_point),在ggplot2中,其實有很多不同的geoms,像是長條圖、線圖、盒狀圖等等,都可以透過不同的geoms畫出來。

先來回顧一下之前的點狀圖。

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

https://ithelp.ithome.com.tw/upload/images/20200801/20124935uctGseVF0d.png

若是把point的部分代換成smooth,

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

https://ithelp.ithome.com.tw/upload/images/20200801/20124935aw2s2uQZ39.png

我們會看到,它畫出了一條用來擬合資料的線。而這時候aes()的參數其實會有點不同,像是我們可以試試 linetype

ggplot(data=mpg)+
  geom_smooth(mapping=aes(x=displ,y=hwy,linetype=drv))

https://ithelp.ithome.com.tw/upload/images/20200801/20124935eYmJE4bYQH.png

我們可以看到,它會根據不同的 drv 去繪製不同的擬合線。 geom_smoothaes() 究竟有何種參數呢?我們一樣可以從 ?geom_smooth 去查看,以 geom_smooth 為例,它有:

x,y,alpha,color,fill,group,linetype,size,weight,ymax,ymin

其中 group 也會將資料自行分組,而且它不會加上右邊的方框說明(legend)。

ggplot(data=mpg)+
  geom_smooth(mapping=aes(x=displ,y=hwy,group=drv))

https://ithelp.ithome.com.tw/upload/images/20200801/20124935KEnQwgmxro.png

也可以試試看 color

ggplot(data=mpg)+
  geom_smooth(mapping=aes(x=displ,y=hwy,color=drv))

https://ithelp.ithome.com.tw/upload/images/20200801/20124935gTqqxTJK7P.png

而事實上,我們其實也可以在一個圖表上放兩種不同的geoms。

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

https://ithelp.ithome.com.tw/upload/images/20200801/20124935BXPod9ekvD.png

而以上語法也可以簡化成以下

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

https://ithelp.ithome.com.tw/upload/images/20200801/20124935nJlfcbZYqM.png

但是前提要是你想繪製的geoms的參數是相同的。接著我們可以加上更多花樣

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

https://ithelp.ithome.com.tw/upload/images/20200801/20124935i3vadImrUA.png

如果說你只想看到某個class畫出的擬合線,我們可以試試

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

https://ithelp.ithome.com.tw/upload/images/20200801/201249353x3yxHR8eP.png

如果想要消去灰色的陰影(事實上灰色陰影代表著是利用標準差算出來的信賴區間),可以加上 se=FALSE ,而不想看到 legend 的話可以加上 show.legend=FALSE,如下:

ggplot(data=mpg,mapping=aes(x=displ,y=hwy))+
  geom_smooth(
    data=filter(mpg,class=="subcompact") ,se=FALSE
  )+
  geom_point(mapping=aes(color=class) ,show.legend = FALSE)

https://ithelp.ithome.com.tw/upload/images/20200801/20124935jXGRR97jWE.png

ggplot2 中的 geoms 超過三十種,但是操作方式與 geom_pointgeom_smooth 大致上相似,所以可以根據你想繪製的圖表去找到適合的 geoms ,再加上我們可以同時展示兩種以上的 geoms ,那繪製出精美的圖片似乎也不是問題了。這次到介紹到這裡,謝謝大家。


尚未有邦友留言

立即登入留言