I have a request that weighted histograms be added to the "hist"

function. Here's the code to do it (lightly modified from the version

in matplotlib.mlab, with changes commented:

if not iterable(bins):

ymin, ymax = min(y), max(y)

if ymin==ymax:

ymin -= 0.5

ymax += 0.5

bins = linspace(ymin, ymax, bins)

if w is None: # unweighted if weights not

w=ones(length(y)) # specified

idx = argsort(y) # find indicies that will sort the data

sy = take(y,idx) # sort the data

sw = take(w,idx) # sort the weights

n = searchsorted(sy, bins)

n = concatenate([n,[len(y)]])

hist = zeros(len(n)-1) # make the histogram

for i in range(len(hist)): # sum up the weights that fall into

l=n[i] # the range b/t each bin

h=n[i+1] # ...

hist[i] = sum(sw[l:h]) # ...

if normed:

db = bins[1]-bins[0]

return 1/(len(y)*db)*n, bins

else:

return n, bins

Also, I'd be very happy if the (in my opinion totally rediculous)

default of 10 bins were changed to something more reasonable, such as

50 bins. However, that's easy enough for me to change myself.

Thank you,

Greg