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.
plt. hist() method is used multiple times to create a figure of three overlapping histograms. we adjust opacity, color, and number of bins as needed. Three different columns from the data frame are taken as data for the histograms.
Use bar3d() method to plot 3D bars. To hide the axes use axis('off') class by name. To display the figure, use show() method.
Creating Numpy HistogramNumpy has a built-in numpy. histogram() function which represents the frequency of data distribution in the graphical form. The rectangles having equal horizontal size corresponds to class interval called bin and variable height corresponding to the frequency.
plt() Matplotlib can convert this numeric representation of histogram into a graph. The plt() function of pyplot submodule takes the array containing the data and bin array as parameters and converts into a histogram.
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With