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

pyplot.hexbin轴范围异常:六边形网格未居中于原点问题排查

问题:Hexbin六边形网格图无法居中于原点的异常排查与解决

尽管坐标轴设置为对称分布,但hexbin六边形网格图无法居中于xC=0、yC=0处(已用绿色线条标记中心)。左侧最后一个网格的中心位置正确(为-1.016*0.5),但右侧对应位置不正确;y轴底部正确、顶部异常。

用户提供的代码如下:

坐标轴定义

import numpy as np
xC = np.linspace(-1.016*0.5, 1.016*0.5, int(2e3))
yC = np.linspace(-0.756*0.5, (0.756*0.5), int(2e3))  

转换为网格

XX, YY = np.meshgrid(xC[::10], yC[::10])  

绘图代码

import matplotlib.pyplot as plt

fig = plt.figure(figsize = (12,6))
colormapI_A_hex = plt.hexbin(XX.flatten(), 
                                 YY.flatten(), 
                                 (I(XX,YY,z).flatten(),  # 此处存在语法错误:多了一个左括号
                                 gridsize=(8,4), 
                                 cmap='gnuplot')
colormapI_A_cbar_hex = fig.colorbar(colormapI_A_hex, label='Intensity $I_A$ [W/m$^2$]')
plt.show()

原因分析

  1. hexbin的网格划分逻辑:gridsize=(8,4)是指定x/y方向的六边形数量,但matplotlib的hexbin会根据输入数据的实际极值范围自动计算网格边界,而非严格对齐你预设的坐标轴中心。即使数据是对称的,当网格数量为偶数时,边界计算的对齐逻辑会导致网格整体偏移,无法精准落在原点。
  2. 语法错误影响:原绘图代码中(I(XX,YY,z).flatten(),多了一个左括号,虽然可能不影响运行(取决于解释器容错),但会导致参数传递异常,间接影响绘图结果的正确性。

解决方法

  • 强制指定网格范围(推荐):通过extent参数明确限定六边形网格的x/y范围,和你预设的坐标轴范围完全匹配,确保网格严格对齐原点:
    import numpy as np
    import matplotlib.pyplot as plt
    
    x_min, x_max = -1.016*0.5, 1.016*0.5
    y_min, y_max = -0.756*0.5, 0.756*0.5
    
    fig = plt.figure(figsize=(12,6))
    colormapI_A_hex = plt.hexbin(XX.flatten(), 
                                 YY.flatten(), 
                                 I(XX,YY,z).flatten(),
                                 gridsize=(8,4), 
                                 cmap='gnuplot',
                                 extent=[x_min, x_max, y_min, y_max])
    colormapI_A_cbar_hex = fig.colorbar(colormapI_A_hex, label='Intensity $I_A$ [W/m$^2$]')
    plt.show()
    
  • 调整gridsize为奇数:如果不想指定extent,可将x方向gridsize改为奇数(如9)、y方向改为奇数(如5),这样网格中心会自然对齐原点,但会改变网格数量,需根据可视化需求权衡。
  • 修正语法错误:删除原代码中多余的左括号,确保参数传递正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 22:09:53