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

为ggplot密度图指定自定义线条颜色并调整图例样式

解决方法:自定义密度线条颜色与图例符号调整

1. 模拟可复现数据

先构造包含9个模型的示例数据集,方便后续测试:

library(ggplot2)
set.seed(123) # 确保结果可复现

# 生成9个模型的模拟数据
model_data <- data.frame(
  value = c(rnorm(500, mean = 0, sd = 1),
            rnorm(500, mean = 0.5, sd = 1.2),
            rnorm(500, mean = -0.3, sd = 0.8),
            rnorm(500, mean = 1, sd = 0.9),
            rnorm(500, mean = -1, sd = 1.1),
            rnorm(500, mean = 0.2, sd = 0.7),
            rnorm(500, mean = -0.7, sd = 1.3),
            rnorm(500, mean = 0.8, sd = 0.6),
            rnorm(500, mean = -0.5, sd = 0.9)),
  model = rep(paste0("Model_", 1:9), each = 500)
)

2. 定义自定义颜色向量

指定9种区分度较高的对应颜色,你可以根据需求自行替换:

line_col <- c("#E69F00", "#56B4E9", "#009E73", "#F0E442", "#0072B2", 
              "#D55E00", "#CC79A7", "#999999", "#000000")

3. 绘制仅带线条的密度图并调整图例

使用geom_density并设置fill = NA只保留线条,同时通过guides()修改图例符号为线条:

ggplot(model_data, aes(x = value, color = model)) +
  geom_density(fill = NA, size = 1) + # 仅显示密度线条,去掉填充
  scale_color_manual(values = line_col) + # 应用自定义颜色向量
  guides(color = guide_legend(override.aes = list(linetype = 1, shape = NA))) + # 图例符号改为线条
  theme_minimal() +
  labs(x = "Value", y = "Density", title = "Density Plot of 9 Models (Lines Only)")

关键说明

  • geom_density(fill = NA):移除直方图填充色,仅保留密度线条轮廓
  • scale_color_manual(values = line_col):将自定义颜色映射到每个模型
  • guides(color = guide_legend(override.aes = list(linetype = 1, shape = NA))):强制图例显示线条符号,替换默认的填充方块;shape = NA隐藏默认点符号,linetype = 1设置为实线

如果你的原始数据是宽格式(每个模型为单独列),可先通过tidyr::pivot_longer转换为长格式,再套用上述代码绘制。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 09:02:08