如何合并ggplot的fill与size图例,移除冗余图例并填充颜色
解决方案
你可以通过统一图例映射名称、自定义图例样式来实现需求,修改后的代码如下:
library(tidyverse) dframe <- as.data.frame(Titanic) dframe |> ggplot(aes(Class, Sex))+ geom_point(aes(size = Freq, fill = Freq), pch = 21)+ facet_grid(Survived~Age)+ theme_bw()+ labs(x = "舱位等级", y = "性别", fill = "人数", size = "人数") + # 统一fill和size的图例名称,触发合并 guides( size = "none", # 移除size对应的单独图例 fill = guide_legend( override.aes = list( size = c(3, 6, 9, 12), # 对应图例项的点大小,可根据实际数据调整 color = "black" # 保持点的边框颜色 ) ) )
关键说明:
- 给
fill和size设置相同的图例名称(这里设为"人数"),ggplot会自动将两个映射合并到同一个图例中 - 用
guides(size = "none")移除原本的size图例 - 通过
guide_legend()的override.aes参数,手动设置图例项的点大小,同时保留点的黑色边框,让图例点既有颜色填充又有大小区分,匹配目标效果
内容的提问来源于stack exchange,提问作者YefR
相关产品推荐
相关产品推荐

