
@wOGc           @   s  d  Z  d d k l Z d d k Z d d k Z d d k Z d d k Z d d k Z d d k Z d d k	 Z
 d d k Z d d k l Z l Z d d k l Z d d k l Z d d; d     YZ d	 e f d
     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d     YZ d e f d      YZ d! e f d"     YZ d# e f d$     YZ  d% e f d&     YZ! d'   Z" d( d< d)     YZ# d* e f d+     YZ$ d, d- d.  Z% d/ e f d0     YZ& d1 d2  Z' d1 d3  Z( d1 d4  Z) d5 e f d6     YZ* d7 e& f d8     YZ+ d9 e f d:     YZ, d= Z- d S(>   s  
Tick locating and formatting
============================

This module contains classes to support completely configurable tick
locating and formatting.  Although the locators know nothing about
major or minor ticks, they are used by the Axis class to support major
and minor tick locating and formatting.  Generic tick locators and
formatters are provided, as well as domain specific custom ones..


Tick locating
-------------

The Locator class is the base class for all tick locators.  The
locators handle autoscaling of the view limits based on the data
limits, and the choosing of tick locations.  A useful semi-automatic
tick locator is MultipleLocator.  You initialize this with a base, eg
10, and it picks axis limits and ticks that are multiples of your
base.

