From: Robert Kern <robert.kern@gm...>  20090914 19:07:39

On 20090914 13:49 PM, Gökhan Sever wrote: > > > On Mon, Sep 14, 2009 at 12:30 PM, <jasonsage@... > <mailto:jasonsage@...>> wrote: > > I tried the following (most output text is deleted): > > In [1]: ob1=[1,1,2,2,1,2,4,3,2,2,2,3,4,5,6,7,8,9,7,6,4,5,5] > In [2]: import matplotlib.pyplot as > plt > In [3]: > plt.figure() > In [4]: > plt.boxplot(ob1) > In [5]: > plt.savefig('test.png') > In [6]: import > scipy.stats > In [7]: > scipy.stats.scoreatpercentile(ob1,75) > Out[7]: 5.5 > > > Note that the 75th percentile is 5.5. R agrees with this calculation. > However, in the boxplot, the top of the box is around 6, not 5.5. Isn't > the top of the box supposed to be at the 75th percentile? > > Thanks, > > Jason > >  > Jason Grout > > > From matplotlib/lib/matplotlib/axes.py > > You can see how matplotlib calculating percentiles. And yes it doesn't > conform with scipy's scoreatpercentile() > > > # get median and quartiles > q1, med, q3 = mlab.prctile(d,[25,50,75]) > > I[36]: q1 > O[36]: 2.0 > > I[37]: med > O[37]: 4.0 > > I[38]: q3 > O[38]: 6.0 > > > Could this be due to a rounding? I don't know, but I am curious to hear > the explanations for this discrepancy. prctile does not handle the case where the exact percentile lies between two items. scoreatpercentile does.  Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth."  Umberto Eco 