.. _statistics-multiple_histograms_side_by_side:

statistics example code: multiple_histograms_side_by_side.py
============================================================



.. plot:: /home/tcaswell/source/p/matplotlib/doc/mpl_examples/statistics/multiple_histograms_side_by_side.py

::

    
    """
    Demo of how to produce multiple histograms side by side
    """
    
    import numpy as np
    import matplotlib.pyplot as plt
    
    number_of_bins = 20
    
    # An example of three data sets to compare
    number_of_data_points = 1000
    labels = ["A", "B", "C"]
    data_sets = [np.random.normal(0, 1, number_of_data_points),
                 np.random.normal(6, 1, number_of_data_points),
                 np.random.normal(-3, 1, number_of_data_points)]
    
    # Computed quantities to aid plotting
    hist_range = (np.min(data_sets), np.max(data_sets))
    binned_data_sets = [np.histogram(d, range=hist_range, bins=number_of_bins)[0]
                        for d in data_sets]
    binned_maximums = np.max(binned_data_sets, axis=1)
    x_locations = np.arange(0, sum(binned_maximums), np.max(binned_maximums))
    
    # The bin_edges are the same for all of the histograms
    bin_edges = np.linspace(hist_range[0], hist_range[1], number_of_bins + 1)
    centers = .5 * (bin_edges + np.roll(bin_edges, 1))[:-1]
    heights = np.diff(bin_edges)
    
    # Cycle through and plot each histogram
    ax = plt.subplot(111)
    for x_loc, binned_data in zip(x_locations, binned_data_sets):
        lefts = x_loc - .5 * binned_data
        ax.barh(centers, binned_data, height=heights, left=lefts)
    
    ax.set_xticks(x_locations)
    ax.set_xticklabels(labels)
    
    ax.set_ylabel("Data values")
    ax.set_xlabel("Data sets")
    
    plt.show()
    

Keywords: python, matplotlib, pylab, example, codex (see :ref:`how-to-search-examples`)