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

使用pyplot.hexbin绘制二维函数仅显示线条,如何解决?

问题原因及解决方法

你的代码里,x和y是两个独立的一维数组,直接传入hexbin时,程序会把两个数组按索引一一配对,生成的是一条直线上的点(比如x[0]配y[0],x[1]配y[1]...),而非覆盖整个二维区域的网格点,所以只有这条线上的六边形有数据,其余区域没有点,自然不会被渲染。

解决步骤

  • 使用np.meshgrid生成覆盖整个二维区域的网格点,得到二维的X和Y数组;
  • 计算函数值Z = func(X,Y);
  • 将X、Y、Z扁平化(用.ravel())后传入hexbin,这样就能提供整个区域的所有点数据。

修改后的代码

import numpy as np
import matplotlib.pyplot as plt

def func(x,y):
    return x*2 + y*2

x = np.linspace((-0.5)/4*5, (0.5)/4*5, int(2e3))   
y = np.linspace(-0.5, 0.5, int(2e3))    

# 生成二维网格
X, Y = np.meshgrid(x, y)
Z = func(X, Y)

plt.hexbin(X.ravel(),
           Y.ravel(),
           Z.ravel(), 
           gridsize=(8,4),
           cmap='gnuplot')
plt.colorbar()  # 加上色条更直观展示数值对应关系
plt.show()

这样修改后,hexbin就能获取整个二维区域的点数据,渲染出完整的六边形热力图。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.24 09:15:56