8

如果这是一个重复的问题,请原谅我,我已尽力寻找解决方案。这看起来很简单,但我似乎找不到任何适用的东西。

我正在尝试使用来自 3 个 1-D 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 值将被平均,并且该值将落在色谱上的某个位置。

感谢您的任何帮助,您可以提供。

4

1 回答 1

7

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
于 2013-07-08T15:17:04.613 回答