text: import numpy as np
  import matplotlib.mlab as mlab
  import matplotlib.pyplot as plt
  
  
  np.random.seed(0)  # Set seed so plots look the same.
  
  
  def histogram_demo(ax):
      # example data
      mu = 100  # mean of distribution
      sigma = 15  # standard deviation of distribution
      x = mu + sigma * np.random.randn(10000)
  
      num_bins = 50
  
      # The histogram of the data.
      _, bins, _ = ax.hist(x, num_bins, normed=1, label='data')
  
      # Add a 'best fit' line.
      y = mlab.normpdf(bins, mu, sigma)
      ax.plot(bins, y, '-s', label='best fit')
  
      ax.legend()
      ax.set_xlabel('Smarts')
      ax.set_ylabel('Probability')
      ax.set_title(r'Histogram of IQ: $\mu=100$, $\sigma=15$')
  
  
  def bar_plot(ax):
      categories = ['a', 'b', 'c', 'd', 'e']
      x = np.arange(len(categories))
      n_modes = 3
      width = 0.25
      for i in range(n_modes):
          y = np.random.randint(1, 25, size=len(categories))
          x_offset = i * width
          ax.bar(x+x_offset, y, width, color=plt.rcParams['axes.color_cycle'][i])
      ax.set_xticks(x+width)
      ax.set_xticklabels(categories)
  
  
  fig, axes = plt.subplots(nrows=2)
  
  histogram_demo(axes[0])
  bar_plot(axes[1])
  
  fig.tight_layout()
  plt.show()
  