第二章:用图形进行探索性分析
这篇书评可能有关键情节透露
图形是进行探索性数据分析的好方法
library(tidyverse)
一、大引擎汽车比小引擎汽车更耗油吗?
先看一看displ与hwy之间的散点关系:
ggplot(data=mpg)
+ geom_point(mapping=aes(x=displ,y=hwy))
那么,class会不会影响散点的分布呢?
尝试映射为颜色:
ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy,color=class))
尝试映射为大小(但对于类别变量来说不是一个好主意)
ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy,size=class))
若尝试映射为透明度
ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy,alpha=class))
若尝试映射为形状
ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy,shape=class))
可以尝试分面,画在不同的图里:
ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy))+facet_wrap(~class,nrow=2)
可以用不同的几何对象方式来进行可视化
ggplot(data=mpg)+geom_smooth(mapping=aes(x=displ,y=hwy))
ggplot(data=mpg)+geom_smooth(mapping=aes(x=displ,y=hwy,linetype=drv))
也可以将这些覆盖在原始数据上,并按照drv值对所有的点和线进行着色,可以在一张图上使用两种几何对象:
ggplot(data=mpg)+geom_point(mapping=aes(x=displ,y=hwy))+geom_smooth(mapping=aes(x=displ,y=hwy))
等价于:ggplot(data=mpg,mapping=aes(x=displ,y=hwy))+geom_point()+geom_smooth()
ggplot(data=mpg,mapping=aes(x=displ,y=hwy))+geom_point(mapping=aes(color=class))+geom_smooth()
对于一些定性数据的统计,尝试柱状图:
ggplot(data=diamonds)+geom_bar(mapping=aes(x=cut))
如果要比例:
ggplot(data=diamonds)+geom_bar(mapping=aes(x=cut,y=..prop..,group=1))
也可以展示更多的统计变换,比如stat_summary()为每个x设置唯一的y值:
ggplot(data=diamonds)+stat_summary(mapping=aes(x=cut,y=depth),fun.ymin=min,fun.ymax=max,fun.y=median)
ggplot2提供了20多个统计变换,每个统计变换都是一个函数
?stat_bin
你还可以使用color或者fill图形属性来为条形图上色:
ggplot(data=diamonds)+geom_bar(mapping=aes(x=cut,fill=clarity))
position=“fill”可以比较各组之间的比例:
ggplot(data=diamonds)+geom_bar(mapping=aes(x=cut,fill=clarity),position = "fill")
position=“dodge”可以将每组中的条形并列排列,比较每个条形图的具体数值:
ggplot(data=diamonds)+geom_bar(mapping=aes(x=cut,fill=clarity),position = "dodge")
当标签比较长的时候,可以交换x和y轴,尤其是绘制水平箱线图
ggplot(data=mpg,mapping=aes(x=class,y=hwy))+geom_boxplot()
ggplot(data=mpg,mapping=aes(x=class,y=hwy))+geom_boxplot()+coord_flip()