Thank you Pierre,

I've taken a while to get around to it, but this code worked a treat, 
and taught me a little about how I can override things in matplotlib

Thanks
Steve

Pierre GM wrote:
>> One thing I cannot work out is the axis number presentation.
>> Cannot find any documentation about how to control the presentation of
>> the axis number.
>>     
>
> Poke around ticker.formatter
>
>   
>> However I would prefer it would present in enginering notation (10, 100,
>> 1e3, 10e3, 100e3, 1e6, 10e6 ...etc)
>>     
>
> The easiest is to define your own formatter. Please try the solution below. 
> You can use it as:
> gca().xaxis.set_major_formatter(EngrFormatter(3))
>
> ##### 
> -------------------------------------------------------------------------
> #---- --- Formatters ---
> ##### 
> -------------------------------------------------------------------------
> 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."""
>         ScalarFormatter._set_orderOfMagnitude(self, mrange)
>         self.orderOfMagnitude = 3*(self.orderOfMagnitude//3)
>     #........................
>     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
>
>   


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