ó
±éRc           @   s�  d  Z  d d l j Z d d l j Z d d l j Z	 d d l
 j Z d d l m Z d d l m Z m Z m Z m Z m Z d d l m Z d d l m Z d d l m Z d d l Z d d l Z d d l j Z d d l m  Z  d d	 l! m" Z" m# Z# d
 e$ f d „  ƒ  YZ% d d# d „  ƒ  YZ& d e$ f d „  ƒ  YZ' d e' f d „  ƒ  YZ( d e$ f d „  ƒ  YZ) d e j* f d „  ƒ  YZ* e j+ e* ƒ Z, d e* f d „  ƒ  YZ- e j+ e- ƒ Z. e/ d k r™d d l0 j1 Z2 e2 j3 d d$ ƒ Z4 e, e4 d d d ƒ Z5 e4 j6 e5 ƒ e j7 d d e j8 d ƒ Z9 e5 j: e9 e j; e9 ƒ ƒ e5 j< d ƒ e5 j= d  j> j? e@ ƒ e5 j= d! j> j? e@ ƒ e5 j= d! jA d" ƒ e2 jB ƒ  e2 jC ƒ  n  d S(%   sà  
Axislines includes modified implementation of the Axes class. The
biggest difference is that the artists responsible to draw axis line,
ticks, ticklabel and axis labels are separated out from the mpl's Axis
class, which are much more than artists in the original
mpl. Originally, this change was motivated to support curvilinear
grid. Here are a few reasons that I came up with new axes class.


 * "top" and "bottom" x-axis (or "left" and "right" y-axis) can have
   different ticks (tick locations and labels). This is not possible
   with the current mpl, although some twin axes trick can help.

 * Curvilinear grid.

 * angled ticks.

In the new axes class, xaxis and yaxis is set to not visible by
default, and new set of artist (AxisArtist) are defined to draw axis
line, ticks, ticklabels and axis label. Axes.axis attribute serves as
a dictionary of these artists, i.e., ax.axis["left"] is a AxisArtist
instance responsible to draw left y-axis. The default Axes.axis contains
"bottom", "left", "top" and "right".

AxisArtist can be considered as a container artist and
has following children artists which will draw ticks, labels, etc.

 * line
 * major_ticks, major_ticklabels
 * minor_ticks, minor_ticklabels
 * offsetText
 * label

Note that these are separate artists from Axis class of the
original mpl, thus most of tick-related command in the original mpl
won't work, although some effort has made to work with. For example,
color and markerwidth of the ax.axis["bottom"].major_ticks will follow
those of Axes.xaxis unless explicitly specified.

In addition to AxisArtist, the Axes will have *gridlines* attribute,
which obviously draws grid lines. The gridlines needs to be separated
from the axis as some gridlines can never pass any axis.

