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

R语言ggplot绘制分组多线图:颜色未按指定显示的原因

R语言ggplot多线图颜色异常问题解决

问题原因

你遇到的黄、绿、粉等未指定颜色,核心原因是代码语法错误:ggplot图层叠加的+号位置不正确,导致scale_color_manual自定义颜色设置未被正确加载,ggplot自动使用了默认的颜色调色板。

你的原代码中,geom_line()语句结束后换行,+scale_color_manual(...)的+号单独在行首,R会将其识别为独立表达式,无法与前面的ggplot对象衔接,因此自定义颜色规则失效。

修正方案

1. 修复语法错误

确保所有图层叠加的+号放在上一行末尾,保证代码连续衔接。

2. 优化变量映射(更贴合需求)

根据你的要求,创建两个独立分组变量:一个区分test1/test2(控制颜色),一个区分模型类型(控制线型),避免用单一变量同时映射两个属性,逻辑更清晰。

完整修正代码

第一步:处理数据集,生成分组变量

roc_mj_cmb_t1= c(0.8115,0.8060,0.8114,0.8340,0.8789,0.8743,0.8807,0.8838,
                 0.7946,0.7904,0.8245,0.8198,0.8721,0.8686,0.8876,0.8763,
                 0.8204,0.8146,0.7982,0.8350, 0.7977,0.8021,0.8137,0.8176)

roc_mj_lab= c(rep("Y1_uni_cmb_test1",4),rep("Y1_Joint_test1",4),
              rep("Y1_uni_cmb_test2",4),rep("Y1_Joint_test2",4),
              rep("Y1_uni_both_test1",4), rep("Y1_uni_both_test2",4))

settin=c("setting 1","setting 2","setting 3","setting 4","setting 1","setting 2","setting 3","setting 4"
         ,"setting 1","setting 2","setting 3","setting 4","setting 1","setting 2","setting 3","setting 4"
         ,"setting 1","setting 2","setting 3","setting 4","setting 1","setting 2","setting 3","setting 4")

data_mj=data.frame(settin,roc_mj_cmb_t1,roc_mj_lab)

# 生成颜色分组:test1统一蓝色,test2统一红色
data_mj$color_group <- ifelse(grepl("test1", data_mj$roc_mj_lab), "test1", "test2")
# 生成线型分组:提取模型类型(uni_cmb/Joint/uni_both)
data_mj$line_type_group <- gsub("Y1_([^_]+)_test\\d", "\\1", data_mj$roc_mj_lab)

第二步:ggplot绘图代码

ggplot(data = data_mj,
       aes(y = roc_mj_cmb_t1, x = settin, group = roc_mj_lab)) +
  geom_line(aes(color = color_group, linetype = line_type_group)) +
  scale_color_manual(values = c("test1" = "blue", "test2" = "red")) +
  scale_linetype_manual(values = c("uni_cmb" = "longdash", "Joint" = "solid", "uni_both" = "dotted")) +
  ylim(0.75, 0.9) +
  labs(color = "测试组", linetype = "模型类型") # 可选:添加图例标题,提升可读性

说明

  • 用color_group单独控制颜色,确保所有test1线条为蓝色,test2为红色;
  • 用line_type_group控制线型,同一测试组内的3种模型用不同线型区分;
  • 使用命名参数设置颜色和线型,避免因因子顺序导致的映射错误,稳定性更强;
  • 修复后的+号位置确保所有自定义设置都能被ggplot正确加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 21:07:01