上次我們看過了散佈圖(geom_point),在ggplot2中,其實有很多不同的geoms,像是長條圖、線圖、盒狀圖等等,都可以透過不同的geoms畫出來。
先來回顧一下之前的點狀圖。
library(tidyverse)
ggplot(data=mpg)+
geom_point(mapping=aes(x=displ,y=hwy))
若是把point的部分代換成smooth,
ggplot(data=mpg)+
geom_smooth(mapping=aes(x=displ,y=hwy))
我們會看到,它畫出了一條用來擬合資料的線。而這時候aes()的參數其實會有點不同,像是我們可以試試 linetype 。
ggplot(data=mpg)+
geom_smooth(mapping=aes(x=displ,y=hwy,linetype=drv))
我們可以看到,它會根據不同的 drv 去繪製不同的擬合線。 geom_smooth 的 aes() 究竟有何種參數呢?我們一樣可以從 ?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))
也可以試試看 color
ggplot(data=mpg)+
geom_smooth(mapping=aes(x=displ,y=hwy,color=drv))
而事實上,我們其實也可以在一個圖表上放兩種不同的geoms。
ggplot(data=mpg)+
geom_smooth(mapping=aes(x=displ,y=hwy))+
geom_point(mapping=aes(x=displ,y=hwy))
而以上語法也可以簡化成以下
ggplot(data=mpg,mapping=aes(x=displ,y=hwy))+
geom_smooth()+
geom_point()
但是前提要是你想繪製的geoms的參數是相同的。接著我們可以加上更多花樣
ggplot(data=mpg,mapping=aes(x=displ,y=hwy))+
geom_smooth()+
geom_point(mapping=aes(color=class))
如果說你只想看到某個class畫出的擬合線,我們可以試試
ggplot(data=mpg,mapping=aes(x=displ,y=hwy))+
geom_smooth(
data=filter(mpg,class=="subcompact")
)+
geom_point(mapping=aes(color=class))
如果想要消去灰色的陰影(事實上灰色陰影代表著是利用標準差算出來的信賴區間),可以加上 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)
在 ggplot2 中的 geoms 超過三十種,但是操作方式與 geom_point 和 geom_smooth 大致上相似,所以可以根據你想繪製的圖表去找到適合的 geoms ,再加上我們可以同時展示兩種以上的 geoms ,那繪製出精美的圖片似乎也不是問題了。這次到介紹到這裡,謝謝大家。