The Locator subclasses defined here are

  * NullLocator     - No ticks

  * FixedLocator    - Tick locations are fixed

  * IndexLocator    - locator for index plots (eg where x = range(len(y))

  * LinearLocator   - evenly spaced ticks from min to max

  * LogLocator      - logarithmically ticks from min to max

  * MultipleLocator - ticks and range are a multiple of base;
                      either integer or float

  * OldAutoLocator  - choose a MultipleLocator and dyamically reassign
                      it for intelligent ticking during navigation

  * MaxNLocator     - finds up to a max number of ticks at nice
                      locations

  * AutoLocator     - MaxNLocator with simple defaults. This is the
                      default tick locator for most plotting.

There are a number of locators specialized for date locations - see
the dates module

You can define your own locator by deriving from Locator.  You must
override the __call__ method, which returns a sequence of locations,
and you will probably want to override the autoscale method to set the
view limits from the data limits.

If you want to override the default locator, use one of the above or a
custom locator and pass it to the x or y axis instance.  The relevant
methods are::

  ax.xaxis.set_major_locator( xmajorLocator )
  ax.xaxis.set_minor_locator( xminorLocator )
  ax.yaxis.set_major_locator( ymajorLocator )
  ax.yaxis.set_minor_locator( yminorLocator )

The default minor locator is the NullLocator, eg no minor ticks on by
default.

Tick formatting
---------------

Tick formatting is controlled by classes derived from Formatter.  The
formatter operates on a single tick value and returns a string to the
axis.

  * NullFormatter      - no labels on the ticks

  * FixedFormatter     - set the strings manually for the labels

  * FuncFormatter      - user defined function sets the labels

  * FormatStrFormatter - use a sprintf format string

  * ScalarFormatter    - default formatter for scalars; autopick the fmt string

  * LogFormatter       - formatter for log axes


You can derive your own formatter from the Formatter base class by
simply overriding the __call__ method.  The formatter class has access
to the axis view and data limits.

To control the major and minor tick label formats, use one of the
following methods::

  ax.xaxis.set_major_formatter( xmajorFormatter )
  ax.xaxis.set_minor_formatter( xminorFormatter )
  ax.yaxis.set_major_formatter( ymajorFormatter )
  ax.yaxis.set_minor_formatter( yminorFormatter )

See examples/major_minor_demo1.py for an example of setting major an
minor ticks.  See the matplotlib.dates module for more information and
examples of using date locators and formatters.

DEVELOPERS NOTE

If you are implementing your own class or modifying one of these, it
is critical that you use viewlim and dataInterval READ ONLY MODE so
multiple axes can share the same locator w/o side effects!


i(   t   divisionN(   t   verboset   rcParams(   t   cbook(   t
   transformst
   TickHelperc           B   s8   e  Z d Z d Z d    Z d   Z d   Z d   Z RS(   c         C   sD   |  i  d  j o t d   n |  i d  j o t d   n d  S(   Ns3   You must set the data interval to use this functions3   You must set the view interval to use this function(   t   dataIntervalt   Nonet   RuntimeErrort   viewInterval(   t   self(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   verify_intervals   s    c         C   s   | |  _  d  S(   N(   R	   (   R
   t   interval(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   set_view_interval   s    c         C   s   | |  _  d  S(   N(   R   (   R
   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   set_data_interval   s    c         C   sR   t  i t  i |  t  i |   |  _ t  i t  i |  t  i |   |  _ d S(   s  
        Set dataInterval and viewInterval from numeric vmin, vmax.

        This is for stand-alone use of Formatters and/or
        Locators that require these intervals; that is, for
        cases where the Intervals do not need to be updated
        automatically.
        N(   t   mtranst   Intervalt   ValueR   R	   (   R
   t   vmint   vmax(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt
   set_bounds   s    	'N(	   t   __name__t
   __module__R   R	   R   R   R   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR   |   s   			t	   Formatterc           B   sD   e  Z d  Z g  Z d d  Z d   Z d   Z d   Z d   Z	 RS(   s/   
    Convert the tick location to a string
    c         C   s   t  d   d S(   sP   Return the format for tick val x at position pos; pos=None indicated unspecifieds   Derived must overideN(   t   NotImplementedError(   R
   t   xt   pos(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   __call__   s    c         C   s   |  i  |  S(   N(   R   (   R
   t   value(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   format_data   s    c         C   s   |  i  |  S(   s   return a short string version(   R   (   R
   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   format_data_short   s    c         C   s   d S(   Nt    (    (   R
   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt
   get_offset   s    c         C   s   | |  _  d  S(   N(   t   locs(   R
   R!   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   set_locs   s    N(
   R   R   t   __doc__R!   R   R   R   R   R    R"   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR      s   			t   NullFormatterc           B   s   e  Z d  Z d d  Z RS(   s   Always return the empty stringc         C   s   d S(   s0   Return the format for tick val x at position posR   (    (   R
   R   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR      s    N(   R   R   R#   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR$      s   t   FixedFormatterc           B   s5   e  Z d  Z d   Z d d  Z d   Z d   Z RS(   s$   Return fixed strings for tick labelsc         C   s   | |  _  d |  _ d S(   s   
        seq is a sequence of strings.  For positions i<len(seq) return
        seq[i] regardless of x.  Otherwise return ''
        R   N(   t   seqt   offset_string(   R
   R&   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   __init__   s    	c         C   s:   | d j p | t |  i  j o d Sn |  i | Sd S(   s0   Return the format for tick val x at position posR   N(   R   t   lenR&   (   R
   R   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR      s    +c         C   s   |  i  S(   N(   R'   (   R
   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR       s    c         C   s   | |  _  d  S(   N(   R'   (   R
   t   ofs(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   set_offset_string   s    N(   R   R   R#   R(   R   R   R    R+   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR%      s
   		t   FuncFormatterc           B   s#   e  Z d  Z d   Z d d  Z RS(   s.   
    User defined function for formatting
    c         C   s   | |  _  d  S(   N(   t   func(   R
   R-   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(      s    c         C   s   |  i  | |  S(   s0   Return the format for tick val x at position pos(   R-   (   R
   R   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR      s    N(   R   R   R#   R(   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR,      s   	t   FormatStrFormatterc           B   s#   e  Z d  Z d   Z d d  Z RS(   s0   
    Use a format string to format the tick
    c         C   s   | |  _  d  S(   N(   t   fmt(   R
   R/   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(      s    c         C   s   |  i  | S(   s0   Return the format for tick val x at position pos(   R/   (   R
   R   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR      s    N(   R   R   R#   R(   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR.      s   	t   OldScalarFormatterc           B   s#   e  Z d  Z d d  Z d   Z RS(   s   
    Tick location is a plain old number.  If viewInterval is set, the
    formatter will use %d, %1.#f or %1.ef as appropriate.  If it is
    not set, the formatter will do str conversion
    c         C   s/   |  i    t |  i i    } |  i | |  S(   s0   Return the format for tick val x at position pos(   R   t   absR	   t   spant
   pprint_val(   R
   R   R   t   d(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR      s    
c   	      C   sW  t  |  d j  o | t |  j o d | Sn | d j  o
 d } nc | d j  o
 d } nL | d j o
 d } n5 | d	 j o
 d
 } n | d j o
 d } n d } | | } | i d  } t |  d j od | d i d  i d  } | d d i d d  } | d d i d  } d | | | f } n | i d  i d  } | S(   Ng     @s   %dg{Gz?s   %1.3eg?s   %1.3fg     j@s   %1.1ei
   s   %1.1fi   s   %1.2ft   ei   i    t   0t   .t   +R   s   %se%s%s(   R1   t   intt   splitR)   t   rstript   replacet   lstrip(	   R
   R   R4   R/   t   st   tupt   mantissat   signt   exponent(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR3      s     2
N(   R   R   R#   R   R   R3   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR0      s   t   ScalarFormatterc           B   s   e  Z d  Z e e d  Z d d  Z d   Z d   Z	 d   Z
 d   Z d   Z d   Z d	   Z d
   Z d   Z d   Z d   Z RS(   s  
    Tick location is a plain old number.  If useOffset==True and the data range
    is much smaller than the data average, then an offset will be determined
    such that the tick labels are meaningful. Scientific notation is used for
    data < 1e-3 or data >= 1e4.
    c         C   sT   | |  _  t d |  _ | |  _ d |  _ d |  _ d |  _ t |  _ t d |  _	 d  S(   Ns   text.usetexi    R   s   axes.formatter.limits(
   t
   _useOffsetR   t   _usetext   _useMathTextt   offsett   orderOfMagnitudet   formatt   Truet   _scientifict   _powerlimits(   R
   t	   useOffsett   useMathText(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(     s    						c         C   s/   t  |  i  d j o d Sn |  i |  Sd S(   s0   Return the format for tick val x at position posi    R   N(   R)   R!   R3   (   R
   R   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR      s    c         C   s   t  |  |  _ d S(   s_   True or False to turn scientific notation on or off
        see also set_powerlimits()
        N(   t   boolRK   (   R
   t   b(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   set_scientific'  s    c         C   s*   t  |  d j p
 t d  | |  _ d S(   s  
        Sets size thresholds for scientific notation.

        e.g. xaxis.set_powerlimits((-3, 4)) sets the pre-2007 default in
        which scientific notation is used for numbers less than
        1e-3 or greater than 1e4.
        See also set_scientific().
        i   s'   argument must be a sequence of length 2N(   R)   t   AssertionErrorRL   (   R
   t   lims(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   set_powerlimits-  s    	c         C   s   d | S(   s:   return a short formatted string representation of a numbers   %1.3g(    (   R
   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR   9  s    c         C   s   |  i  d |  S(   s4   return a formatted string representation of a numbers   %1.10e(   t   _formatSciNotation(   R
   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR   =  s    c         C   s:  t  |  i  d j o d Sn |  i p
 |  i o d } d } |  i o4 |  i |  i  } |  i d j o d | } q| n |  i oG |  i p
 |  i o d |  i d |  i  } q d d |  i } n |  i o d i d | | d	 f  Sq6|  i o d i d
 | | d
 f  Sq6d i | | f  Sn d Sd S(   s'   Return scientific notation, plus offseti    R   R8   s   {\times}i
   u   ×s   1e%ds   $\mathdefault{s   }$t   $N(   R)   R!   RH   RG   R   RE   RF   t   join(   R
   t	   offsetStrt	   sciNotStr(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR    A  s"    
"


c         C   sx   | |  _  t |  i   d j oU |  i   t |  i i    } |  i o |  i |  n |  i |  |  i	   n d S(   s   set the locations of the ticksi    N(
   R!   R)   R   R1   R	   R2   RD   t   _set_offsett   _set_orderOfMagnitudet   _set_format(   R
   R!   R4   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR"   W  s    	
c         C   s0  |  i  } | d  j p t |  p | d j o d |  _ d  Sn t i |  } | o t i t i t i t i	 |     } t i t i |   } t i	 | |  d j ok | d j  o/ t i
 t i |  d |  d | |  _ q(t i t i |  d |  d | |  _ q,d |  _ n d  S(   Ni    i   i
   (   R!   R   R)   RG   t   npyt   meant   matht   floort   log10t   absolutet   ceilt   maxt   min(   R
   t   rangeR!   t   ave_loct   ave_oomt	   range_oom(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyRZ   a  s    	(	*//c         C   s   |  i  p d |  _ d  Sn t i |  i  } |  i o t i t i |   } n] | d | d j o | d } n | d } | d j o
 d } n t i t i |   } | |  i	 d j o | |  _ n+ | |  i	 d j o | |  _ n
 d |  _ d  S(   Ni    ii   (
   RK   RH   R]   Rb   R!   RG   R_   R`   Ra   RL   (   R
   Rf   R!   t   oomt   val(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR[   t  s    
	&#
c         C   s   t  i |  i  |  i d |  i d } g  } | D]3 } | t t d |  i d  d i d   q3 ~ } | i	   d t | d  d	 |  _
 |  i o d
 |  i
 |  _
 n |  i o d |  i
 |  _
 n d  S(   Ni
   gV瞯<s   %1.8fR7   i   R6   s   %1.it   fs   $%s$s   $\mathdefault{%s}$(   R]   t   asarrayR!   RG   RH   R)   t   strR:   R;   t   sortRI   RE   RF   (   R
   R!   t   _[1]t   loct   sigfigs(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR\     s    (@


c         C   sC   | |  i  d |  i } t i |  d j  o
 d } n |  i | S(   Ni
   g:0yE>i    (   RG   RH   R]   Rb   RI   (   R
   R   t   xp(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR3     s     c         C   s  | i  d  } y | d i d  i d  } | d d i d d  } | d d i d  } |  i p
 |  i od | d j o
 d } n | o d	 | | f } n | o | o d
 | | f Sq d | | f Sn d | | | f i d  SWn t j
 o } | Sn Xd  S(   NR5   i    R6   R7   i   R8   R   t   1s	   10^{%s%s}s   %s{\times}%ss   %s%ss   %se%s%s(   R:   R;   R<   R=   RF   RE   t
   IndexError(   R
   R>   R?   t   significandRA   RB   t   msg(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyRU     s     
N(   R   R   R#   RJ   t   FalseR(   R   R   RQ   RT   R   R   R    R"   RZ   R[   R\   R3   RU   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyRC     s   						
				t   LogFormatterc           B   s_   e  Z d  Z d e d  Z d   Z d   Z d
 d  Z d   Z	 d   Z
 d   Z d	   Z RS(   sn   
    Format values for log axis;

    if attribute decadeOnly is True, only the decades will be labelled.
    g      $@c         C   s#   | d |  _  | |  _ t |  _ d S(   s   
        base is used to locate the decade tick,
        which will be the only one to be labeled if labelOnlyBase
        is False
        g        N(   t   _baset   labelOnlyBaseRJ   t
   decadeOnly(   R
   t   baseR{   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(     s    	c         C   s   | |  _  d S(   sX   change the base for labeling - warning: should always match the base used for LogLocatorN(   Rz   (   R
   R}   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR}     s    c         C   s   | |  _  d S(   s"   switch on/off minor ticks labelingN(   R{   (   R
   R{   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   label_minor  s    c         C   s   |  i    t |  i i    } |  i } t i |  t i |  } |  i |  } | o |  i o
 d } nI | d j o d | } n. | d j  o d | } n |  i	 | |  } | S(   s0   Return the format for tick val x at position posR   i'  s   %1.0ei   (
   R   R1   R	   R2   Rz   R_   t   logt	   is_decadeR{   R3   (   R
   R   R   R4   RP   t   fxt   isDecadeR>   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    
	c         C   s.   t  |  _ t i |  i |   } t |  _ | S(   N(   Rx   R{   R   t
   strip_mathR   RJ   (   R
   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    		c         C   s#   |  i  |  } t | |  d j  S(   Ng|=(   t   nearest_longR1   (   R
   R   t   n(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    c         C   sF   | d j o d Sn. | d j o t  | d  Sn t  | d  Sd  S(   Ni    l    g      ?(   t   long(   R
   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    c   	      C   sW  t  |  d j  o | t |  j o d | Sn | d j  o
 d } nc | d j  o
 d } nL | d j o
 d } n5 | d	 j o
 d
 } n | d j o
 d } n d } | | } | i d  } t |  d j od | d i d  i d  } | d d i d d  } | d d i d  } d | | | f } n | i d  i d  } | S(   Ng     @s   %dg{Gz?s   %1.3eg?s   %1.3fg     j@s   %1.1ei
   s   %1.1fi   s   %1.2fR5   i   i    R6   R7   R8   R   s   %se%s%s(   R1   R9   R:   R)   R;   R<   R=   (	   R
   R   R4   R/   R>   R?   R@   RA   RB   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR3     s     2
N(   R   R   R#   RJ   R(   R}   R~   R   R   R   R   R   R3   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyRy     s   
					t   LogFormatterExponentc           B   s   e  Z d  Z d d  Z RS(   sF   
    Format values for log axis; using exponent = log_base(value)
    c         C   s   |  i    t |  i i    } |  i } t i |  t i |  } |  i |  } | o |  i o
 d } nI | d j o d | } n. | d j  o d | } n |  i	 | |  } | S(   s0   Return the format for tick val x at position posR   i'  s   %1.0ei   (
   R   R1   R	   R2   Rz   R_   R   R   R{   R3   (   R
   R   R   R4   RP   R   R   R>   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    
	N(   R   R   R#   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s   t   LogFormatterMathtextc           B   s   e  Z d  Z d d  Z RS(   sF   
    Format values for log axis; using exponent = log_base(value)
    c         C   s   |  i    |  i } t i |  t i |  } |  i |  } t d } | o |  i o
 d } nt | p/ | o d | | f } q d | | f } n> | o d | |  i |  f } n d | |  i |  f } | S(   s0   Return the format for tick val x at position poss   text.usetexR   s   $%d^{%.2f}$s   $\mathdefault{%d^{%.2f}}$s	   $%d^{%d}$s   $\mathdefault{%d^{%d}}$(   R   Rz   R_   R   R   R   R{   R   (   R
   R   R   RP   R   R   t   usetexR>   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    
	
N(   R   R   R#   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s   t   Locatorc           B   s;   e  Z d  Z d   Z d   Z d   Z d   Z d   Z RS(   s   
    Determine the tick locations;

    Note, you should not use the same locator between different Axis
    because the locator stores references to the Axis data and view
    limits
    c         C   s   t  d   d S(   s!   Return the locations of the tickss   Derived must overrideN(   R   (   R
   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR   @  s    c         C   s    |  i    t i |  i i     S(   s   autoscale the view limits(   R   R   t   nonsingularR   t
   get_bounds(   R
   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt	   autoscaleD  s    
c         C   sm   |    } t  |  } | d j o  | t | d | d  } n | |  i i   d } |  i i |  d S(   s*   Pan numticks (can be positive or negative)i   i    i   i   N(   R)   R1   R	   R2   t   shift(   R
   t   numstepst   tickst   numtickst   step(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   panI  s    	 c         C   sQ   |  i  i   \ } } |  i  i   } d | | } |  i  i | | | |  d S(   s>   Zoom in/out on axis; if direction is >0 zoom in, else zoom outg?N(   R	   R   R2   R   (   R
   t	   directionR   R   R   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   zoomU  s    c         C   s   d S(   s1   refresh internal information based on current limN(    (   R
   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   refresh\  s    (   R   R   R#   R   R   R   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR   7  s   				t   IndexLocatorc           B   s    e  Z d  Z d   Z d   Z RS(   s   
    Place a tick on every multiple of some base number of points
    plotted, eg on every 5th point.  It is assumed that you are doing
    index plotting; ie the axis is 0, len(data).  This is mainly
    useful for x ticks.
    c         C   s   | |  _  | |  _ d S(   s<   place ticks on the i-th data points where (i-offset)%base==0N(   Rz   RG   (   R
   R}   RG   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(   h  s    	c         C   s6   |  i  i   \ } } t i | |  i | d |  i  S(   s!   Return the locations of the ticksi   (   R   R   R]   t   arangeRG   Rz   (   R
   t   dmint   dmax(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR   m  s    (   R   R   R#   R(   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR   a  s   	t   FixedLocatorc           B   s#   e  Z d  Z d d  Z d   Z RS(   s   
    Tick locations are fixed.  If nbins is not None,
    the array of possible positions will be subsampled to
    keep the number of ticks <= nbins +1.
    c         C   s?   | |  _  | |  _ |  i d  j	 o t |  i d  |  _ n d  S(   Ni   (   R!   t   nbinsR   Rd   (   R
   R!   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(   z  s    		c         C   s^   |  i  d j o |  i Sn t t d t |  i  t |  i    d  } |  i d d |  S(   s!   Return the locations of the ticksgGz?i   N(   R   R   R!   Rd   R9   R)   t   float(   R
   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    /N(   R   R   R#   R   R(   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR   s  s   t   NullLocatorc           B   s   e  Z d  Z d   Z RS(   s   
    No ticks
    c         C   s   g  S(   s!   Return the locations of the ticks(    (   R
   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    (   R   R   R#   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s   t   LinearLocatorc           B   s8   e  Z d  Z d d d  Z d   Z d   Z d   Z RS(   s  
    Determine the tick locations

    The first time this function is called it will try to set the
    number of ticks to make a nice tick partitioning.  Thereafter the
    number of ticks will be fixed so that interactive navigation will
    be nice
    c         C   s0   | |  _  | d j o h  |  _ n
 | |  _ d S(   sX   
        Use presets to set locs based on lom.  A dict mapping vmin, vmax->locs
        N(   R   R   t   presets(   R
   R   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(     s    	c         C   s   |  i    |  i i   \ } } | | j  o | | } } n |  i i | | f  o |  i | | f Sn |  i d j o |  i   n |  i d j o g  Sn t i	 | | |  i  } | S(   s!   Return the locations of the ticksi    N(
   R   R	   R   R   t   has_keyR   R   t   _set_numticksR]   t   linspace(   R
   R   R   t   ticklocs(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    
c         C   s   d |  _  d  S(   Ni   (   R   (   R
   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    c         C   s   |  i    |  i i   \ } } | | j  o | | } } n | | j o | d 8} | d 7} n t t i | |  d  \ } } | d j  o | d 8} n d | } t i | |  | } t i | |  | } t i	 | |  S(   s+   Try to choose the view limits intelligentlyi   g      ?i
   (
   R   R   R   t   divmodR_   Ra   R`   Rc   R   R   (   R
   R   R   RB   t	   remaindert   scale(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    

"N(   R   R   R#   R   R(   R   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s
   
		c         C   s'   t  |  |  d j  o t Sn t Sd  S(   Ng|=(   R1   RJ   Rx   (   R   t   y(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   closeto  s    t   Basec           B   sD   e  Z d  Z d   Z d   Z d   Z d   Z d   Z d   Z RS(   sE   this solution has some hacks to deal with floating point inaccuraciesc         C   s!   | d j p t   | |  _ d  S(   Ni    (   RR   Rz   (   R
   R}   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(     s    c         C   s^   t  | |  i  \ } } t | d  o+ t | |  i d  o | d |  i Sn | |  i S(   s'   return the largest multiple of base < xi    i   (   R   Rz   R   (   R
   R   R4   t   m(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   lt  s    (c         C   sM   t  | |  i  \ } } t | |  i d  o | d |  i Sn | |  i S(   s(   return the largest multiple of base <= xi   (   R   Rz   R   (   R
   R   R4   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   le  s    c         C   sQ   t  | |  i  \ } } t | |  i d  o | d |  i Sn | d |  i S(   s(   return the smallest multiple of base > xi   i   (   R   Rz   R   (   R
   R   R4   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   gt  s    c         C   s^   t  | |  i  \ } } t | d  o' t | |  i d  o | |  i Sn | d |  i S(   s)   return the smallest multiple of base >= xi    i   (   R   Rz   R   (   R
   R   R4   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   ge  s    (c         C   s   |  i  S(   N(   Rz   (   R
   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   get_base   s    (	   R   R   R#   R(   R   R   R   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s   					t   MultipleLocatorc           B   s,   e  Z d  Z d d  Z d   Z d   Z RS(   sV   
    Set a tick on every integer that is multiple of base in the
    viewInterval
    g      ?c         C   s   t  |  |  _ d  S(   N(   R   Rz   (   R
   R}   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(   	  s    c         C   s   |  i    |  i i   \ } } | | j  o | | } } n |  i i |  } |  i i   } | | d | | } | t i | d  | } | S(   s!   Return the locations of the ticksgMbP?i   (   R   R	   R   Rz   R   R   R]   R   (   R
   R   R   R}   R   R!   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    
c         C   sx   |  i    |  i i   \ } } |  i i |  } |  i i |  } | | j o | d 8} | d 7} n t i | |  S(   sd   
        Set the view limits to the nearest multiples of base that
        contain the data
        i   (   R   R   R   Rz   R   R   R   R   (   R
   R   R   R   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    

(   R   R   R#   R(   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s   	i   id   c   
      C   s  t  | |   } t t  |   t  |   } | d j p | | d j  o d Sn d | |  } t  |  | | j  o
 d } n` | d j o* t t i |  d  d } d | } n) t t i |  d  d } d | } t t i | |  d  d } d | }	 |	 | f S(	   Ni    g-q=g      ?g        g      ?i   i
   (   g      ?g        (   R1   Rd   R   R_   Ra   (
   R   R   R   t	   thresholdt   dvt   maxabsvt   meanvRG   t   exR   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   scale_range+  s    
 
t   MaxNLocatorc           B   s>   e  Z d  Z d d e e d  Z d   Z d   Z d   Z	 RS(   s<   
    Select no more than N intervals at nice locations.
    i
   c      
   C   s   t  |  |  _ | |  _ | |  _ | d  j o+ d d d d d d d d d	 d
 g
 |  _ n> t  | d  d
 j o t |  } | i d
  n | |  _ | oI g  } |  i D]+ } t | d  d d j  o | | q q ~ |  _ n d  S(   Ni   g      ?i   g      @i   i   i   i   i   i
   igMbP?(	   R9   t   _nbinst   _trimt   _integerR   t   _stepst   listt   appendR   (   R
   R   t   stepst   trimt   integerRp   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(   D  s    		+	c         C   s%  |  i  } t | | |  \ } } |  i o t d |  } n | | 8} | | 8} | | | } | | } xf |  i D][ } | | j  o qt n | | 9} | t | |  d }	 |	 | | }
 |
 | j o Pqt qt W|  i o+ t t |
 | |  d  } | | 8} n t i	 | d  | |	 | S(   Ni   i    (
   R   R   R   Rd   R   R   R   R9   R]   R   (   R
   R   R   R   R   RG   t   raw_stept   scaled_raw_stepR   t	   best_vmint	   best_vmaxt
   extra_bins(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   bin_boundariesR  s*    	




 
	
c         C   sM   |  i    |  i i   \ } } t i | | d d \ } } |  i | |  S(   Nt   expanderg?(   R   R	   R   R   R   R   (   R
   R   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR   j  s    
c         C   s_   |  i    |  i i   \ } } t i | | d d \ } } t i |  i | |  d d g  S(   NR   g?i    i(   R   R   R   R   R   R]   t   takeR   (   R
   R   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR   p  s    
N(
   R   R   R#   R   RJ   Rx   R(   R   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR   ?  s
   		i
   c         C   s-   t  i t  i |   t  i |   } | | S(   s#   floor x to the nearest lower decade(   R_   R`   R   (   R   R}   t   lx(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt   decade_downw  s    %c         C   s-   t  i t  i |   t  i |   } | | S(   s#   ceil x to the nearest higher decade(   R_   Rc   R   (   R   R}   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyt	   decade_up}  s    %c         C   s,   t  i |   t  i |  } | t |  j S(   N(   R_   R   R9   (   R   R}   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    t
   LogLocatorc           B   sM   e  Z d  Z d d g d  Z d   Z d   Z d   Z d   Z d   Z RS(	   s3   
    Determine the tick locations for log axes
    g      $@g      ?c         C   s'   |  i  |  |  i |  d |  _ d S(   s>   
        place ticks on the location= base**i*subs[j]
        i   N(   R}   t   subsR   (   R
   R}   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(     s    c         C   s   | d |  _  d S(   sX   
        set the base of the log scaling (major tick every base**i, i interger)
        g        N(   Rz   (   R
   R}   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR}     s    c         C   s4   | d j o d |  _ n t i |  d |  _ d S(   sK   
        set the minor ticks the log scaling every base**i*subs[j]
        g        N(   R   t   _subsR]   Rm   (   R
   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    c         C   s   d |  _  d  S(   Ni   (   R   (   R
   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    c   	      C   s  |  i    |  i } |  i i   \ } } t i |  t i |  } t i |  t i |  } | | j  o | | } } n g  } t i |  t i |  } |  i d j o_ | d j o t
 i d g  } q| d j o t
 i d | d  } qt
 i d |  } n
 |  i } d } x' | | d |  i j o | d 7} q!WxH | t
 i t i |  t i |  | |  D] } | i | |  qxWt
 i |  S(   s!   Return the locations of the ticksi
   g      ?i   g       @i   N(   R   Rz   R	   R   R_   R   R`   Rc   R   R   R]   t   arrayR   R   t   extend(	   R
   RP   R   R   R   t   numdecR   t   stridet   decadeStart(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s,    
	#&	 c         C   s  |  i    |  i i   \ } } | | j  o | | } } n |  i i   } | d j o t d   n | d j o
 | } n t | |  i  p t | |  i  } n t | |  i  p t | |  i  } n | | j o( t | |  i  } t | |  i  } n t	 i
 | |  S(   s+   Try to choose the view limits intelligentlyi    s   No positive data to plot(   R   R   R   t   minposR   R   Rz   R   R   R   R   (   R
   R   R   R   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    

))(	   R   R   R#   R(   R}   R   R   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s   					 t   AutoLocatorc           B   s   e  Z d    Z RS(   c      	   C   s)   t  i |  d d d d d d d g d  S(   NR   i	   R   i   i   i   i
   (   R   R(   (   R
   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(     s    (   R   R   R(   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s   t   OldAutoLocatorc           B   s;   e  Z d  Z d   Z d   Z d   Z d   Z d   Z RS(   so   
    On autoscale this class picks the best MultipleLocator to set the
    view limits and the tick locs.

    c         C   s   t    |  _ d  S(   N(   R   t   _locator(   R
   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR(     s    c         C   s   |  i    |  i   S(   s!   Return the locations of the ticks(   R   R   (   R
   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    
c         C   s%   |  i  i   } |  i |  |  _ d S(   s1   refresh internal information based on current limN(   R	   R2   t   get_locatorR   (   R
   R4   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    c         C   s>   |  i    t |  i i    } |  i |  |  _ |  i i   S(   s+   Try to choose the view limits intelligently(   R   R1   R   R2   R   R   R   (   R
   R4   (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    
c         C   s   t  |  } | d j o t d  } n y t i |  } Wn t j
 o t d   n Xt i |  } d | } | d | j o
 | } n* | d | j o | d } n | d } t |  } | i |  i  | i	 |  i
  | S(	   s)   pick the best locator based on a distancei    g?s&   AutoLocator illegal dataInterval rangei
   i   i   g       @g      @(   R1   R   R_   Ra   t   OverflowErrorR   R`   R   R	   R   R   (   R
   R4   t   locatort   ldt   fldR}   t   ticksize(    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s    

(   R   R   R#   R(   R   R   R   R   (    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pyR     s   				(    (    (   R   R   R%   R$   R,   R.   RC   Ry   R   R   R   R   R   R   R   R   R   R   R   (.   R#   t
   __future__R    t   syst   ost   ret   timeR_   t   warningst   numpyR]   t
   matplotlibt   mplR   R   R   R   R   R   R   R$   R%   R,   R.   R0   RC   Ry   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   R   t   __all__(    (    (    s:   /Users/cmoad/workspace/matplotlib/lib/matplotlib/ticker.pys   <module>m   sR   H&M!*	E	'(8T;      