> Hi Michael,
>
> I use fill_between() and log axis without problems in the following way (it's 
> by memory, I hope the sintax is correct)
>
> fig = plt.figure()
> spl = fig.add_subplot(111)
>
> spl.fill_between(x,y1,y2)
>
> spl.set_yscale("log")
>
> plt.show()
>
> Cheers,
>
> Fra
>
> Il giorno 06/mag/2011, alle ore 01.34, Benjamin Root ha scritto:
>
> >
> >
> > On Tue, May 3, 2011 at 3:40 AM, K.-Michael Aye <kmichael....@gmail.com> 
> > wrote:
> > A colleague posed an interesting challenge:
> > How to do a filled plot having the y-axis in logarithm?
> > I think I can do it with creating patches myself an adding it to the
> > axis, but isn't there anything built-in?
> >
> > Best regards,
> > Michael
> >
> >
> >
> > Does fill_between() not work for you?  Note, I have never tried it on a log 
> > scale plot.
> >
> > Ben Root
> >
>

Another couple things you may find useful as I did:

fig = pyplot.figure()
spl = fig.add_subplot(111)

to properly "clip" the plot in case you are using polygons or similar,
you can use the nonposy option:

spl.set_yscale('log', nonposy='clip')

Here is my hand made formula for setting reasonable limits on the
y-axis, given a numpy.array "yarr" as the list of y-values. The ymin
gets the minimum value that's not zero since you can't plot zero on a
log scale (negative numbers may cause a whole other problem):

spl.set_ylim(
    ymin = 10**(int(math.log(min(yarr[numpy.where(yarr>0)]), 10))-1),
    ymax = 10**(int(math.log(max(yarr), 10)+0.2)+1)  )

--Johann

------------------------------------------------------------------------------
WhatsUp Gold - Download Free Network Management Software
The most intuitive, comprehensive, and cost-effective network 
management toolset available today.  Delivers lowest initial 
acquisition cost and overall TCO of any competing solution.
http://p.sf.net/sfu/whatsupgold-sd
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to