如果这是一个重复的问题,请原谅我,我已经尽力寻找解决方案。这看起来非常简单,但我似乎找不到任何适用的东西。
我正在尝试使用来自 3 个一维 numpy 数组的数据生成一个图(如热图)。数据基本整理如下:
x_axis = ([1, 4, 6])
y_axis = ([2, 5, 7])
z_axis = ([5, 8, 9])
(我的数据集实际上要大得多......有时有数十万个条目)。
所以我得到了 z_axis 值,每个值都与 x 坐标和 y 坐标相关联...例如,点 (1,2) 具有与之相关联的值 5。
我想要做的就是以这样一种方式绘制它,即根据我指定的任何 bin 大小平均 z 值,并像热图一样进行颜色编码。因此,例如,如果我有 10 个数据点落在给定的 bin 内,它们的 z 值将被平均并且该值将落在色谱上的某个位置。
感谢您提供的任何帮助。
最佳答案
来自 np.histogram2d :
import matplotlib.pyplot as plt
H, xedges, yedges =np.histogram2d(x_axis, y_axis, bins=10, weights=z_axis)
extent = [yedges[0], yedges[-1], xedges[-1], xedges[0]]
plt.imshow(H, extent=extent, interpolation='nearest')
plt.colorbar()
plt.show()
Bin 计数很容易改变。
正如 Jamie 在评论中指出的,如果您想要每个 bin 中的点的平均值:
numbins=10
H, xedges, yedges =np.histogram2d(x_axis, y_axis, bins=numbins, weights=z_axis)
count, x, y =np.histogram2d(x_axis, y_axis, bins=numbins)
H/=count
关于python - 具有 3 个变量的 numpy 直方图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17529726/