iÿÿÿÿN(   t   Path(   t   Affine2Dt   ScaledTranslationt   IdentityTransformt   TransformedPatht   Bbox(   t   LineCollection(   t   rcParams(   t   allow_rasterization(   t   AxislineStyle(   t
   AxisArtistt   GridlinesCollectiont   AxisArtistHelperc           B   sP   e  Z d  Z d e f d „  ƒ  YZ d e f d „  ƒ  YZ d e f d „  ƒ  YZ RS(   sg  
    AxisArtistHelper should define
    following method with given APIs. Note that the first axes argument
    will be axes attribute of the caller artist.


        # LINE (spinal line?)

        def get_line(self, axes):
            # path : Path
            return path

        def get_line_transform(self, axes):
            # ...
            # trans : transform
            return trans

        # LABEL

        def get_label_pos(self, axes):
            # x, y : position
            return (x, y), trans


        def get_label_offset_transform(self,                 axes,
                pad_points, fontprops, renderer,
                bboxes,
                ):
            # va : vertical alignment
            # ha : horizontal alignment
            # a : angle
            return trans, va, ha, a

        # TICK

        def get_tick_transform(self, axes):
            return trans

        def get_tick_iterators(self, axes):
            # iter : iterable object that yields (c, angle, l) where
            # c, angle, l is position, tick angle, and label

            return iter_major, iter_minor


        t   _Basec           B   s    e  Z d  Z d „  Z d „  Z RS(   s-   
        Base class for axis helper.
        c         C   s   d \ |  _  |  _ d S(   s   
            gñhãˆµøä>N(   gñhãˆµøä>gñhãˆµøä>(   t   delta1t   delta2(   t   self(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   __init__|   s    c         C   s   d  S(   N(    (   R   t   axes(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt
   update_lim�   s    (   t   __name__t
   __module__t   __doc__R   R   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   x   s   	t   Fixedc        
   B   sq   e  Z d  Z e d d d d d d d d ƒ Z d d „ Z d „  Z d	 „  Z d
 „  Z	 d „  Z
 d „  Z d „  Z RS(   sI   
        Helper class for a fixed (in the axes coordinate) axis.
        t   lefti    t   righti   t   bottomt   topc         C   së   | |  _  | d k r( t d | ƒ ‚ n  | d
 k ra | d k rI d } qa | d k ra d } qa n  | |  _ t t j |  ƒ j ƒ  |  j | |  _	 t
 j d d g d	 d	 g g ƒ } d | } |  j	 | | d
 d
 … | f <t | ƒ |  _ d
 S(   sŽ   
            nth_coord = along which coordinate value varies
            in 2d, nth_coord = 0 ->  x axis, nth_coord = 1 -> y axis
            R   R   R   R   s   %si   i    g        g      ð?N(   s   lefts   rights   bottoms   top(   s   lefts   right(   s   bottoms   top(   t   _loct
   ValueErrort   Nonet	   nth_coordt   superR   R   R   t   _default_passthru_ptt   passthru_ptt   npt   arrayR    t   _path(   R   t   locR   t   _vertst   fixed_coord(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   �   s     			
c         C   s   |  j  S(   N(   R   (   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   get_nth_coord³   s    c         C   s   |  j  S(   N(   R%   (   R   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   get_line¸   s    c         C   s   | j  S(   N(   t	   transAxes(   R   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   get_line_transform»   s    c         C   s   | j  S(   N(   R+   (   R   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   get_axislabel_transformÀ   s    c      
   C   s>   |  j  } t d d d d d d d	 d ƒ | \ } } | | f S(   s�   
            label reference position in transAxes.

            get_label_transform() returns a transform of (transAxes+offset)
            R   g        g      à?iZ   R   g      ð?R   i    R   (   g        g      à?(   (   g        g      à?iZ   (   g      ð?g      à?(   (   g      ð?g      à?iZ   (   g      à?g        (   (   g      à?g        i    (   g      à?g      ð?(   (   g      à?g      ð?i    (   R   t   dict(   R   R   R&   t   post   angle_tangent(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   get_axislabel_pos_angleÃ   s    	c         C   s#   | j  ƒ  | j ƒ  g |  j } | S(   N(   t   get_xaxis_transformt   get_yaxis_transformR   (   R   R   t
   trans_tick(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   get_tick_transformÕ   s    	(   i    i    (   i   i    (   i    i    (   i    i   N(   R   R   R   R.   R!   R   R   R)   R*   R,   R-   R1   R5   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   …   s   	#					t   Floatingc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s,   | |  _  | |  _ t t j |  ƒ j ƒ  d  S(   N(   R   t   _valueR    R   R6   R   (   R   R   t   value(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   Ý   s    			c         C   s   |  j  S(   N(   R   (   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR)   è   s    c         C   s   t  d ƒ ‚ d  S(   Ns6   get_line method should be defined by the derived class(   t   RuntimeError(   R   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR*   ë   s    (   R   R   R   R)   R*   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR6   Ü   s   		(   R   R   R   t   objectR   R   R6   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   G   s   /Wt   AxisArtistHelperRectlinearc           B   s:   e  Z d  e j f d „  ƒ  YZ d e j f d „  ƒ  YZ RS(   R   c           B   s   e  Z d d  „ Z d „  Z RS(   c         C   s<   t  t j |  ƒ j | | ƒ | j | j g |  j |  _ d S(   sŽ   
            nth_coord = along which coordinate value varies
            in 2d, nth_coord = 0 ->  x axis, nth_coord = 1 -> y axis
            N(   R    R;   R   R   t   xaxist   yaxisR   t   axis(   R   R   R&   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   õ   s    
c            s8  ˆ j  } | d k r$ d \ ‰  ‰ n d \ ‰  ‰ ˆ j j } | j ƒ  } | j j | ƒ g  t | ƒ D] \ } } | j | | ƒ ^ qe } ˆ j j } | j ƒ  }	 | j j |	 ƒ g  t |	 ƒ D] \ } } | j | | ƒ ^ q¾ }
 ˆ j | ƒ } | | j	 j
 ƒ  ‰ ‡  ‡ ‡ ‡ f d †  } | | | ƒ | |	 |
 ƒ f S(	   s    tick_loc, tick_angle, tick_labelR   R   iZ   i    c         3   s”   x� t  |  | ƒ D]| \ } } t ˆ j ƒ } | | ˆ j <ˆ j | ƒ } d ˆ j | ˆ j k os d ˆ j k n r | ˆ  ˆ | f Vq q Wd  S(   Ng        g      ð?(   t   zipt   listR"   R   t   transform_pointR   R   (   t   locst   labelst   xt   lt   ct   c2(   t   angle_normalR0   R   t   tr2ax(    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   _f  s    1(   s   bottoms   top(   iZ   i    (   i    iZ   (   R   R>   t   majort   locatort	   formattert   set_locst	   enumeratet   minorR5   R+   t   inverted(   R   R   R&   RK   t	   majorLocst   it   valt   majorLabelsRP   t	   minorLocst   minorLabelsR4   RJ   (    (   RH   R0   R   RI   s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   get_tick_iterators  s     	11N(   R   R   R   R   RX   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   ó   s   R6   c           B   sJ   e  Z d  d „ Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   R   c         C   sE   t  t j |  ƒ j | | ƒ | |  _ | j | j g |  j |  _ d  S(   N(	   R    R;   R6   R   t   _axis_directionR<   R=   R   R>   (   R   R   R   t   passingthrough_pointt   axis_direction(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   /  s    
	c         C   sƒ   t  j d d g d d g g ƒ } d |  j } | j | j j ƒ  } | j |  j |  j g ƒ } | | | d  d  … | f <t | ƒ S(   Ng        g      ð?i   (	   R#   R$   R   t	   transDataR+   RQ   RA   R7   R    (   R   R   R'   R(   t   trans_passingthrough_pointt   p(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR*   9  s    c         C   s   | j  S(   N(   R+   (   R   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR,   E  s    c         C   s   | j  S(   N(   R+   (   R   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR-   H  s    c         C   s±   |  j  } |  j d k r! d } n d } d d g } d |  j } | j | j j ƒ  } | j |  j |  j g ƒ } | | | | <d | | k oš d k n s£ d S| | f Sd S(	   s�   
            label reference position in transAxes.

            get_label_transform() returns a transform of (transAxes+offset)
            i    iZ   g      à?i   g        g      ð?N(   NN(   RY   R   R\   R+   RQ   RA   R7   R   (   R   R   R&   t   angleR'   R(   R]   R^   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR1   K  s    		 c         C   s   | j  S(   N(   R\   (   R   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR5   j  s    c            sV  ˆ j  } | d k r$ d \ ‰  ‰ n d \ ‰  ‰ ˆ j d k rN d	 \ ‰  ‰ n d
 \ ‰  ‰ ˆ j j } | j ƒ  } | j j | ƒ g  t | ƒ D] \ } } | j | | ƒ ^ q� } ˆ j j } | j ƒ  }	 | j j |	 ƒ g  t |	 ƒ D] \ } } | j | | ƒ ^ qè }
 | j	 | j
 j ƒ  ‰ ‡  ‡ ‡ ‡ f d †  } | | | ƒ | |	 |
 ƒ f S(   s    tick_loc, tick_angle, tick_labelR   R   iZ   i    c         3   sÞ   x× t  |  | ƒ D]Æ \ } } ˆ j ˆ j g } | | ˆ j <ˆ j | ƒ \ } } d | k og d k n r d | k oƒ d k n r d ˆ j | | g ˆ j k oº d ˆ j k n rÖ | ˆ  ˆ | f VqÖ q q Wd  S(   Ng        g      ð?(   R?   R7   R   RA   R   R   (   RB   RC   RD   RE   RF   t   c1RG   (   RH   R0   R   RI   (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyRJ   ‹  s    87(   s   bottoms   top(   iZ   i    (   i    iZ   (   iZ   i    (   i    iZ   (   RY   R   R>   RK   RL   RM   RN   RO   RP   R\   R+   RQ   (   R   R   R&   RK   RR   RS   RT   RU   RP   RV   RW   RJ   (    (   RH   R0   R   RI   s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyRX   n  s$    	11
(	   R   R   R   R*   R,   R-   R1   R5   RX   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR6   .  s   						(   R   R   R   R   R6   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR;   ñ   s   ;t   GridHelperBasec           B   sG   e  Z d  „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   c         C   s)   t  |  _ d  |  _ t t |  ƒ j ƒ  d  S(   N(   t   Truet   _force_updateR   t   _old_limitsR    Ra   R   (   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   �  s    		c         C   sƒ   | j  ƒ  \ } } | j ƒ  \ } } |  j sH |  j | | | | f k r |  j | | | | ƒ t |  _ | | | | f |  _ n  d  S(   N(   t   get_xlimt   get_ylimRc   Rd   t   _updatet   False(   R   R   t   x1t   x2t   y1t   y2(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   £  s    $	c         C   s   d  S(   N(    (   R   Ri   Rj   Rk   Rl   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyRg   ­  s    c         C   s   t  |  _ d  S(   N(   Rb   Rc   (   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt
   invalidate±  s    c         C   s   |  j  S(   N(   Rc   (   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   valid´  s    c         C   s   g  S(   sš   
        Return list of grid lines as a list of paths (list of points).

        *which* : "major" or "minor"
        *axis* : "both", "x" or "y"
        (    (   R   t   whichR>   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   get_gridlines¸  s    c         C   sa   t  d d | j d t d d t d d t d ƒ} | j | ƒ | j |  ƒ | j j | ƒ | S(	   s‘   
        Create and return a new GridlineCollection instance.

        *which* : "major" or "minor"
        *axis* : "both", "x" or "y"

        t	   transformt   colorss
   grid.colort
   linestyless   grid.linestylet
   linewidthss   grid.linewidthN(   R   R   R\   R   t   _set_artist_propst   set_grid_helperR   (   R   t   axt	   gridlines(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   new_gridlinesÁ  s    

(	   R   R   R   R   Rg   Rm   Rn   Rp   Ry   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyRa   ›  s   		
					t   GridHelperRectlinearc           B   sD   e  Z d  „  Z d d d d d „ Z d d d „ Z d d d „ Z RS(   c         C   s    t  t |  ƒ j ƒ  | |  _ d  S(   N(   R    Rz   R   R   (   R   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   Û  s    c         C   sn   | d  k r% t j d ƒ |  j } n  t j | | | ƒ } | d  k rO | } n  t | | d | d | ƒ} | S(   Ns6   'new_fixed_axis' explicitly requires the axes keyword.t   offsetR[   (   R   t   warningst   warnR   R;   R   R
   (   R   R&   R   R[   R{   R   t   _helpert   axisline(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   new_fixed_axisâ  s    		R   c   	      C   s‹   | d  k r% t j d ƒ |  j } n  | | f } | j } t j | | | | ƒ } t | | ƒ } | j j	 t
 ƒ | j j | j j ƒ | S(   Ns9   'new_floating_axis' explicitly requires the axes keyword.(   R   R|   R}   R   R\   R;   R6   R
   t   linet   set_clip_onRb   t   set_clip_boxt   bbox(	   R   R   R8   R[   R   t   passthrough_pointRq   R~   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   new_floating_axisø  s    	RK   t   bothc         C   sp  g  } | d k r¶ g  } |  j  j ƒ  \ } } | d k rX | j |  j  j j j ƒ  ƒ n  | d k rƒ | j |  j  j j j ƒ  ƒ n  x0 | D]% } | j | | g | | g g ƒ qŠ Wn  | d	 k rl|  j  j ƒ  \ } }	 g  } |  j  j	 j
 r| j |  j  j	 j j ƒ  ƒ n  |  j  j	 j r9| j |  j  j	 j j ƒ  ƒ n  x0 | D]% }
 | j | |	 g |
 |
 g g ƒ q@Wn  | S(
   s”   
        return list of gridline coordinates in data coordinates.

        *which* : "major" or "minor"
        *axis* : "both", "x" or "y"
        R‡   RD   RK   RP   t   y(   R‡   RD   (   R‡   s   major(   R‡   s   minor(   R‡   Rˆ   (   R   Rf   t   extendR<   RK   RL   RP   t   appendRe   R=   t   _gridOnMajort   _gridOnMinor(   R   Ro   R>   Rx   RB   Rk   Rl   RD   Ri   Rj   Rˆ   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyRp     s(    &&N(   R   R   R   R   R€   R†   Rp   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyRz   Ø  s   	t   SimpleChainedObjectsc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s   | |  _  d  S(   N(   t   _objects(   R   t   objects(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   <  s    c         C   s/   t  g  |  j D] } t | | ƒ ^ q ƒ } | S(   N(   R�   RŽ   t   getattr(   R   t   kt   at   _a(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   __getattr__?  s    +c         O   s%   x |  j  D] } | | | Ž  q
 Wd  S(   N(   RŽ   (   R   t   klt   kwargst   m(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   __call__C  s    (   R   R   R   R”   R˜   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR�   ;  s   		t   Axesc           B   sÛ   e  Z d  e f d „  ƒ  YZ d „  Z d d „ Z d „  Z d d „ Z d „  Z	 e
 e	 ƒ Z d d „ Z d d „ Z d	 „  Z d
 „  Z d d d d „ Z d „  Z d „  Z d d „ Z d d „ Z e d „ Z e d „ Z RS(   t   AxisDictc           B   s#   e  Z d  „  Z d „  Z d „  Z RS(   c         C   s#   | |  _  t t j |  ƒ j ƒ  d  S(   N(   R   R    R™   Rš   R   (   R   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   K  s    	c         C   s³   t  | t ƒ r> t g  | D] } t j |  | ƒ ^ q ƒ } | St  | t ƒ rŸ | j d  k r� | j d  k r� | j	 d  k r� t |  j
 ƒ  ƒ } | St d ƒ ‚ n t j |  | ƒ Sd  S(   Ns   Unsupported slice(   t
   isinstancet   tupleR�   R.   t   __getitem__t   slicet   startR   t   stopt   stept   valuesR   (   R   R‘   t   k1t   r(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR�   O  s    +-c         O   s   t  j j |  j | | Ž S(   N(   t   maxesR™   R>   R   (   R   t   vR–   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR˜   \  s    (   R   R   R   R�   R˜   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyRš   J  s   		c         O   sf   | j  d d  ƒ } t |  _ | r- | |  _ n t |  ƒ |  _ t t |  ƒ j | | Ž  |  j	 t ƒ d  S(   Nt   grid_helper(
   t   popR   Rb   t   _axisline_ont   _grid_helperRz   R    R™   R   t   toggle_axisline(   R   R•   t   kwt   helper(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   `  s    	c         C   sÆ   | d  k r |  j } n  | rr t |  _ x$ |  j j ƒ  D] } | j t ƒ q8 W|  j j t ƒ |  j j t ƒ nP t |  _ x$ |  j j ƒ  D] } | j t ƒ q‹ W|  j j t ƒ |  j j t ƒ d  S(   N(	   R   R©   Rb   t   spinesR¢   t   set_visibleRh   R<   R=   (   R   t   bt   s(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR«   q  s    		c         C   s   t  t |  ƒ j ƒ  d  S(   N(   R    R™   t
   _init_axis(   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR²   ‚  s    c         C   sÎ   | d  k r |  } n  |  j |  ƒ |  _ |  j ƒ  j } x< d d d d g D]( } | d | d | d | ƒ |  j | <qI WxR |  j d |  j d g D]6 } | j j t ƒ | j j t ƒ | j	 j t ƒ q� Wd  S(   NR   R   R   R   R&   R   R[   (
   R   Rš   t
   _axislinest   get_grid_helperR€   t   labelR¯   Rh   t   major_ticklabelst   minor_ticklabels(   R   R   R€   R&   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   _init_axis_artists†  s    	!c         C   s   |  j  S(   N(   R³   (   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   _get_axislines•  s    c         C   s.   | d k r |  j ƒ  } n  | j |  ƒ } | S(   s‘   
        Create and return a new GridlineCollection instance.

        *which* : "major" or "minor"
        *axis* : "both", "x" or "y"

        N(   R   R´   Ry   (   R   R§   Rx   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyRy   š  s    c         C   s   |  j  | ƒ } | |  _ d  S(   N(   Ry   Rx   (   R   R§   Rx   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   _init_gridlinesª  s    c         C   sA   |  j  ƒ  t t |  ƒ j ƒ  |  j j |  j j ƒ |  j ƒ  d  S(   N(	   Rº   R    R™   t   claRx   t   set_clip_pathR   t   patchR¸   (   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR»   °  s    
c         C   s   |  j  S(   N(   Rª   (   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR´   ¼  s    RK   R‡   c         K   sâ   t  t |  ƒ j | d | d | | �|  j s2 d S| d k rŒ |  j j j sz |  j j j sz |  j j	 j sz |  j j	 j rƒ t
 } qŒ t } n  |  j j | ƒ |  j j | ƒ |  j j | ƒ t | ƒ rÞ t j |  j | � n  d S(   sW   
        Toggle the gridlines, and optionally set the properties of the lines.
        Ro   R>   N(   R    R™   t   gridR©   R   R   R<   RŒ   R‹   R=   Rb   Rh   Rx   t	   set_whicht   set_axisR¯   t   lent   martistt   setp(   R   R°   Ro   R>   R–   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR¾   À  s    %			c         C   sK   |  j  r% |  j j ƒ  |  j g } n g  } | j t t |  ƒ j ƒ  ƒ | S(   N(   R©   R³   R¢   Rx   R‰   R    R™   t   get_children(   R   t   children(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyRÄ   Û  s
    	c         C   s   |  j  j ƒ  d  S(   N(   Rª   Rm   (   R   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   invalidate_grid_helperã  s    c      
   C   s7   |  j  ƒ  } | j | d d  d d  d | d |  ƒ} | S(   NR   R[   R{   R   (   R´   R€   R   (   R   R&   R{   t   ghR>   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR€   ç  s    	R   c         C   s.   |  j  ƒ  } | j | | d | d |  ƒ} | S(   NR[   R   (   R´   R†   (   R   R   R8   R[   RÇ   R>   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR†   ò  s
    	c         C   s~   |  j  s& t t |  ƒ j | | ƒ d  S|  j } |  j t |  j j ƒ  ƒ |  j g |  _ t t |  ƒ j | | ƒ | |  _ d  S(   N(	   R©   R    R™   t   drawt   artistsR@   R³   R¢   Rx   (   R   t   renderert   inframet   orig_artists(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyRÈ   ý  s    		)c         C   s½   t  t |  ƒ j | | ƒ } |  j s( | S| g } x? |  j j ƒ  D]. } | j ƒ  sY qA n  | j | j | ƒ ƒ qA Wt j	 g  | D]0 } | r€ | j
 d k sª | j d k r€ | ^ q€ ƒ } | S(   Ni    (   R    R™   t   get_tightbboxR©   R³   R¢   t   get_visibleRŠ   R   t   uniont   widtht   height(   R   RÊ   t   call_axes_locatort   bb0t   bbR   R°   t   _bbox(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyRÍ     s    		FN(   R   R   R.   Rš   R   R   R«   R²   R¸   R¹   t   propertyR>   Ry   Rº   R»   R´   R¾   RÄ   RÆ   R€   R†   Rh   RÈ   Rb   RÍ   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR™   H  s$   							
t   AxesZeroc           B   s   e  Z d  „  Z d „  Z RS(   c         O   s   t  t |  ƒ j | | Ž  d  S(   N(   R    R×   R   (   R   R•   R¬   (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR   2  s    c      	   C   s¿   t  t |  ƒ j ƒ  |  j j } | d d d d d d d |  ƒ } | j j |  j ƒ | j t	 ƒ | |  j
 d <| d d	 d d d d
 d |  ƒ } | j j |  j ƒ | j t	 ƒ | |  j
 d <d  S(   NR   i    R8   g        R[   R   R   t   xzeroi   R   t   yzero(   R    R×   R¸   Rª   R†   R�   R¼   R½   R¯   Rh   R³   (   R   R†   t
   xaxis_zerot
   yaxis_zero(    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR¸   7  s     		(   R   R   R   R¸   (    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyR×   1  s   	t   __main__i   i   i   i    i   g{®Gáz„?t   TestR   R   t   Tk0(    (   i   i   (D   R   t   matplotlib.axesR   R¥   t   matplotlib.artistt   artistRÂ   t   matplotlib.textt   textt   mtextt   matplotlib.font_managert   font_managert   matplotlib.pathR    t   matplotlib.transformsR   R   R   R   R   t   matplotlib.collectionsR   t
   matplotlibR   R   R|   t   numpyR#   t   matplotlib.linest   linest   mlinest   axisline_styleR	   t   axis_artistR
   R   R:   R   R;   Ra   Rz   R�   R™   t   subplot_class_factoryt   SubplotR×   t   SubplotZeroR   t   matplotlib.pyplott   pyplott   pltt   figuret   figRw   t   add_subplott   aranget   pit   xxt   plott   sint
   set_ylabelR>   t   major_tickst   set_tick_outRb   t	   set_labelRÈ   t   show(    (    (    s[   /opt/xtal/ccp4-6.5-linux32/lib/python2.7/site-packages/mpl_toolkits/axisartist/axislines.pyt   <module>,   sH   (ªª=cç
