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 > > > |