wxplt histogram + normal fit function (histfit)
I wrote this function to create histograms with normal fits, and thought it may be useful to other scipy users. It requires matplotlib for the normal pdf function (http://matplotlib.sourceforge.net/). Here it is: Best Regards, Mike #*************************************************************************** **** # Module: tqplots.py # Author: Mike Sajec # Date: 8-13-03 # # Change Log: # 8-13-03 - added first function: histfit #*************************************************************************** **** from matplotlib import mlab from scipy import * from chaco import * from chaco import wxplt as plt import RandomArray as ra def histfit(data): """histfit(data) data = a 1-dimensional list or numpy array of numbers""" #data for testing... #data = ra.normal(0,3,100) mu = mlab.mean(data) sigma = mlab.std(data) mhist = mlab.hist(data) xhist = mhist[1] yhist = mhist[0] #put xhist & yhist into a list of tuple pairs histvalues=[] for ii in range(len(xhist)): histvalues.append((xhist[ii],yhist[ii])) histplot = plt.PlotValue(histvalues, type='bar') f1 = plt.figure() f1.canvas.add(histplot) plt.hold() # Plot the normal fit curve xnormfit = arange(mu-4*sigma,mu+4*sigma,(8*sigma/100)) ynormfit = mlab.normpdf(xnormfit,mu,sigma) # ynormfit = ynormfit/max(ynormfit)*max(yhist) #normalize #put xnormfit & ynormfit into a list of tuple pairs fitvalues=[] for ii in range(len(xnormfit)): fitvalues.append((xnormfit[ii],ynormfit[ii])) fitplot = plt.PlotValue(fitvalues,type='line') f1.canvas.add(fitplot) #Plot the limits #plt.plot((mu-4*sigma)*ones(2),[0,max(yhist)]) # plot lower spec limit #plt.plot((mu+4*sigma)*ones(2),[0,max(yhist)]) # plot upper spec limit return f1
participants (1)
-
Sajec, Mike TQO