问题
Please forgive me if this is a repeated question, I've done my best to look for a solution. This seems very straightforward but I can't seem to find anything applicable.
I'm trying to generate a plot (like a heatmap) using data from 3 1-D numpy arrays. The data is basically arranged as follows:
x_axis = ([1, 4, 6])
y_axis = ([2, 5, 7])
z_axis = ([5, 8, 9])
(my data sets are actually much larger... sometimes hundreds of thousands of entries).
so I've got z_axis values that are each associated with an x-coordinate and y-coordinate... for example, the point (1,2) has the value 5 associated with it.
All I want to do is plot this in such a way that the z values are averaged out for whatever bin size I specify, and color-coded like a heatmap. So, for instance, if I've got 10 data points that fall within a given bin, their z-values will be averaged and that value will fall somewhere on a color spectrum.
Thanks for any help you can provide.
回答1:
From 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 count is easily changed.
As Jamie pointed out in the comments if you want the average of the points in each 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
来源:https://stackoverflow.com/questions/17529726/numpy-histogram-with-3-variables