R ggplot2保留分组着色时如何添加全量数据拟合平滑线
实现方法
你当前代码会生成多条分组平滑线,是因为colour = cyl和group = cyl被定义在了ggplot()的全局美学映射中,所有图层默认都会继承该规则按气缸数分组渲染。可以通过以下两种方案实现需求:
方案1:拆分美学映射
把分组着色的规则仅作用于散点图层,平滑线默认使用全局无分组的映射:
df <- mtcars df$cyl <- factor(df$cyl) ggplot(df, aes(x = mpg, y = disp)) + geom_point(aes(colour = cyl, group = cyl), size = 5) + geom_smooth()
方案2:平滑线图层强制覆盖分组规则
如果不想修改原有全局映射,可在平滑线图层单独指定group = 1,强制使用全量数据集拟合,还可自定义线的颜色避免和分组点颜色混淆:
df <- mtcars df$cyl <- factor(df$cyl) ggplot(df, aes(x = mpg, y = disp, colour = cyl, group = cyl)) + geom_point(size = 5) + geom_smooth(aes(group = 1), colour = "black")
最终效果如下图:
内容的提问来源于stack exchange,提问作者Markm0705
相关产品推荐
相关产品推荐

