上次我们看过了散布图(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 ,那绘製出精美的图片似乎也不是问题了。这次到介绍到这里,谢谢大家。