geom_hex高亮特定六边形分箱并调线宽:分箱对齐故障
解决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)) df$sums[df$group == 1] = runif(sum(df$group == 1), min = 0.5, max = 2) # 修正后的绘图代码 pp = ggplot(df, aes(x = x, y = y)) + # 移除全局group设置,避免干扰分箱逻辑 geom_hex(bins = 30) + # 指定分箱数量,与后续stat图层保持一致 stat_summary_hex( data = subset(df, group == 1), # 仅传入需要高亮的分组数据 aes(z = sums, linewidth = after_stat(value)), fun = ~sum(.x), col = "gold", fill = NA, bins = 30 # 与geom_hex使用完全相同的分箱参数 ) + scale_linewidth(range = c(0.1, 1)) pp
关键修改说明:
- 移除全局
group=group:原全局aes的分组设置会让stat_summary_hex按group拆分计算分箱,与geom_hex的全局分箱逻辑冲突,直接导致错位。 - 统一分箱参数:给两个图层都指定
bins(或binwidth),确保分箱边界完全对齐。 - 过滤高亮图层数据源:只传入
group=1的数据,避免无sums值的行干扰统计计算,同时提升效率。
修改后,高亮的六边形边框会与底层分箱完全对齐,且能通过scale_linewidth正常调整线宽。
内容的提问来源于stack exchange,提问作者SamPassmore
相关产品推荐
相关产品推荐

