U
    \	a                     @   s\   d dl mZ d dlmZ d dlmZmZ G dd dZG dd dej	Z	G dd	 d	eZ
dS )
    N)Artist)XAxisYAxisc                   @   s$   e Zd Zdd Zdd Zdd ZdS )SimpleChainedObjectsc                 C   s
   || _ d S N_objects)selfZobjects r
   D/tmp/pip-unpacked-wheel-wjyw_3jo/mpl_toolkits/axes_grid1/mpl_axes.py__init__   s    zSimpleChainedObjects.__init__c                    s   t  fdd| jD }|S )Nc                    s   g | ]}t | qS r
   getattr).0akr
   r   
<listcomp>   s     z4SimpleChainedObjects.__getattr__.<locals>.<listcomp>)r   r   )r	   r   Z_ar
   r   r   __getattr__
   s    z SimpleChainedObjects.__getattr__c                 O   s   | j D ]}||| qd S r   r   )r	   argskwargsmr
   r
   r   __call__   s    
zSimpleChainedObjects.__call__N)__name__
__module____qualname__r   r   r   r
   r
   r
   r   r      s   r   c                       sB   e Zd ZG dd deZd
ddZedd Z fdd	Z  Z	S )Axesc                       s0   e Zd Z fddZ fddZdd Z  ZS )zAxes.AxisDictc                    s   || _ t   d S r   )axessuperr   r	   r   	__class__r
   r   r      s    zAxes.AxisDict.__init__c                    sx   t |tr&t fdd|D }|S t |trh|jd kr^|jd kr^|jd kr^tt  S t	dnt
 |S d S )Nc                    s   g | ]}t tj|qS r
   )r   r   AxisDict__getitem__)r   Zk1)r!   r	   r
   r   r      s     z-Axes.AxisDict.__getitem__.<locals>.<listcomp>zUnsupported slice)
isinstancetupler   slicestartstopsteplistvalues
ValueErrordictr#   )r	   r   rr    r	   r   r#      s    


zAxes.AxisDict.__getitem__c                 O   s   t jj| jf||S r   )maxesr   axisr   )r	   vr   r
   r
   r   r   (   s    zAxes.AxisDict.__call__)r   r   r   r   r#   r   __classcell__r
   r
   r    r   r"      s   r"   Nc              	   C   sp   |d kr| }|  | | _| jjt| jd| jd t| jd| jd t| jd| jd t| jd| jd d d S )N   bottom   topleftright)r5   r7   r8   r9   )r"   
_axislinesupdateSimpleAxisArtistZxaxisZspinesZyaxisr   r
   r
   r   _init_axis_artists+   s    zAxes._init_axis_artistsc                 C   s   | j S r   )r:   r/   r
   r
   r   r1   5   s    z	Axes.axisc                    s   t    |   d S r   )r   clar=   r/   r    r
   r   r>   9   s    
zAxes.cla)N)
r   r   r   r-   r"   r=   propertyr1   r>   r3   r
   r
   r    r   r      s
   


r   c                       s^   e Zd Z fddZedd Zedd Zedd Z fd	d
Zdd Z	dddZ
  ZS )r<   c                    sj   || _ || _|| _t|tr0ddg|d  | _n,t|trNddg|d  | _ntd| t 	  d S )Nr5   r7   r4   r8   r9   z1axis must be instance of XAxis or YAxis, but got )
_axis_axisnumliner$   r   _axis_directionr   r,   r   r   )r	   r1   ZaxisnumZspiner    r
   r   r   ?   s    

zSimpleAxisArtist.__init__c                    s&   d| j   t fdd| j D S )Nz
tick%dlinec                    s   g | ]}t | qS r
   r   r   ZtickZtickliner
   r   r   P   s   z0SimpleAxisArtist.major_ticks.<locals>.<listcomp>rA   r   r@   Zget_major_ticksr/   r
   rE   r   major_ticksM   s    
zSimpleAxisArtist.major_ticksc                    s&   d| j   t fdd| j D S )Nzlabel%dc                    s   g | ]}t | qS r
   r   rD   labelr
   r   r   V   s   z5SimpleAxisArtist.major_ticklabels.<locals>.<listcomp>rF   r/   r
   rH   r   major_ticklabelsS   s    
z!SimpleAxisArtist.major_ticklabelsc                 C   s   | j jS r   )r@   rI   r/   r
   r
   r   rI   Y   s    zSimpleAxisArtist.labelc                    s4   | j |d | j| | jd t | d S )N)allT)togglerB   set_visibler@   r   )r	   br    r
   r   rM   ]   s    zSimpleAxisArtist.set_visiblec                 C   s   | j | d S r   )r@   Zset_label_text)r	   txtr
   r
   r   	set_labelc   s    zSimpleAxisArtist.set_labelNc                 C   s   |rd\}}}n|d k	r$d\}}}n
d\}}}|d k	r:|}|d k	rF|}|d k	rR|}d| j  }d| j  }	|d k	r||i}
| jjf |
 |d k	r|	|i}
| jjf |
 |d k	r| j }|| jkr|s| jjd n |r| jjd | j| j d S )N)TTT)FFF)NNNztick%dOnz	label%dOnFT)rA   r@   Zset_tick_paramsZget_label_positionrC   rI   rM   Zset_label_position)r	   rK   ZticksZ
ticklabelsrI   Z_ticksZ_ticklabelsZ_labelZtickOnZlabelOnZ	tickparamposr
   r
   r   rL   f   s4    



zSimpleAxisArtist.toggle)NNNN)r   r   r   r   r?   rG   rJ   rI   rM   rP   rL   r3   r
   r
   r    r   r<   >   s   


r<   )Zmatplotlib.axesr   r0   Zmatplotlib.artistr   Zmatplotlib.axisr   r   r   r   r<   r
   r
   r
   r   <module>   s
   +