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

如何为geom_point各层级添加带计数的图例以展示密度?

解决ggplot散点图添加计数/密度图例的问题

方法1:用geom_count直接展示点大小对应计数(自带图例)

你的原代码里geom_point+geom_jitter会导致点大量重叠,用geom_count可以自动计算每个(x,y)组合的点数,用点的大小体现数量,同时自动生成带计数的图例:

data %>% 
  ggplot(aes(x = subscribed, y = campaign)) +
  geom_count(aes(size = after_stat(n))) + # 调用内置的计数变量n
  scale_size_continuous(name = "样本计数", range = c(1, 10)) # 自定义图例名称和点的大小范围

方法2:热力图+文本标注(分类变量交叉展示更直观)

如果subscribed和campaign都是分类变量,用热力图展示计数会比散点更清晰,还能直接显示具体数值:

library(dplyr)
# 先统计每个交叉组合的样本数
data %>% 
  count(subscribed, campaign) %>% 
  ggplot(aes(x = subscribed, y = campaign, fill = n)) +
  geom_tile(color = "white") + # 热力图块,白色边框区分组别
  geom_text(aes(label = n), color = "black") + # 在块内显示具体计数
  scale_fill_viridis_c(name = "样本计数") # 自定义图例名称和配色

原代码无图例的原因

你原来的geom_point和geom_jitter没有将计数、密度这类数据属性映射到size/color这类可视化美学参数上,所以ggplot不会生成图例。要出现图例,必须把需要展示的指标绑定到某个可视化属性上。

内容的提问来源于stack exchange,提问作者SeanMc152

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:10:18