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

如何为stat_summary_hex()定义六边形需包含的最小点数阈值?

实现六边形最小点数阈值过滤的两种方法

方法一:提前分箱过滤(推荐,更高效)

这种方法先通过hexbin包完成点数据的六边形分箱,过滤掉点数不足的分箱后再绘图,结果更干净:

library(hexbin)
library(ggplot2)

# 自定义最小点数阈值,比如设为5
min_point_count <- 5

# 1. 对原始点数据做六边形分箱,参数和原代码保持一致
hex_bin <- hexbin(
  x = df$lon, y = df$lat,
  xbins = 50,  # 对应原stat_summary_hex的bins参数
  xbnds = c(-20, 50),  # 对应原xlim
  ybnds = c(24, 72)    # 对应原ylim
)

# 2. 提取每个分箱的点数、value均值,并过滤达标分箱
hex_stats <- data.frame(
  cell_id = hex_bin@cell,
  point_count = hex_bin@count,
  mean_value = tapply(df$value, hex_bin@cID, mean, na.rm = TRUE)
)
valid_cells <- hex_stats$cell_id[hex_stats$point_count >= min_point_count]

# 3. 生成达标六边形的多边形坐标数据
hex_polygons <- hexPolygons(hex_bin, cell = valid_cells, close = TRUE)
hex_plot_data <- fortify(hex_polygons) %>% 
  left_join(hex_stats, by = c("group" = "cell_id"))

# 4. 绘制最终地图
ggplot() +
  # 背景地图层
  geom_polygon(
    data = df.shp, aes(x = long, y = lat, group = group),
    fill = "grey", show.legend = FALSE
  ) +
  # 过滤后的六边形层
  geom_polygon(
    data = hex_plot_data, aes(x = x, y = y, group = group, fill = mean_value),
    colour = "black"
  ) +
  coord_cartesian(xlim = c(-20, 50), ylim = c(24, 72)) +
  scale_fill_viridis(option = "A", breaks = c(0,1,2,3,4))

方法二:利用ggplot内置统计量快速过滤(代码更简洁)

直接在stat_summary_hex中通过after_stat获取每个六边形的点数,设置透明度过滤:

library(ggplot2)

# 自定义最小点数阈值
min_point_count <- 5

ggplot(data = df, aes(lon, lat)) +
  geom_polygon(data = df.shp,aes(x=long, y=lat, group=group), fill = "grey", show.legend = FALSE) +
  stat_summary_hex(
    bins = 50, binwidth = 0.5, 
    aes(z = value, alpha = after_stat(count >= min_point_count)),
    fun = "mean", colour = "black"
  ) +
  # 设置透明度过滤,隐藏不达标的六边形
  scale_alpha_manual(values = c("TRUE" = 1, "FALSE" = 0), guide = "none") +
  xlim(-20,50) +
  ylim(24,72) +
  scale_fill_viridis(option = "A", breaks = c(0,1,2,3,4))

说明

  • 方法一适合大型数据集,提前过滤能减少绘图时的计算量,结果中不会包含无效六边形;
  • 方法二代码更简洁,适合快速调试,但本质是将无效六边形设为透明,底层仍存在分箱数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:05:18