You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何合并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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 18:05:33