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
相关产品推荐
相关产品推荐

