diff --git a/examples/pylab_examples/histogram_demo_extended.py b/examples/pylab_examples/histogram_demo_extended.py deleted file mode 100644 index bd262007edde..000000000000 --- a/examples/pylab_examples/histogram_demo_extended.py +++ /dev/null @@ -1,122 +0,0 @@ -#!/usr/bin/env python -import numpy as np -import pylab as P - -# -# The hist() function now has a lot more options -# - -# -# first create a single histogram -# -mu, sigma = 200, 25 -x = mu + sigma*P.randn(10000) - -# the histogram of the data with histtype='step' -n, bins, patches = P.hist(x, 50, normed=1, histtype='stepfilled') -P.setp(patches, 'facecolor', 'g', 'alpha', 0.75) - -# add a line showing the expected distribution -y = P.normpdf( bins, mu, sigma) -l = P.plot(bins, y, 'k--', linewidth=1.5) - - -# -# create a histogram by providing the bin edges (unequally spaced) -# -P.figure() - -bins = [100,125,150,160,170,180,190,200,210,220,230,240,250,275,300] -# the histogram of the data with histtype='step' -n, bins, patches = P.hist(x, bins, normed=1, histtype='bar', rwidth=0.8) - -# -# now we create a cumulative histogram of the data -# -P.figure() - -n, bins, patches = P.hist(x, 50, normed=1, histtype='step', cumulative=True) - -# add a line showing the expected distribution -y = P.normpdf( bins, mu, sigma).cumsum() -y /= y[-1] -l = P.plot(bins, y, 'k--', linewidth=1.5) - -# create a second data-set with a smaller standard deviation -sigma2 = 15. -x = mu + sigma2*P.randn(10000) - -n, bins, patches = P.hist(x, bins=bins, normed=1, histtype='step', cumulative=True) - -# add a line showing the expected distribution -y = P.normpdf( bins, mu, sigma2).cumsum() -y /= y[-1] -l = P.plot(bins, y, 'r--', linewidth=1.5) - -# finally overplot a reverted cumulative histogram -n, bins, patches = P.hist(x, bins=bins, normed=1, - histtype='step', cumulative=-1) - - -P.grid(True) -P.ylim(0, 1.05) - - -# -# histogram has the ability to plot multiple data in parallel ... -# Note the new color kwarg, used to override the default, which -# uses the line color cycle. -# -P.figure() - -# create a new data-set -x = mu + sigma*P.randn(1000,3) - -n, bins, patches = P.hist(x, 10, normed=1, histtype='bar', - color=['crimson', 'burlywood', 'chartreuse'], - label=['Crimson', 'Burlywood', 'Chartreuse']) -P.legend() - -# -# ... or we can stack the data -# -P.figure() - -n, bins, patches = P.hist(x, 10, normed=1, histtype='bar', stacked=True) - -P.show() - -# -# we can also stack using the step histtype -# - -P.figure() - -n, bins, patches = P.hist(x, 10, histtype='step', stacked=True, fill=True) - -P.show() - -# -# finally: make a multiple-histogram of data-sets with different length -# -x0 = mu + sigma*P.randn(10000) -x1 = mu + sigma*P.randn(7000) -x2 = mu + sigma*P.randn(3000) - -# and exercise the weights option by arbitrarily giving the first half -# of each series only half the weight of the others: - -w0 = np.ones_like(x0) -w0[:len(x0)/2] = 0.5 -w1 = np.ones_like(x1) -w1[:len(x1)/2] = 0.5 -w2 = np.ones_like(x2) -w2[:len(x2)/2] = 0.5 - - - -P.figure() - -n, bins, patches = P.hist( [x0,x1,x2], 10, weights=[w0, w1, w2], histtype='bar') - -P.show() diff --git a/examples/statistics/histogram_demo_cumulative.py b/examples/statistics/histogram_demo_cumulative.py new file mode 100644 index 000000000000..b555f0060eca --- /dev/null +++ b/examples/statistics/histogram_demo_cumulative.py @@ -0,0 +1,30 @@ +""" +Demo of the histogram (hist) function used to plot a cumulative distribution. + +""" +import numpy as np +import matplotlib.pyplot as plt +from matplotlib import mlab + + +mu = 200 +sigma = 25 +n_bins = 50 +x = mu + sigma*np.random.randn(10000) + +n, bins, patches = plt.hist(x, n_bins, normed=1, + histtype='step', cumulative=True) + +# Add a line showing the expected distribution. +y = mlab.normpdf(bins, mu, sigma).cumsum() +y /= y[-1] +plt.plot(bins, y, 'k--', linewidth=1.5) + +# Overlay a reversed cumulative histogram. +plt.hist(x, bins=bins, normed=1, histtype='step', cumulative=-1) + +plt.grid(True) +plt.ylim(0, 1.05) +plt.title('cumulative step') + +plt.show() diff --git a/examples/statistics/histogram_demo_histtypes.py b/examples/statistics/histogram_demo_histtypes.py new file mode 100644 index 000000000000..898b90cae17f --- /dev/null +++ b/examples/statistics/histogram_demo_histtypes.py @@ -0,0 +1,27 @@ +""" +Demo of the histogram (hist) function with different ``histtype`` settings. + +* Histogram with step curve that has a color fill. +* Histogram with with unequal bin widths. + +""" +import numpy as np +import matplotlib.pyplot as plt + + +mu = 200 +sigma = 25 +x = mu + sigma*np.random.randn(10000) + +fig, (ax0, ax1) = plt.subplots(ncols=2, figsize=(8, 4)) + +ax0.hist(x, 20, normed=1, histtype='stepfilled', facecolor='g', alpha=0.75) +ax0.set_title('stepfilled') + +# Create a histogram by providing the bin edges (unequally spaced). +bins = [100, 150, 180, 195, 205, 220, 250, 300] +ax1.hist(x, bins, normed=1, histtype='bar', rwidth=0.8) +ax1.set_title('unequal bins') + +plt.tight_layout() +plt.show() diff --git a/examples/statistics/histogram_demo_multihist.py b/examples/statistics/histogram_demo_multihist.py new file mode 100644 index 000000000000..57dd2ac00691 --- /dev/null +++ b/examples/statistics/histogram_demo_multihist.py @@ -0,0 +1,38 @@ +""" +Demo of the histogram (hist) function with multiple data sets. + +Plot histogram with multiple sample sets and demonstrate: + + * Use of legend with multiple sample sets + * Stacked bars + * Step curve with a color fill + * Data sets of different sample sizes +""" +import numpy as np +import matplotlib.pyplot as plt + + +n_bins = 10 +x = np.random.randn(1000, 3) + +fig, axes = plt.subplots(nrows=2, ncols=2) +ax0, ax1, ax2, ax3 = axes.flat + +colors = ['red', 'tan', 'lime'] +ax0.hist(x, n_bins, normed=1, histtype='bar', color=colors, label=colors) +ax0.legend(prop={'size': 10}) +ax0.set_title('bars with legend') + +ax1.hist(x, n_bins, normed=1, histtype='bar', stacked=True) +ax1.set_title('stacked bar') + +ax2.hist(x, n_bins, histtype='step', stacked=True, fill=True) +ax2.set_title('stepfilled') + +# Make a multiple-histogram of data-sets with different length. +x_multi = [np.random.randn(n) for n in [10000, 5000, 2000]] +ax3.hist(x_multi, n_bins, histtype='bar') +ax3.set_title('different sample sizes') + +plt.tight_layout() +plt.show() diff --git a/examples/tests/backend_driver.py b/examples/tests/backend_driver.py index 1c7a4587538f..0edf4332e586 100755 --- a/examples/tests/backend_driver.py +++ b/examples/tests/backend_driver.py @@ -74,7 +74,10 @@ files['statistics'] = [ 'errorbar_demo.py', 'errorbar_demo_features.py', + 'histogram_demo_cumulative.py', 'histogram_demo_features.py', + 'histogram_demo_histtypes.py', + 'histogram_demo_multihist.py', ] files['pie'] = [ @@ -172,7 +175,6 @@ 'hexbin_demo.py', 'hexbin_demo2.py', 'hist_colormapped.py', - 'histogram_demo_extended.py', 'vline_hline_demo.py', 'image_clip_path.py',