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

如何在R语言中为两条中位数线设置不同颜色?

修改ggplot2中位数线颜色的方法

要给不同Type的中位数虚线设置不同颜色,只需要把颜色映射到Type变量,再手动指定对应颜色即可,具体修改如下:

关键修改点:

  • 把stat_summary中的固定颜色参数colour = 'black'移到aes()内部,变成aes(group = Type, colour = Type),让颜色和Type绑定
  • 添加scale_colour_manual()函数,为每个Type水平指定目标颜色(根据你的需求,上方虚线设红、下方设蓝,对应你定义的Type顺序设置即可)

修改后的完整代码:

df$Values <- as.numeric(df$Values)
df$Month <- factor(df$Month, levels = month.abb)
df$Type <- factor(df$Type, levels = c("Paddy", "No Paddy"))

ggplot(data = df,
       aes(x = Month, y = Values, fill = Type)) +

  geom_boxplot(position = position_dodge(width = 0.9)) +
  
  stat_summary(
    fun.y = median,
    geom = 'line',
    aes(group = Type, colour = Type),  # 绑定颜色与Type变量
    position = position_dodge(width = 0.9),
    size = 5,
    linetype = "dotted"  # 移除原固定黑色参数
  ) +
  
  # 手动指定各Type对应的颜色
  scale_colour_manual(values = c("Paddy" = "red", "No Paddy" = "blue")) +
  
  theme_bw() + 
  
  labs(x = "Month", y = "Groundwater (m)") +
  
  theme(
    axis.text = element_text(size = 20, color = 'black'),
    axis.title = element_text(size = 20, color = 'black'),
    axis.ticks.length = unit(0.5, "cm"),
    
    legend.position = c(0.9, 0.08),
    legend.title = element_blank(),
    legend.text = element_text(size = 20, color = 'black'),
    legend.key.size = unit(1, 'cm'),
    
    panel.border = element_rect(size = 1, color = 'black')
  )

补充说明:

如果不想让颜色映射单独生成新图例(你已有填充色的图例),可以在scale_colour_manual()里加上guide = "none",只保留原填充图例:

scale_colour_manual(values = c("Paddy" = "red", "No Paddy" = "blue"), guide = "none")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:58:12