You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改ggplot中回归线的颜色 使其与散点颜色区分

你当前的代码将color='factor(threshold)'写在了ggplot()的全局美学映射中,所有图层默认会继承这个颜色映射规则,因此geom_smooth生成的回归线会和对应分组的散点颜色完全一致,导致辨识度低。

方案1:保留按threshold分组的两条回归线,每条回归线和对应散点颜色区分

如果需要保留分组回归的逻辑,只需要将散点的颜色映射从全局移到geom_point的私有映射中,同时给geom_smooth单独设置分组映射和自定义颜色即可,修改后代码如下:

(ggplot(data=df, mapping=aes(x='score', y='relent')) +
       geom_point(mapping=aes(color='factor(threshold)')) +
       scale_color_manual(values=['darkorange', 'purple']) +
       geom_smooth(method='lm',
                   formula = 'y ~ x+I(x**2)',
                   se=False,
                   mapping=aes(group='factor(threshold)'),
                   color = ['steelblue', 'forestgreen']) +
       geom_vline(xintercept = 766, color = "red", size = 1, linetype = "dashed") +
       labs(y = "Yield",
            x = "Score") +
       theme_bw()
)

你可以根据自己的偏好调整geom_smooth中color参数的颜色值,确保和散点的橙、紫色形成明显区分。

方案2:不需要分组回归,仅生成一条整体回归线

如果只需要展示全量数据的回归趋势,直接给geom_smooth设置固定的单一颜色即可,修改后代码如下:

(ggplot(data=df, mapping=aes(x='score', y='relent')) +
       geom_point(mapping=aes(color='factor(threshold)')) +
       scale_color_manual(values=['darkorange', 'purple']) +
       geom_smooth(method='lm',
                   formula = 'y ~ x+I(x**2)',
                   se=False,
                   color = 'black') +
       geom_vline(xintercept = 766, color = "red", size = 1, linetype = "dashed") +
       labs(y = "Yield",
            x = "Score") +
       theme_bw()
)

核心优化逻辑是仅给需要的图层设置私有美学映射,不要把非公共的映射规则放到全局,就能避免不同图层的样式互相干扰。

内容的提问来源于stack exchange,提问作者rexvirtual

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 03:06:03