|
From: John P. <jo...@ot...> - 2005-03-16 23:27:01
|
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 |
|
From: Darren D. <dd...@co...> - 2005-03-17 00:59:17
|
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
> Mat...@li...
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users
--
Darren
|
|
From: Darren D. <dd...@co...> - 2005-03-17 01:36:12
|
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
|
|
From: John P. <jo...@ot...> - 2005-03-17 19:49:14
|
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 > > > |