ggplot折线图保留指定颜色线型并添加对应图例
问题根源
ggplot2 仅会对aes()内部映射的视觉属性自动生成图例。你现有代码把三条线的颜色、线型参数都写在aes()外部作为固定值传入,系统无法将这些视觉属性和分组标签关联,因此不会渲染图例。
修正代码
完全保留你预设的所有线条颜色、线型、线宽参数,仅调整映射逻辑补全图例,修正后代码如下:
RecoveryCombined <- as.data.frame(RecoveryCombined) plotcombined <- ggplot(data = RecoveryCombined, aes(x = t)) + geom_line(aes(y = BP0, color = "BP0", linetype = "BP0"), lwd = 0.9) + geom_line(aes(y = BP30, color = "BP30", linetype = "BP30"), lwd = 0.9) + geom_line(aes(y = BP60, color = "BP60", linetype = "BP60"), lwd = 0.9) + facet_wrap(~k + g) + scale_x_continuous(breaks = seq(0, 10, by = 1)) + # 匹配原有颜色参数,无样式改动 scale_color_manual(values = c( "BP0" = "cornflowerblue", "BP30" = "chocolate1", "BP60" = "darkslategrey" )) + # 匹配原有线型参数,无样式改动 scale_linetype_manual(values = c( "BP0" = "solid", "BP30" = "twodash", "BP60" = "longdash" )) + labs( title = "Recovery Trajectory for BI = 200", x = "Time Period", y = "Relative Performance", color = "Legend", linetype = "Legend" ) print(plotcombined)
注意事项
- 所有线条视觉效果和你原代码输出完全一致,不会破坏现有配图风格
- 颜色、线型映射共用同一个图例,不会出现重复的双图例问题
- 无需转换数据格式,代码改动量最小
- 已移除原代码中
labs()末尾多余的+语法错误
内容的提问来源于stack exchange,提问作者Emma Kuttler
相关产品推荐
相关产品推荐

