o
    ¡:´a<  ã                   @   s  d dl Z d dlZd dlZd dlmZ d dlmZ d dl	m
Z dd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Zedgdd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d#d$„ ZdS )%é    N)Úimage_comparisonc           
   	   C   s”   t  t| ƒt| ƒttd||gƒƒ¡D ]5\\}}\}}\}\}}	||kr$q| d j|  ||¡|	||f ksGJ d|||	||f rAd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)
ÚaxsZx_sharedZy_sharedZi1Zax1Zi2Zax2Zi3ÚnameZshared© r
   ú@/usr/lib/python3/dist-packages/matplotlib/tests/test_subplots.pyÚcheck_shared   s   ý$ÿÿúr   c                 C   s¼   t t| ||ƒƒD ]S\}\}}}| ¡ |jjg D ]}| ¡ |ks*J d|› d|› ƒ‚q| ¡ |jjg D ]}| ¡ |ksFJ d|› d|› ƒ‚q4|sQ| ¡ dksQJ ‚|s[| 	¡ dks[J ‚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_visibleZ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   s  d} t j| d d… tdt j| d d… tdt  g d¢g d¢g d¢g d¢g¡t  g d¢g d¢g d¢g d¢g¡dœ}g d	¢g d	¢d
gd d
gd d
gd g d	¢dœg d¢d
gd g d¢d
gd d
gd g d¢dœdœ}|d |d< |d |d
< t dd¡\}\\}}\}}||||g}t||d |d ƒ t |¡ g d¢}	|	D ];}
|	D ]6}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 | ¡  qôt	|g d	¢g d¢ƒ d S )N)é   r   é   r   )Zdtype)FTFF)TFFF)FFFT)FFTF)ÚallÚnoneÚrowÚcol)FFTTTr   )r   r   r   r   FT)TFTF)ÚxÚyr   Fr   )FTr   r   r   r   ©ÚsharexÚshareyr   r   ÚfooÚbar©ZxlabelZylabel)ÚnpZonesÚboolZzerosZarrayÚpltÚsubplotsr   Úcloser   ÚsetÚlabel_outer)ZrdimZshareZvisibleÚfÚa1Úa2Úa3Úa4r   ÚopsZxoZyor   r
   r
   r   Útest_shared+   sh   üüøú	ú÷
"û"
r0   c                  C   sŠ   t  ¡ } |  dd¡}|  |ddd…f ¡}|  |dd…df ¡}|  |d ¡}|  |d ¡}| jD ]}| ¡  q1t| jg d¢g d¢ƒ d S )	Né   r   r   é   )r2   r   )r   r2   )FTFT)TTFF)r%   ÚfigureZadd_gridspecZadd_subplotÚaxesr)   r   )ÚfigZgsr+   r,   r-   r.   r   r
   r
   r   Útest_label_outer_spani   s   

ÿr6   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 )Nr2   r   T©r   F©r   )r%   r&   r   r   Z	tick_leftr   Ztick_bottom)r*   r+   r,   r
   r
   r   Útest_shared_and_moved}   s   

r9   c                   C   sz   t  t¡ tjdddd W d   ƒ n1 sw   Y  t  t¡ tjdddd W d   ƒ d S 1 s6w   Y  d S )Nr   Zblahr8   r7   )ÚpytestZraisesÚ
ValueErrorr%   r&   r
   r
   r
   r   Útest_exceptions‹   s   ÿ"ÿr<   Zsubplots_offset_textF)Zremove_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   )r2   r   )r   r2   )r2   r2   )r#   Zaranger%   r&   Zplot)r   r   r5   r   r
   r
   r   Útest_subplots_offsettext“   s   r?   ÚtopTÚbottomÚleftÚrightc                 C   sæ   t  | |||dœ¡ t  ¡ jddddd}W d   ƒ n1 s w   Y  t |¡D ]F\\}}}|jjd }|jjd }	|jjd }
|jjd }|| oN|dkksRJ ‚|	|oX|dkks\J ‚|
|ob|dkksfJ ‚||ol|dkkspJ ‚q*d S )	N)zxtick.labeltopzxtick.labelbottomzytick.labelleftzytick.labelrightr1   Tr   Zlabel2OnZlabel1Onr   r   )	r%   Z
rc_contextr3   r&   r#   Úndenumerater   Z_major_tick_kwr   )r@   rA   rB   rC   r   r   Újr   ZxtopZxbottomZyleftZyrightr
   r
   r   Útest_subplots_hide_ticklabelsž   s   
ÿþørF   Úxlabel_positionÚylabel_positionc                 C   sÀ   t  ¡ jddddd}t |¡D ]M\\}}}|jddd |j | ¡ |j |¡ | 	¡  t
| ¡ ƒ| dkr:|dkpA| d	koA|d
kksEJ ‚t
| ¡ ƒ|dkrR|d
kpY|dkoY|dkks]J ‚qd S )Nr1   Tr   r    r!   r"   rA   r   r@   r   rB   rC   )r%   r3   r&   r#   rD   r(   r   Zset_label_positionr   r)   r$   r   r   )rG   rH   r   r   rE   r   r
   r
   r   Útest_subplots_hide_axislabels´   s   
þ

þørI   c                  C   s(   t  ¡ \} }| ¡  ¡ | ¡ ksJ ‚d S ©N)r%   r&   Zget_subplotspecZget_gridspec)r5   r   r
   r
   r   Útest_get_gridspecÅ   s   rK   c                  C   sR   ddi} dddgi}t jdd| |d\}}| ddiksJ ‚|dddgiks'J ‚d S )Nr   r   Zwidth_ratiosr2   r   )Ú
subplot_kwÚgridspec_kw)r%   r&   )rL   rM   r5   r   r
   r
   r   Útest_dont_mutate_kwargsË   s   

ÿrN   c                   C   s0   t  t j¡t ju sJ ‚t  t j¡t ju sJ ‚d S rJ   )ÚmaxesZsubplot_class_factoryZAxesZSubplotr
   r
   r
   r   Ú"test_subplot_factory_reapplicationÔ   s   rP   )r   Znumpyr#   r:   Zmatplotlib.pyplotZpyplotr%   Zmatplotlib.testing.decoratorsr   Zmatplotlib.axesr4   rO   r   r   r0   r6   r9   r<   r?   ZmarkZparametrizerF   rI   rK   rN   rP   r
   r
   r
   r   Ú<module>   s2    >

	