Hello,

When I run:

from pylab import *

data = [1.6e-012, 3.0e-012]

plot(data)

the y axis autoscales to 1.8e-12 - 3.2e-12. I get the same behavior when I run in interactive mode or save the figure to png.

Does anyone know if this is a bug or if there's something I can do to make the autoscaling work out?

Thanks,

John

P.S. Here's the output from the --verbose-helpful flag:

matplotlib data path c:\pyle\python23\share\matplotlib

loaded rc file c:\pyle\python23\share\matplotlib\.matplotlibrc

matplotlib version 0.72.1

verbose.level helpful

interactive is False

platform is win32

numerix numarray 1.2.2

font search path ['c:\\pyle\\python23\\share\\matplotlib']

loaded ttfcache file C:/msys/1.0/home/artsys\.ttffont.cache

backend Agg version v2.2

Hi John,

It is a bug. I suggest making the following change to ticker.py, starting at

line 501 in version 0.72.1:

def le(self, x):

'return the largest multiple of base <= x'

d,m = divmod(x, self._base)

if closeto(m/self._base,1): # was closeto(m, self._base)

#looks like floating point error

return (d+1)*self._base

else:

return d*self._base

Darren

## ···

On Wednesday 16 March 2005 06:26 pm, John Pyle wrote:

Hello,

When I run:

from pylab import *

data = [1.6e-012, 3.0e-012]

plot(data)

the y axis autoscales to 1.8e-12 - 3.2e-12. I get the same behavior when

I run in interactive mode or save the figure to png.

Does anyone know if this is a bug or if there's something I can do to

make the autoscaling work out?

Thanks,

John

P.S. Here's the output from the --verbose-helpful flag:

matplotlib data path c:\pyle\python23\share\matplotlib

loaded rc file c:\pyle\python23\share\matplotlib\.matplotlibrc

matplotlib version 0.72.1

verbose.level helpful

interactive is False

platform is win32

numerix numarray 1.2.2

font search path ['c:\\pyle\\python23\\share\\matplotlib']

loaded ttfcache file C:/msys/1.0/home/artsys\.ttffont.cache

backend Agg version v2.2

-------------------------------------------------------

SF email is sponsored by - The IT Product Guide

Read honest & candid reviews on hundreds of IT Products from real users.

Discover which products truly live up to the hype. Start reading now.

http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click

_______________________________________________

Matplotlib-users mailing list

Matplotlib-users@lists.sourceforge.net

matplotlib-users List Signup and Options

--

Darren

I was testing this bugfix with plot([1.4e-12,3.0e-12]), and noticed that the

1.4e-12 ticklabel was being dropped.

In ticker.py, I suggest replacing Base.ge with:

def ge(self, x):

'return the largest multiple of base >= x'

d,m = divmod(x, self._base)

if closeto(m,0) and not closeto(m/self._base,1): return x

return (d+1)*self._base

The fourth line used to be if m==0: return x, which fails sometimes due to

floating point inaccuracy. John, remember I was complaining about how certain

ticklabels wouldnt get rendered in the new scalarformatter I posted a couple

weeks ago? This was the problem.

Darren

## ···

On Wednesday 16 March 2005 07:59 pm, Darren Dale wrote:

I suggest making the following change to ticker.py, starting

at line 501 in version 0.72.1:

def le(self, x):

'return the largest multiple of base <= x'

d,m = divmod(x, self._base)

if closeto(m/self._base,1): # was closeto(m, self._base)

#looks like floating point error

return (d+1)*self._base

else:

return d*self._base

Darren,

This works great for me - thanks!

I should have said this earlier, but matplotlib is excellent! Thank you to everyone who works on it.

John

Darren Dale wrote:

## ···

On Wednesday 16 March 2005 07:59 pm, Darren Dale wrote:

I suggest making the following change to ticker.py, starting

at line 501 in version 0.72.1:

def le(self, x):

'return the largest multiple of base <= x'

d,m = divmod(x, self._base)

if closeto(m/self._base,1): # was closeto(m, self._base)

#looks like floating point error

return (d+1)*self._base

else:

return d*self._base

I was testing this bugfix with plot([1.4e-12,3.0e-12]), and noticed that the 1.4e-12 ticklabel was being dropped.

In ticker.py, I suggest replacing Base.ge with:

def ge(self, x):

'return the largest multiple of base >= x'

d,m = divmod(x, self._base)

if closeto(m,0) and not closeto(m/self._base,1): return x

return (d+1)*self._base

The fourth line used to be if m==0: return x, which fails sometimes due to floating point inaccuracy. John, remember I was complaining about how certain ticklabels wouldnt get rendered in the new scalarformatter I posted a couple weeks ago? This was the problem.

Darren