如何为ggplot的geom_line()函数添加图例(无需额外分类向量)
为ggplot折线图添加图例(无需重构数据)
问题说明
现有如下R代码绘制两条折线,但图表未生成图例,希望添加类似示例图中“Periodo”样式的图例,但不想通过新增分类向量的方式实现:
x <- c(2,4,6,8,10) y <- (6:10) z <- (1:5) df <- data.frame(x,y,z) ggplot(df) + geom_line(aes(x=z, y=x), color="black") + geom_line(aes(x=z, y=y), color="red")
解决方案
无需重构数据集,只需将颜色映射移入aes()内部,再通过scale_color_manual()手动配置颜色和图例信息即可。修改后的完整代码如下:
x <- c(2,4,6,8,10) y <- (6:10) z <- (1:5) df <- data.frame(x,y,z) ggplot(df) + geom_line(aes(x=z, y=x, color="X系列")) + geom_line(aes(x=z, y=y, color="Y系列")) + scale_color_manual( name = "Periodo", # 自定义图例标题 values = c("X系列" = "black", "Y系列" = "red") # 对应每条线的颜色 )
关键说明
- 将原本写在
geom_line()外部的color参数移到aes()中,用字符串作为每条线的图例标识 - 通过
scale_color_manual()可以自定义图例标题、每条标识对应的颜色,完全匹配你想要的图例效果
内容的提问来源于stack exchange,提问作者Alexis SM
相关产品推荐
相关产品推荐

