You must log in to use subscribtions.

Clear message

Here is an example for creating a 2D histogram with variable bin size and displaying it.

   1 #!/usr/bin/python
   2 import numpy as np
   3 import matplotlib as ml
   4 import matplotlib.pyplot as plt
   5 
   6 
   7 # First we define the bin edges
   8 xedges = [0, 1, 1.5, 3, 5]
   9 yedges = [0, 2, 3, 4, 6]
  10 
  11 # Next we create a histogram H with random bin content
  12 x = np.random.normal(3, 1, 100)
  13 y = np.random.normal(1, 1, 100)
  14 H, xedges, yedges = np.histogram2d(y, x, bins=(xedges, yedges))
  15 
  16 # Or we fill the histogram H with a determined bin content
  17 H = np.ones((4, 4)).cumsum().reshape(4, 4)
  18 print H[::-1]  # This shows the bin content in the order as plotted
  19 
  20 ml.rcParams['image.cmap'] = 'gist_heat'
  21 
  22 
  23 fig = plt.figure(figsize=(6, 3.2))
  24 
  25 # pcolormesh is useful for displaying exact bin edges
  26 ax = fig.add_subplot(131)
  27 ax.set_title('pcolormesh:\nexact bin edges')
  28 X, Y = np.meshgrid(xedges, yedges)
  29 plt.pcolormesh(X, Y, H)
  30 ax.set_aspect('equal')
  31 
  32 
  33 # NonUniformImage can be used for interpolation
  34 ax = fig.add_subplot(132)
  35 ax.set_title('NonUniformImage:\ninterpolated')
  36 im = ml.image.NonUniformImage(ax, interpolation='bilinear')
  37 xcenters = xedges[:-1] + 0.5 * (xedges[1:] - xedges[:-1])
  38 ycenters = yedges[:-1] + 0.5 * (yedges[1:] - yedges[:-1])
  39 im.set_data(xcenters, ycenters, H)
  40 ax.images.append(im)
  41 ax.set_xlim(xedges[0], xedges[-1])
  42 ax.set_ylim(yedges[0], yedges[-1])
  43 ax.set_aspect('equal')
  44 
  45 # Imshow is useful for a simple equidistant representation of bin content
  46 ax = fig.add_subplot(133)
  47 ax.set_title('imshow:\nequitdistant')
  48 im = plt.imshow(H, interpolation='nearest', origin='low',
  49                 extent=[xedges[0], xedges[-1], yedges[0], yedges[-1]])
  50 
  51 
  52 # Finally we add a color bar
  53 cax = fig.add_axes([0.12, 0.1, 0.78, 0.4])
  54 cax.get_xaxis().set_visible(False)
  55 cax.get_yaxis().set_visible(False)
  56 cax.patch.set_alpha(0)
  57 cax.set_frame_on(False)
  58 plt.colorbar(orientation='horizontal', ax=cax)
  59 plt.tight_layout()
  60 plt.show()


CategoryCookbookMatplotlib CategoryCookbook

Cookbook/Histograms (last edited 2013-04-10 14:23:17 by FrankBreitling)