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

如何用stat_bin_hex绘制六边形热力图展示因子水平数而非观测数?

解决方案:绘制显示物种数量的六边形热力图

1. 生成示例数据集

先用dplyr构造符合需求的示例数据:

library(dplyr)
library(ggplot2)

set.seed(123) # 固定随机种子保证结果可复现
df <- tibble(
  x = rnorm(1000),   # 连续变量x
  y = rnorm(1000),   # 连续变量y
  species = sample(paste0("物种_", 1:10), 1000, replace = TRUE) # 物种因子
)

2. 绘制目标热力图

使用stat_summary_hex替代默认的stat_bin_hex,通过自定义汇总函数计算每个六边形内的唯一物种数量:

ggplot(df, aes(x = x, y = y, z = species)) +
  # 对每个六边形内的species计算唯一值数量
  stat_summary_hex(fun = function(x) length(unique(x)), 
                   aes(fill = after_stat(value))) +
  # 设置填充色渐变(viridis色阶对色彩友好)
  scale_fill_viridis_c(name = "物种数量") +
  # 添加标签和主题
  labs(x = "X变量", y = "Y变量", title = "六边形热力图:每个区域的物种数量") +
  theme_minimal()

关键说明

  • stat_summary_hex会将x/y平面划分为六边形网格,对每个网格内的z变量(此处为species)执行自定义汇总逻辑。
  • fun = function(x) length(unique(x))明确指定统计目标为每个六边形内的唯一物种数,而非观测总数。
  • after_stat(value)引用汇总后的计算结果,将其映射到填充色,实现热力图的可视化效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 17:52:13