ggplot2合并图例调整:将符号置于线条上方以清晰查看线型
调整ggplot2合并图例中点与线的层级
你需要保留shape、linetype映射同一变量的合并图例,同时让图例里的点显示在线条上方,可通过以下代码实现:
library(tidyverse) library(grid) ggplot(mtcars, aes(gear, mpg, shape = factor(cyl), linetype = factor(cyl), color = factor(cyl))) + geom_point(size = 2) + stat_summary(fun = mean, geom = "line", size = 1)+ theme(legend.key.width = grid::unit(0.5, "inch")) + # 调整图例元素绘制顺序,点在上层 guides( shape = guide_legend(override.aes = list(order = 2)), linetype = guide_legend(override.aes = list(order = 1)) )
核心逻辑:
- ggplot2默认按图层添加顺序绘制图例元素,先添加的点会被后添加的线条覆盖
- 通过
guides()里的override.aes参数,给点设置更高的order值(2),线条设置更低的order值(1),就能让点绘制在线条上方,不遮挡线型 - 由于三个美学属性(shape/linetype/color)都映射到同一变量,ggplot会自动合并图例,无需额外配置
内容的提问来源于stack exchange,提问作者LouisMP
相关产品推荐
相关产品推荐

