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

ggplot2中结合aes(colour=变量)使用viridis自定义配色的方法

问题根源

配色不生效不是参数冲突,是混淆了ggplot2的两个独立美学映射通道:

  • colour:负责控制线条、点轮廓、文本等线状/轮廓类元素的颜色
  • fill:负责控制条形、多边形、平滑置信区间填充等面状元素的填充色
    你的代码中仅给平滑线映射了colour = gender,但调用的scale_fill_viridis()仅作用于fill通道,完全不会修改线条的配色规则,因此线条始终使用ggplot2默认调色板。
修复方案

将scale_fill_viridis()替换为对应colour通道的viridis标度函数scale_colour_viridis()即可。由于gender是离散分类变量,需要显式指定discrete = TRUE避免函数按连续值解析映射。
修正后的可运行代码:

ggplot(combi_plot, aes(x = day_of_symptoms, y = ct_value)) + 
  geom_smooth(aes(colour = gender)) + 
  xlim(-5, 20) +
  scale_colour_viridis(discrete = TRUE)
补充说明
  • 如果后续绘图同时映射了colour和fill两个通道、需要统一应用viridis配色,同时添加scale_colour_viridis()和scale_fill_viridis()两个标度即可,两个函数支持相同的参数:比如用option = "plasma"/"magma"等切换viridis系列的不同配色变体,用direction = -1翻转配色顺序。
  • geom_smooth默认生成的平滑线附带的置信区间阴影受fill通道控制,如果需要给置信区间也按性别映射填充色,可以在aes()里同时加fill = gender,搭配scale_fill_viridis(discrete = TRUE)就能让线条和对应置信区间的填充色匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:09:22