diff --git a/examples/mplot3d/hist3d_demo.py b/examples/mplot3d/hist3d_demo.py index 8137c6400d33..6d6210de4315 100644 --- a/examples/mplot3d/hist3d_demo.py +++ b/examples/mplot3d/hist3d_demo.py @@ -1,3 +1,7 @@ +''' +Demo of a histogram for 2 dimensional data as a bar graph in 3D. +''' + from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np @@ -5,14 +9,18 @@ fig = plt.figure() ax = fig.add_subplot(111, projection='3d') x, y = np.random.rand(2, 100) * 4 -hist, xedges, yedges = np.histogram2d(x, y, bins=4) +hist, xedges, yedges = np.histogram2d(x, y, bins=4, range=[[0, 4], [0, 4]]) -elements = (len(xedges) - 1) * (len(yedges) - 1) +# Construct arrays for the anchor positions of the 16 bars. +# Note: np.meshgrid gives arrays in (ny, nx) so we use 'F' to flatten xpos, +# ypos in column-major order. For numpy >= 1.7, we could instead call meshgrid +# with indexing='ij'. xpos, ypos = np.meshgrid(xedges[:-1] + 0.25, yedges[:-1] + 0.25) +xpos = xpos.flatten('F') +ypos = ypos.flatten('F') +zpos = np.zeros_like(xpos) -xpos = xpos.flatten() -ypos = ypos.flatten() -zpos = np.zeros(elements) +# Construct arrays with the dimensions for the 16 bars. dx = 0.5 * np.ones_like(zpos) dy = dx.copy() dz = hist.flatten()