Pierre,

Offhand, it looks like it should go into ticker.py, so I will probably 
do that.

Eric

Pierre GM wrote:
> On Monday 18 December 2006 13:29, David L Goldsmith wrote:
>> Simson Garfinkel wrote:
>>> It really depends on your audience as to whether or not 1,000,000
>>> through 9,000,000 is better displayed in scientific notation or not.
>>> For audiences that I frequently present to, any scientific notation
>>> is just unacceptable. You can add quantifiers (like KBps, MBps,
>>> GBps), but presenting something a 5e+5 Bps will just be lost.  You
>>> *might* get away with e+3, e+6, and e+9, but never the other e's.
>> Ah, "Engineering" notation - that could be a useful helper function.
> 
> A few months ago the question got asked on this very list. 
> The idea is to define a specific formatter. Here's what I'd come with (I copy 
> the initial post for convenience at the end of the message).
> 
> If it's found useful, I could put it in the cookbook (now that I remember how 
> to edit the wiki). Or I could leave our dear developers add it to the core.
> 
> 
> P.
> 
> #----------------------------------------------
> 
> class EngrFormatter(ScalarFormatter):
>     """A variation of the standard ScalarFormatter, using only multiples of 
> three
> in the mantissa. A fixed number of decimals can be displayed with the 
> optional 
> parameter `ndec` . If `ndec` is None (default), the number of decimals is 
> defined
> from the current ticks.
>     """
>     def __init__(self, ndec=None, useOffset=True, useMathText=False):
>         ScalarFormatter.__init__(self, useOffset, useMathText)
>         if ndec is None or ndec < 0:
>             self.format = None
>         elif ndec == 0:
>             self.format = "%d"
>         else:
>             self.format = "%%1.%if" % ndec
>     #........................
>     def _set_orderOfMagnitude(self, mrange):
>         """Sets the order of margnitude."""        
>         locs = N.absolute(self.locs)
>         if self.offset: 
>             oom = math.floor(math.log10(mrange))
>         else:
>             if locs[0] > locs[-1]: 
>                 val = locs[0]
>             else: 
>                 val = locs[-1]
>             if val == 0: 
>                 oom = 0
>             else: 
>                 oom = math.floor(math.log10(val))
>         if oom <= -3:
>             self.orderOfMagnitude = 3*(oom//3)
>         elif oom <= -1:
>             self.orderOfMagnitude = -3
>         elif oom >= 4:
>             self.orderOfMagnitude = 3*(oom//3)
>         else:
>             self.orderOfMagnitude = 0
>     #........................
>     def _set_format(self):
>         """Sets the format string to format all ticklabels."""
>         # set the format string to format all the ticklabels
>         locs = (N.array(self.locs)-self.offset) / 10**self.orderOfMagnitude + 
> 1e-15
>         sigfigs = [len(str('%1.3f'% loc).split('.')[1].rstrip('0')) \
>                    for loc in locs]
>         sigfigs.sort()
>         if self.format is None:
>             self.format = '%1.' + str(sigfigs[-1]) + 'f'
>         if self._usetex or self._useMathText: 
>             self.format = '$%s$' % self.format
> #..............................................................................
> class MinimalFormatter(Formatter):
>     """A minimal formatter: just the plain data !"""
>     def __init__(self,sigfigs=None):
>         if sigfigs is None:
>             self.fmt = "%f"
>         else:
>             self.fmt = "%.%if" % sigfigs
>     def __call__(self,x,pos=None):
>         return str(self.fmt % x).rstrip('0')
> 
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys - and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Matplotlib-users mailing list
> Matplotlib-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/matplotlib-users


-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to