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

如何获取Hexbin图中计数最高(最热)区域的x、y坐标值

提取matplotlib hexbin图最高热度区域坐标的实现方法

不需要手动从生成的图像上肉眼读坐标再输入,matplotlib.axes.Axes.hexbin的返回值本身就存储了所有六边形的热度和对应坐标,直接取值即可。

  • 核心属性说明
    调用hexbin()方法会返回一个PolyCollection对象,和坐标提取相关的属性有两个:
    • get_array():返回长度为N的数组,对应N个六边形各自包含的点数量,也就是图上显示的热度值,数值越大区域热度越高
    • get_offsets():返回形状为(N,2)的数组,每一行对应一个六边形中心的(x,y)坐标,和get_array()返回的热度值顺序完全一一对应
      不需要额外做图像识别、像素解析操作,直接从这两个属性里计算就能拿到目标坐标,精度远高于人眼读数
  • 可直接复用的代码
    只需要修改你原有绘图逻辑,接住hexbin的返回值,加几行计算代码即可:
    import matplotlib.pyplot as plt
    import numpy as np
    
    # --- 以下为你原有的绘图逻辑,替换成自己的数据源即可 ---
    # x, y = 你用于生成hexbin图的原始坐标数组
    fig, ax = plt.subplots()
    # 重点:接住hexbin的返回值,原有绘图参数(gridsize、cmap等)和你之前的设置保持完全一致
    hb = ax.hexbin(x, y, gridsize=50, cmap='viridis')
    # --- 原有绘图逻辑结束 ---
    
    # 提取所有六边形的热度值、中心坐标
    heat_counts = hb.get_array()
    hex_centers = hb.get_offsets()
    
    # 定位热度最高的六边形索引,取出对应坐标
    max_heat_pos = np.argmax(heat_counts)
    target_x, target_y = hex_centers[max_heat_pos]
    
    print(f"最高热度区域中心坐标:x = {target_x:.3f}, y = {target_y:.3f}")
    # 提取到的target_x、target_y可以直接传入后续对称线检测逻辑,无需手动输入
    plt.show()
    
  • 精度调整方法
    如果运行后得到的结果和你目测的x≈153.0、y≈1.535存在小幅偏差,只需要调整hexbin()调用时的gridsize参数:gridsize数值越大,单个六边形的尺寸越小,坐标定位精度越高,调整到误差符合项目要求即可。
    如果图中存在多个高热度区域需要提取,可以设置热度阈值(比如取热度大于全局最大值90%的所有六边形),再对筛选出的坐标做均值或聚类计算,就能得到所有目标区域的坐标。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 23:33:34