请原谅我,如果这是一个重复的问题,我已尽力寻找解决方案。这似乎非常简单,但我似乎找不到任何适用的东西。
我正在尝试使用来自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。
我想要做的就是以这样的方式绘制这个图,即z值对于我指定的任何bin大小进行平均,并且像热图一样进行颜色编码。因此,例如,如果我有10个数据点落在给定的bin中,那么它们的z值将被平均,并且该值将落在色谱的某个位置。
感谢您提供的任何帮助。
答案 0 :(得分:6)
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在评论中指出的那样,如果你想要每个箱子中的平均点数:
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