Re : plot a histogram of relative percentage of data

Yep, that’s what I did in the end… it also means that a simple argument could be added to the axes.hist() to do such operation, I described this in a previous post (see below, changes are in major cap).
Thanks for the tip,
Aure

def hist(self, x, bins=10, RELPERCENT = 1, normed=0, bottom=None,

        align='edge', orientation='vertical', width=None,

        log=False, **kwargs):
    """

    if not self._hold: self.cla()
    n, bins = npy.histogram(x, bins, range=None, normed=normed)

    IF NOT NORMED AND RELPERCENT: N = N/FLOAT(LEN(X))
    if width is None: width = 0.9*(bins[1]-bins[0])
    if orientation == 'horizontal':
        patches = self.barh(bins, n, height=width, left=bottom,
                            align=align, log=log)
    elif orientation == 'vertical':
        patches = self.bar(bins, n, width=width, bottom=bottom,
                            align=align, log=log)
    else:
        raise ValueError, 'invalid orientation: %s' % orientation
    for p in patches:
        p.update(kwargs)
    return n, bins, cbook.silent_list('Patch', patches)

----- Message d’origine ----

···

De : Bernhard Voigt <bernhard.voigt@…287…>
À : Auré Gourrier <aurelien.gourrier@…136…>
Cc : matplotlib-users@…564…net
Envoyé le : Dimanche, 24 Février 2008, 19h10mn 47s
Objet : Re: [Matplotlib-users] plot a histogram of relative percentage of data

Hi!

You could also use the bar method and do the histogram with numpy:

import numpy as n
import pylab as p

foo = n.random.normal(size=100)
p.hist(foo, 20)
p.twinx()
counts, bins = n.histogram(foo, 20)

counts = counts.astype(float)/len(foo)
width = (bins[1]-bins[0]) * .9
p.bar(bins ,counts, width=width, fc=‘r’)

Cheers! Bernhard

On Fri, Feb 22, 2008 at 4:08 PM, Auré Gourrier <aurelien.gourrier@…136…> wrote:

Hi all,

In my latest post, I wanted to use the mpl.hist() function in a different way, i.e.:

x = datalist
bins= 100
hist(x,bins,normed=0) #returns a tupple (n,bins,patches)

Instead of ploting the number of counts n, I wanted to plot the relative percentage of counts, i.e. n/len(x). I can’t really use the option normed=1 which returns n/(len(x)*dbin). In the axes.py module, this would simply mean adding an argument e.g. relpercent = 1. I added the code line to show how this could be done (in major cap). If this is useful, how could it be modified in the distribution ?

def hist(self, x, bins=10, RELPERCENT = 1, normed=0, bottom=None,
          align='edge',

orientation=‘vertical’, width=None,
log=False, **kwargs):
“”"

    if not self._hold: self.cla()
    n, bins = npy.histogram(x, bins, range=None, normed=normed)

    IF NOT NORMED AND RELPERCENT: N = N/FLOAT(LEN(X))
    if width is None: width = 0.9*(bins[1]-bins[0])
    if orientation == 'horizontal':
        patches = self.barh(bins, n, height=width, left=bottom,

                            align=align,

log=log)
elif orientation == ‘vertical’:
patches = self.bar(bins, n, width=width, bottom=bottom,
align=align, log=log)
else:
raise ValueError, ‘invalid orientation: %s’ % orientation

    for p in patches:
        p.update(kwargs)
    return n, bins, cbook.silent_list('Patch', patches)

Ne gardez plus qu’une seule adresse mail ! Copiez vos mails vers Yahoo! Mail


This SF.net email is sponsored by: Microsoft

Defy all challenges. Microsoft(R) Visual Studio 2008.

http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/


Matplotlib-users mailing list

Matplotlib-users@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-users


Yahoo! Mail : un mail innovant avec Messenger compatible Windows Live + stockage illimité.