1. 在图中添加平滑曲线
如果散点图中数据点太多,数据的实际趋势可能被掩盖,这时候九二一使用geom_smooth(),在图中添加一条平滑曲线
ggplot(mpg, aes(displ, hwy))+
geom_point()+
geom_smooth()
在散点图上绘制了一条平滑曲线,其中灰色部分表示逐点置信区间用以评估不确定性。如果不想绘制置信区间,可以输入geom_smooth(se=FALSE)
method是geom_smooth()的重要参数之一,提供了平滑曲线的多种拟合方式
method = "loess"是n较小时的默认选项,使用局部回归拟合,曲线的平滑程度由参数span控制,其取值范围从0(很不平滑)到1(很平滑)
ggplot(mpg, aes(displ, hwy))+
geom_point() + geom_smooth(span=0.2)
ggplot(mpg, aes(displ, hwy))+
geom_point() + geom_smooth(span=1)
Loess对于大数据并不十分适用,因此当n超过1000时将会默认采用另一种平滑算法
method="gam"可以调用mgcv包来拟合一个广义可加模型
需要先加载mgcv包,然后调用公式 formula = y ~ s(x) 或 y ~ s(x, bs = “cs”)(用于大量数据),这是数据量超过1000时ggplot2的默认选项
library(mgcv)
ggplot(mpg, aes(displ, hwy))+
geom_point()+
geom_smooth(method = "gam", formula = y ~ s(x))
method = "lm"拟合线性模型,默认进行线性拟合
ggplot(mpg, aes(displ, hwy))+
geom_point()+
geom_smooth(method = "lm")
method = “rlm” 与 lm()类似,但它拟合算法更稳健,因此结果对异常值不太敏感。这一方法是R包MASS的一部分,因此使用时需要先加载R包MASS
2. 箱线图和扰动点图
如果数据集中包含了分类变量和多个连续变量,那么可能需要了解连续变量在不同分类变量取值下的变化情况
ggplot(mpg, aes(drv, hwy))+
geom_point()
由于车辆类别和耗油量取值均较少,图形重叠问题比较严重。大量数据点堆积致使数据分布不太明显,下面介绍3种工具来解决这个问题
- 扰动点图,geom_jitter(),在数据中加入一些随机噪声避免图形重叠
- 箱线图,geom_boxplot(),用若干统计量概括数据分布情况
- 小提琴图,geom_violin(),简要展示分布“密度”,突出数据分布密集的区域
ggplot(mpg, aes(drv, hwy)) + geom_jitter()
ggplot(mpg, aes(drv, hwy)) + geom_boxplot()
ggplot(mpg, aes(drv, hwy)) + geom_violin()
每种方法都有它的优势和补足
箱线图只用5个数字对分布进行概括,过于简略
扰动点图虽将所有的点都绘入图中却只适用于相对小的数据集
小提琴图展示信息最丰富,却依赖于分布密度的计算,这有时会很难解释