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

ggplot2中如何将图例线条改为黑色(保持绘图线条颜色不变)

ggplot2图例线条颜色修改问题解决方法

问题描述

我用ggplot2绘制了多条折线,代码如下:

ggplot() +
  geom_line(aes(x=1:10, y=1:10,linetype = "Group A (CO[2] )"),color="red", size=3) +
  geom_line(aes(x=1:10, y=2:11,linetype = "Group B (SO[2] )"), size=3, color="blue") +
  geom_line(aes(x=1:10, y=3:12,linetype = "Group C (NO[2] )"),color="red", size=3) +
  geom_line(aes(x=1:10, y=4:13,linetype = "Group D (XO[2] )"), size=3, color="blue") +
  scale_color_manual("Legend Title",
                     values=c("Group A (CO[2] )"="red", "Group B (SO[2] )"="blue","Group C (NO[2] )" = "red","Group D (XO[2] )" = "blue"),
                     labels=c(expression("(N"[R]*",N"[B]*")"),
                              expression("(N"[R]*",I"[B]*")"),
                              expression("(I"[R]*",N"[B]*")"),
                              expression("(I"[R]*",I"[B]*")")))+
  scale_linetype_manual("Legend Title", 
                        values=c("Group A (CO[2] )"="dashed", "Group B (SO[2] )"="dotted","Group C (NO[2] )" = "twodash","Group D (XO[2] )" = "dotdash"),
                        labels=c(expression("(N"[R]*",N"[B]*")"),
                                 expression("(N"[R]*",I"[B]*")"),
                                 expression("(I"[R]*",N"[B]*")"),
                                 expression("(I"[R]*",I"[B]*")")))+
  guides(color = "none")

生成的图表图例线条均为蓝色,希望将图例线条改为黑色,同时保持绘图区的折线颜色和线型不变,但使用guides(color = "none")未达到预期效果。

解决方案

问题根源是color与linetype的图例关联,guides(color = "none")仅隐藏颜色图例,未修改线型图例的颜色。通过guides()中的linetype参数,使用override.aes覆盖图例的颜色设置即可解决。

修改后的代码:

ggplot() +
  geom_line(aes(x=1:10, y=1:10, linetype = "Group A (CO[2] )"), color="red", size=3) +
  geom_line(aes(x=1:10, y=2:11, linetype = "Group B (SO[2] )"), size=3, color="blue") +
  geom_line(aes(x=1:10, y=3:12, linetype = "Group C (NO[2] )"), color="red", size=3) +
  geom_line(aes(x=1:10, y=4:13, linetype = "Group D (XO[2] )"), size=3, color="blue") +
  scale_color_manual("Legend Title",
                     values=c("Group A (CO[2] )"="red", "Group B (SO[2] )"="blue","Group C (NO[2] )" = "red","Group D (XO[2] )" = "blue"),
                     labels=c(expression("(N"[R]*",N"[B]*")"),
                              expression("(N"[R]*",I"[B]*")"),
                              expression("(I"[R]*",N"[B]*")"),
                              expression("(I"[R]*",I"[B]*"))))+
  scale_linetype_manual("Legend Title", 
                        values=c("Group A (CO[2] )"="dashed", "Group B (SO[2] )"="dotted","Group C (NO[2] )" = "twodash","Group D (XO[2] )" = "dotdash"),
                        labels=c(expression("(N"[R]*",N"[B]*")"),
                                 expression("(N"[R]*",I"[B]*")"),
                                 expression("(I"[R]*",N"[B]*")"),
                                 expression("(I"[R]*",I"[B]*"))))+
  guides(
    color = "none",
    linetype = guide_legend(override.aes = list(color = "black"))
  )

关键说明

  • guide_legend(override.aes = list(color = "black")):强制将线型图例中的线条颜色改为黑色,不影响绘图区折线的原有颜色。
  • 保留guides(color = "none"):隐藏多余的颜色图例,避免出现重复图例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 05:17:56