U
    Âmœdâ%  ã                   @   sÄ  d dl Z d dlZd dlZd dlmZmZ d dlmZ	 d dl
mZmZ dd„ Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zedgƒdd„ ƒZej dddg¡ej dddg¡ej dddg¡ej dddg¡dd„ ƒƒƒƒZej dddg¡ej dddg¡dd „ ƒƒZd!d"„ Zd#d$„ Zej d%dd&d'd(gg¡ej d)dd&d(gg¡ed*gd+�d,d-„ ƒƒƒZej d%dd&d'd(gg¡ej d)dd&d(gg¡ed*gd+�d.d/„ ƒƒƒZej d0d1d2g¡d3d4„ ƒZd5d6„ ZdS )7é    N)ÚAxesÚSubplotBase)Úcheck_figures_equalÚimage_comparisonc           
   	   C   s”   t  t| ƒt| ƒttd||gƒƒ¡D ]j\\}}\}}\}\}}	||krHq$| d j|  ||¡|	||f ks$td|||	||f r‚dnd|f ƒ‚q$dS )z–
    x_shared and y_shared are n x n boolean matrices; entry (i, j) indicates
    whether the x (or y) axes of subplots i and j should be shared.
    Zxyr   z,axes %i and %i incorrectly %ssharing %s axisznot Ú N)Ú	itertoolsÚproductÚ	enumerateÚzipZ_shared_axesZjoinedÚAssertionError)
ÚaxsZx_sharedZy_sharedÚi1Zax1Úi2Zax2Zi3ÚnameZshared© r   úW/home/sam/Atlas/atlas_env/lib/python3.8/site-packages/matplotlib/tests/test_subplots.pyÚcheck_shared   s    ý$   ÿÿr   c                 C   s¼   t t| ||ƒƒD ]¦\}\}}}| ¡ |jjg D ]$}| ¡ |ks0td|› d|› �ƒ‚q0| ¡ |jjg D ]$}| ¡ |kshtd|› d|› �ƒ‚qh|s¢| 	¡ dks¢t‚|s| 
¡ dkst‚qd S )NzVisibility of x axis #z is incorrectly zVisibility of y axis #r   )r	   r
   Zget_xticklabelsÚxaxisZ
offsetTextZget_visibler   Zget_yticklabelsÚyaxisÚ
get_xlabelÚ
get_ylabel)r   Z	x_visibleZ	y_visibleÚiÚaxZvxZvyÚlr   r   r   Úcheck_visible   s    ÿÿr   c                  C   sn  d} t j| d d… td�t j| d d… td�t  ddddgddddgddddgddddgg¡t  ddddgddddgddddgddddgg¡dœ}ddddgddddgdgd dgd dgd ddddgdœddddgdgd ddddgdgd dgd ddddgdœd	œ}|d
 |d< |d |d< t dd¡\}\\}}\}}||||g}t||d
 |d
 ƒ t |¡ dddd
ddddg}	|	D ]z}
|	D ]n}tjdd|
|d�\}\\}}\}}||||g}t|||
 || ƒ t	||d |
 |d | ƒ t |¡ �qŠ�q‚tjddddd�\}\\}}\}}||||g}|D ]}|j
ddd� | ¡  �q0t	|ddddgddddgƒ d S )N)é   r   é   r   )ZdtypeFT)ÚallÚnoneÚrowÚcolr   )r   r    r   r   FT)ÚxÚyr   r   r   r    r   é   ©ÚsharexÚshareyr!   r"   ÚfooÚbar©ZxlabelZylabel)ÚnpZonesÚboolZzerosÚarrayÚpltÚsubplotsr   Úcloser   ÚsetÚlabel_outer)ZrdimÚshareÚvisibleÚfÚa1Úa2Úa3Úa4r   ZopsZxoZyor   r   r   r   Útest_shared+   sf    



ü



üø


ú	


ú÷
""r9   c                  C   s’   t  ¡ } |  dd¡}|  |ddd…f ¡}|  |dd…df ¡}|  |d ¡}|  |d ¡}| jD ]}| ¡  qbt| jddddgddddgƒ d S )	Né   r   r   r#   )r#   r   )r   r#   FT)r-   ÚfigureZadd_gridspecÚadd_subplotÚaxesr1   r   )ÚfigÚgsr5   r6   r7   r8   r   r   r   r   Útest_label_outer_spani   s    

 
 
ÿr@   c                  C   s0   t  ddddg¡} |  ¡  t| gdgdgƒ d S )Nr   r#   T)r-   r=   r1   r   )r   r   r   r   Útest_label_outer_non_gridspec}   s    rA   c                  C   s�   t jdddd�\} \}}t|gdgdgƒ |j ¡  t|gdgdgƒ t jdddd�\} \}}t|gdgdgƒ |j ¡  t|gdgdgƒ d S )Nr#   r   T©r&   F©r%   )r-   r.   r   r   Z	tick_leftr   Ztick_bottom)r4   r5   r6   r   r   r   Útest_shared_and_movedƒ   s    

