Matplotlib/UnfilledHistograms - SciPy wiki dump (original) (raw)

Here's some template code for plotting histograms that don't look like bar charts, but instead have only outlines (like IDL creates).

First define a function that does the bulk of the heavy lifting.

1 import numpy as np 2 3 def histOutline(dataIn, *args, **kwargs): 4 (histIn, binsIn) = np.histogram(dataIn, *args, *kwargs) 5 6 stepSize = binsIn[1] - binsIn[0] 7 8 bins = np.zeros(len(binsIn)2 + 2, dtype=np.float) 9 data = np.zeros(len(binsIn)2 + 2, dtype=np.float) 10 for bb in range(len(binsIn)): 11 bins[2bb + 1] = binsIn[bb] 12 bins[2bb + 2] = binsIn[bb] + stepSize 13 if bb < len(histIn): 14 data[2bb + 1] = histIn[bb] 15 data[2*bb + 2] = histIn[bb] 16 17 bins[0] = bins[1] 18 bins[-1] = bins[-2] 19 data[0] = 0 20 data[-1] = 0 21 22 return (bins, data)

Now we can make plots:

1 2 data = randn(500) 3 4 figure(2, figsize=(10, 5)) 5 clf() 6 7 8 9 10 11 12 subplot(1, 2, 1) 13 (n, bins, patches) = hist(data) 14 15 16 xlo = -max(abs(bins)) 17 xhi = max(abs(bins)) 18 ylo = 0 19 yhi = max(n) * 1.1 20 21 axis([xlo, xhi, ylo, yhi]) 22 23 24 25 26 27 28 (bins, n) = histOutline(data) 29 30 subplot(1, 2, 2) 31 plot(bins, n, 'k-') 32 axis([xlo, xhi, ylo, yhi])

Here you can find this functionality packaged up into histOutline.py

hist_outline.png

SciPy: Cookbook/Matplotlib/UnfilledHistograms (last edited 2015-10-24 17:48:23 by anonymous)