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

如何用geom_hex高亮包含group=1数据点的ggplot六边形分箱?

高亮包含特定数据点的六边形分箱

要实现高亮包含group=1数据点的六边形分箱,我们可以通过先计算分箱归属、筛选目标分箱,再叠加图层绘制高亮边框的方式完成,具体步骤如下:

步骤1:加载依赖包并准备数据

首先确保安装并加载ggplot2和hexbin包,然后生成示例数据:

library(ggplot2)
library(hexbin)

n = 1000
df = data.frame(x = rnorm(n), 
                y = rnorm(n),
                group = sample(0:1, n, prob = c(0.9, 0.1), replace = TRUE))

步骤2:计算分箱并筛选目标分箱

使用hexbin函数生成分箱,给每个数据点标记所属分箱ID,再筛选出包含group=1的分箱:

# 生成六边形分箱,xbins控制分箱数量,可按需调整
hb <- hexbin(df$x, df$y, xbins = 10)
# 给每个数据点添加对应分箱ID
df$hex_id <- hb@cID
# 获取所有包含group=1数据点的分箱ID
highlight_hex_ids <- unique(df$hex_id[df$group == 1])

步骤3:转换分箱为多边形数据并标记高亮

将分箱对象转换为多边形数据框,方便后续绘制边框,并标记需要高亮的分箱:

# 把分箱转换为ggplot可用的多边形数据
hex_polygons <- fortify(hb)
# 标记哪些分箱需要高亮
hex_polygons$highlight <- hex_polygons$group %in% highlight_hex_ids

步骤4:绘制带高亮边框的六边形分箱图

先绘制基础的六边形分箱,再叠加高亮分箱的红色边框:

ggplot() +
  # 绘制普通六边形分箱
  geom_hex(data = df, aes(x = x, y = y), fill = "lightblue", color = "white") +
  # 绘制高亮分箱的边框(fill=NA仅显示边框)
  geom_polygon(data = hex_polygons[hex_polygons$highlight, ], 
               aes(x = x, y = y, group = group), 
               fill = NA, color = "red", linewidth = 1.5) +
  theme_minimal()

说明

  • 调整xbins参数可以改变分箱的密度,值越大分箱越精细
  • 可以修改color和linewidth参数调整高亮边框的颜色和粗细
  • 如果需要调整基础分箱的填充色,修改geom_hex里的fill参数即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:32:40