正确设置ggplot中线型与形状组合的图例显示
解决ggplot图例中点标记不一致的问题
我明白你的问题了——你想让图例里只有'f'和'r'组显示对应的点标记,'4'组只显示线条对吧?问题出在scale_shape_manual的配置上,咱们来修正代码:
library(tidyverse) ggplot(mpg) + geom_line(mapping = aes(x = displ, y = cty, color = drv), size = 1) + geom_point(data = subset(mpg, drv != '4'), mapping = aes(x = displ, y = cty, color = drv, shape = drv), size = 3) + scale_color_manual(name="Variable", labels = c("4", "f", "r"), values=c("4" = "#DA2128", "f" = "black", "r" = "blue")) + scale_shape_manual(name="Variable", labels = c("4", "f", "r"), values = c("4" = NA, "f" = 16, "r" = 17))
关键修正点:
- 给'4'组的shape设置为NA:在
scale_shape_manual里,我们把所有三个drv类别都纳入定义,给'4'的shape赋值NA,这样它在图例里就不会显示任何点标记。 - 移除
guide=FALSE:因为你把color和shape的图例名称都设为"Variable",ggplot会自动将它们合并成一个统一的图例,不需要关闭shape的图例引导。 - 保持geom_point的数据源不变:依然只给
drv != '4'的数据添加点标记,不影响图表的显示效果。
这样修改后,图例里'4'组只会显示红色线条,'f'组是黑色线条加圆形标记,'r'组是蓝色线条加三角形标记,完全符合你的需求。
内容的提问来源于stack exchange,提问作者AndyDudley
相关产品推荐
相关产品推荐

