R语言ggplot2使用facet_wrap分面绘图时如何添加geom_line与stat_smooth图例
ggplot2分面场景下geom_line与stat_smooth图例显示方案
核心原因
图例不生成的本质是你将颜色等样式参数直接写在了aes()美学映射函数外部,这类静态样式设置不会被ggplot2纳入图例生成逻辑,仅作用于图层本身。
修正代码
library(ggplot2) p <- ggplot(data = mtcars, aes(x = hp, y = disp)) + # 在aes内绑定颜色映射,赋值字符串对应图例项名称 geom_line(aes(color = "原始趋势线")) + # 拟合线同样绑定映射,se参数控制是否显示置信区间,可按需调整 stat_smooth(aes(color = "平滑拟合线"), se = TRUE) + facet_wrap(~cyl) + # 手动匹配映射名称与实际颜色值,同时设置图例标题 scale_color_manual( name = "曲线类型", values = c("原始趋势线" = "red", "平滑拟合线" = "#3366FF") ) print(p)
逻辑说明
- 在
aes()内给color参数传入自定义字符串,相当于手动创建了离散分类的颜色映射,是手动生成自定义图例的常用方案 scale_color_manual的values参数需要和aes()里定义的分类名称一一对应,可自行修改为想要的颜色值- 该方案完全兼容
facet_wrap()分面逻辑,所有子图会自动共享同一个图例,无需额外调整
内容的提问来源于stack exchange,提问作者wesleysc352
相关产品推荐
相关产品推荐