rD   c                	   C   sP   t  t¡� tjdddd� W 5 Q R X t  t¡� tjdddd� W 5 Q R X d S )Nr   ZblahrC   rB   )ÚpytestÚraisesÚ
ValueErrorr-   r.   r   r   r   r   Útest_exceptions‘   s    rH   Zsubplots_offset_textc                  C   sz   t  ddd¡} t  ddd¡d }tjdddd	d
�\}}|d  | | ¡ |d  | | ¡ |d  || ¡ |d  || ¡ d S )Nr   g    _ Bg    eÍÍAéd   é
   g     ˆÃ@r   r    r   r$   )r   r   )r#   r   )r   r#   )r#   r#   )r*   Zaranger-   r.   Zplot)r!   r"   r>   r   r   r   r   Útest_subplots_offsettext™   s    rK   ÚtopTFÚbottomÚleftÚrightc              	   C   sÒ   t  | |||dœ¡� t  ¡ jddddd�}W 5 Q R X t |¡D ]Œ\\}}}|jjd }|jjd }	|jjd }
|jjd }|| oˆ|dkks�t	‚|	|oœ|dkks¤t	‚|
|o°|dkks¸t	‚||oÄ|dkks@t	‚q@d S )	N)zxtick.labeltopzxtick.labelbottomzytick.labelleftzytick.labelrightr:   Tr$   Zlabel2OnZlabel1Onr   r   )
r-   Z
rc_contextr;   r.   r*   Úndenumerater   Z_major_tick_kwr   r   )rL   rM   rN   rO   r   r   Újr   ZxtopZxbottomZyleftZyrightr   r   r   Útest_subplots_hide_ticklabels¤   s     ÿ
 rR   Úxlabel_positionÚylabel_positionc                 C   sÀ   t  ¡ jddddd�}t |¡D ]š\\}}}|jddd� |j | ¡ |j |¡ | 	¡  t
| ¡ ƒ| dkrt|dkp‚| d	ko‚|d
kksŠt‚t
| ¡ ƒ|dkr¤|d
kp²|dko²|dkks t‚q d S )Nr:   Tr$   r'   r(   r)   rM   r   rL   r   rN   rO   )r-   r;   r.   r*   rP   r0   r   Zset_label_positionr   r1   r+   r   r   r   )rS   rT   r   r   rQ   r   r   r   r   Útest_subplots_hide_axislabelsº   s    
þ
þrU   c                  C   s(   t  ¡ \} }| ¡  ¡ | ¡ ks$t‚d S )N)r-   r.   Zget_subplotspecZget_gridspecr   )r>   r   r   r   r   Útest_get_gridspecË   s    rV   c                  C   sR   ddi} dddgi}t jdd| |d�\}}| ddiks:t‚|dddgiksNt‚d S )Nr%   r   Úwidth_ratiosr#   r   )Ú
subplot_kwÚgridspec_kw)r-   r.   r   )rX   rY   r>   r   r   r   r   Útest_dont_mutate_kwargsÑ   s    
ÿ
rZ   rW   r#   r:   r   Úheight_ratiosZpng)Ú
extensionsc                 C   s,   | j dd||d� |j dd||dœd� d S )Nr   r:   ©r[   rW   ©rY   )r.   )Úfig_testÚfig_refr[   rW   r   r   r   Útest_width_and_height_ratiosÚ   s    
ÿþra   c                 C   s<   dddgdddgg}| j |||d� |j |||dœd� d S )NÚAÚBÚCÚDr]   r^   )Úsubplot_mosaic)r_   r`   r[   rW   Zmosaic_specr   r   r   Ú#test_width_and_height_ratios_mosaicæ   s    ÿþrg   zmethod,args)r.   )r   r:   )rf   )zabc;defc              	   C   s€   t jtdd��( tt| ƒ|ddgdddgidœŽ W 5 Q R X t jtdd��, tt| ƒ|dddgddddgidœŽ W 5 Q R X d S )	Nr[   )Úmatchr#   r   )r[   rY   rW   r:   )rW   rY   )rE   rF   rG   Úgetattrr-   )ÚmethodÚargsr   r   r   Útest_ratio_overlapping_kwsó   s    
ÿÿrl   c               	   C   sp   t  ¡ } t|  ¡ tƒst‚t| jddddgd�tƒr8t‚t t	¡�$ t
| ddddgddddgd� W 5 Q R X d S )Nr   r#   )Úrect)r-   r;   Ú
isinstancer<   r   r   Zadd_axesrE   rF   Ú	TypeErrorr   )r>   r   r   r   Útest_old_subplot_compat  s
    rp   )r   Únumpyr*   rE   Zmatplotlib.axesr   r   Zmatplotlib.pyplotZpyplotr-   Zmatplotlib.testing.decoratorsr   r   r   r   r9   r@   rA   rD   rH   rK   ÚmarkZparametrizerR   rU   rV   rZ   ra   rg   rl   rp   r   r   r   r   Ú<module>   sL   >

	
	

þ
	