1 import matplotlib
2 import numarray as na
3
4 def hist(binsIn, dataIn, normed=False):
5 """
6 Make a histogram that can be plotted with plot() so that
7 the histogram just has the outline rather than bars as it
8 usually does.
9
10 Example Usage:
11 binsIn = numarray.arange(0, 1, 0.1)
12 angle = pylab.rand(50)
13
14 (bins, data) = histOutline(binsIn, angle)
15 plot(bins, data, 'k-', linewidth=2)
16
17 """
18 (en, eb) = matplotlib.mlab.hist(dataIn, bins=binsIn, normed=normed)
19
20 stepSize = binsIn[1] - binsIn[0]
21
22 bins = na.zeros(len(eb)*2 + 2, type=na.Float)
23 data = na.zeros(len(eb)*2 + 2, type=na.Float)
24 for bb in range(len(binsIn)):
25 bins[2*bb + 1] = binsIn[bb]
26 bins[2*bb + 2] = binsIn[bb] + stepSize
27 data[2*bb + 1] = en[bb]
28 data[2*bb + 2] = en[bb]
29
30 bins[0] = bins[1]
31 bins[-1] = bins[-2]
32 data[0] = 0
33 data[-1] = 0
34
35 return (bins, data)
36
37 def convertForPlot(binsIn, histIn):
38 """
39 Take the output from a normal histogram and turn it into
40 a histogram that can be plotted (square tops, etc.).
41
42 binsIn - The bins output by matplotlib.mlab.hist()
43 histIn - The histogram output by matplotlib.mlab.hist()
44 """
45 stepSize = binsIn[1] - binsIn[0]
46
47 bins = na.zeros(len(binsIn)*2 + 2, type=na.Float)
48 data = na.zeros(len(binsIn)*2 + 2, type=na.Float)
49 for bb in range(len(binsIn)):
50 bins[2*bb + 1] = binsIn[bb]
51 bins[2*bb + 2] = binsIn[bb] + stepSize
52 data[2*bb + 1] = histIn[bb]
53 data[2*bb + 2] = histIn[bb]
54
55 bins[0] = bins[1]
56 bins[-1] = bins[-2]
57 data[0] = 0
58 data[-1] = 0
59
60 return (bins, data)
, as shown below in the list of files. Do
link, since this is subject to change and can break easily.