U
    d»{jÖR  ã                	   @   sö  d dl m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lmZ d dlmZmZ d dlmZmZmZ d dlmZmZmZmZmZmZ d d	lmZmZ d d
lm Z m!Z!m"Z" d dl#m$Z$ d dl%m&Z&m'Z'm(Z(m)Z) d dl*Z+d dl,Z,d dl-Z.d dl/m0Z0m1Z1 dd„ Z2edgdgdd�dd„ ƒZ3dd„ Z4dd„ Z5edgddd�dd„ ƒZ6ed gddd�d!d"„ ƒZ7d#d$„ Z8ed%gdd&d'�d(d)„ ƒZ9ed*d+gƒd,d-„ ƒZ:ed.ge ;¡ d/k�r®d nd0d1�d2d3„ ƒZ<ed4gƒd5d6„ ƒZ=d7d8„ Z>ed9gdd&d:d;id<�d=d>„ ƒZ?d?d@„ Z@e,jA BdAdBdCg¡e,jA BdDdEdFdGdHdIg¡dJdK„ ƒƒZCdLdM„ ZDdNdO„ ZEdPdQ„ ZFe,jA BdRdS¡dTdU„ ƒZGe,jA BdVdWdeHdXfdYdZeId[fdYd\eId[ff¡d]d^„ ƒZJe,jA Bd_deHd`fdaeIdbfdceHd`ff¡ddde„ ƒZKedgdf�dgdh„ ƒZLdidj„ ZMedkgddl�dmdn„ ƒZNdS )oé    )ÚproductN)Úcbook)Ú
MouseEvent)ÚLogNorm)ÚBboxÚTransformedBbox)Úcheck_figures_equalÚimage_comparisonÚremove_ticks_and_titles)Ú	axes_sizeÚhost_subplotÚmake_axes_locatableÚGridÚAxesGridÚ	ImageGrid)ÚAnchoredSizeBarÚAnchoredDirectionArrows)ÚDividerÚHBoxDividerÚmake_axes_area_auto_adjustable)ÚRGBAxes)Úzoomed_inset_axesÚ
mark_insetÚ
inset_axesÚBboxConnectorPatch)Úassert_array_equalÚassert_array_almost_equalc               
      sR  t  ¡ \} }t|ƒ}||jddd|d�|jddd|d�|jddd|d�|jddd|d�d	œ‰ | j ¡  ‡ fd
d„ˆ D ƒ}| j}|d jt 	d| ¡ksšt
‚|d jt 	d| ¡ks¶t
‚|d jt 	d| ¡ksÒt
‚|d jt 	d| ¡ksît
‚|d j|d j t 	d| ¡k�st
‚|d j|d j t 	d| ¡k�s>t
‚|d j|d j t 	d| ¡k�sft
‚|d j|d j t 	d| ¡k�sŽt
‚|d j|d j  k�r¸|d jk�s¾n t
‚|d j|d j  k�rè|d jk�sîn t
‚|d j|d j  k�r|d jk�sn t
‚|d j|d j  k�rH|d jk�sNn t
‚d S )NÚtopç333333ó?çš™™™™™¹?)ÚpadZsharexÚbottomÚleft)r    ZshareyÚright)Úmainr   r!   r"   r#   c                    s   i | ]}|ˆ |   ¡ “qS © )Zget_window_extent)Ú.0Úk©Zaxsr%   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/mpl_toolkits/tests/test_axes_grid1.pyÚ
<dictcomp>+   s      z,test_divider_append_axes.<locals>.<dictcomp>r$   )ÚpltÚsubplotsr   Úappend_axesÚcanvasÚdrawÚdpiÚheightÚpytestÚapproxÚAssertionErrorÚwidthÚy0Úy1Úx0Úx1)ÚfigÚaxÚdividerZbboxesr0   r%   r(   r)   Útest_divider_append_axes    s.    û
((((000r=   Ztwin_axes_empty_and_removedZpngé   )Ú
extensionsÚtolc                  C   s   t j ddddœ¡ dddg} dddd	d
g}tt|ƒd t| ƒdƒ}|jdddddd� tt|| ƒt| ƒd ƒD ]œ\}\}}tt|ƒd t| ƒ|ƒ}t||ƒƒ }d	|kr¼|j	d d …  
d¡ d|krÌ| ¡  d|krè|j	d d …  
d¡ |jdd||rþd| nd ddd� qptjddd� d S )Né   )z	font.sizezxtick.labelsizezytick.labelsizeZtwinxZtwinyÚtwinÚ zhost invisibleztwin removedztwin invisibleztwin removed
host invisibler>   é   ç      à?r   Úcenter)ZhorizontalalignmentZverticalalignmentFÚ
)ZwspaceZhspace)ÚmplZrcParamsÚupdater   ÚlenÚtextÚ	enumerater   ÚgetattrÚaxisÚset_visibleÚremover+   Úsubplots_adjust)Ú
generatorsÚ	modifiersÚhÚiÚmodÚgenÚtr%   r%   r)   Ú test_twin_axes_empty_and_removed;   s8    
ÿ
ÿ
 ÿ

ÿ ÿrY   c               	   C   sZ   t  ¡ } t| ddddddd�}dtj d	d	¡ }|d
 j|dtƒ d�}|jd
  	|¡ d S )Néo   ©r>   r>   r>   ÚLr   Zsingle)Únrows_ncolsÚngridsZ
label_modeZcbar_locationZ	cbar_modei'  é
   r   Únearest)ÚinterpolationZnorm)
r+   Úfigurer   ÚnpÚrandomZrandÚimshowr   Z	cbar_axesÚcolorbar)r:   ÚgridÚZÚimr%   r%   r)   Ú$test_axesgrid_colorbar_log_smoketestW   s    ûrj   c               	   C   sn   t  dd¡\} }|jddgddgddgd�}t|ddd�}t j||d� tjtd	d
�� t  ¡  W 5 Q R X d S )Nr>   r   é   )Úcz3%z70%)r5   r1   )ÚcaxzThis figure includes Axes©Úmatch)	r+   r,   Zscatterr   rf   r2   ÚwarnsÚUserWarningZtight_layout)r:   r;   Zptsrm   r%   r%   r)   Ú*test_inset_colorbar_tight_layout_smoketestg   s    rr   zinset_locator.pngÚdefaultT)ÚstyleÚremove_textc               
   C   s$  t jddgd�\} }tjddd�}d}t d¡}|j\}}||d	d	| …d	d	| …f< |j||d
dd� t|ddd�}|j||d
dd� |j	 
¡ jdd� |j 
¡ jdd� d\}}	}
}| ||	¡ | |
|¡ t jdd� t jdd� t||ddddd� t|jdddddddd�}| |¡ d S )Nrk   é   ©Úfigsizeúaxes_grid/bivariate_normal.npyT©Znp_load©éýÿÿÿrv   éüÿÿÿé   ©é–   r€   é   r`   Úlower©Úextentra   Úoriginé   úupper right©ZzoomÚlocé   ©Znbins©g      ø¿gÍÌÌÌÌÌì¿g      Àgffffffþ¿F©ÚvisiblerD   Únoneú0.5©Úloc1Úloc2ÚfcÚecrE   úlower centerr   ©r‰   r    Ú	borderpadÚsepÚframeon)r+   r,   r   Úget_sample_datarc   ÚzerosÚshapere   r   ÚyaxisÚget_major_locatorÚ
set_paramsÚxaxisÚset_xlimÚset_ylimÚxticksÚyticksr   r   Ú	transDataÚ
add_artist©r:   r;   rh   r„   ZZ2ÚnyÚnxÚaxinsr9   Zx2r7   Úy2Zasbr%   r%   r)   Útest_inset_locators   s>    


ÿ
ÿ  ûr­   zinset_axes.pngc               
   C   s*  t jddgd�\} }tjddd�}d}t d¡}|j\}}||d	d	| …d	d	| …f< |j||d
dd� t|ddd|j	d�}|j||d
dd� |j
 ¡ jdd� |j ¡ jdd� d\}}	}
}| ||	¡ | |
|¡ t jdd� t jdd� t||ddddd� t|jdddddddd�}| |¡ d S )Nrk   rv   rw   ry   Trz   r{   r   r�   r`   r‚   rƒ   ç      ð?r[   )r5   r1   Úbbox_to_anchorÚbbox_transformrŠ   r‹   rŒ   Fr�   rD   r�   r�   r‘   rE   r–   r   r—   )r+   r,   r   r›   rc   rœ   r�   re   r   Ú	transAxesrž   rŸ   r    r¡   r¢   r£   r¤   r¥   r   r   r¦   r§   r¨   r%   r%   r)   Útest_inset_axesœ   sB    


ÿ
ÿ
ÿ  ûr²   c               
   C   sÊ  d} d}t j|| d�\}}| dddd¡ t|dddd�}|j ¡  t| ¡ jt	 
d|d  d |d  d|d	  d |d	  ddf¡ƒ t|d
ddd�}|j ¡  t| ¡ jt	 
d¡ƒ t|dddddd�}|j ¡  t| ¡ jt	 
d|  |d  d|  |d	  d|  d	 |d  d|  d |d	  f¡ƒ t|dddd	d�}t|ddd|jdd	d�}|j ¡  t| ¡ j| ¡ jƒ t t¡� t|d
ddd�}W 5 Q R X t t¡� t|d
d|jd�}W 5 Q R X d S )Néd   )r†   rk   )rx   r0   r   çÍÌÌÌÌÌì?g       @r   )r5   r1   r˜   r>   z40%z30%)g�Âõ(\�â?g…ëQ¸å?r´   r´   r®   r   )éÈ   r³   r~   )r5   r1   r¯   r‰   r˜   g      i@g      Y@z35%z60%)r5   r1   r‰   r˜   z100%)r   r   gffffffÖ?ç333333ã?)r5   r1   r¯   r°   r‰   r˜   )çš™™™™™Ù?rE   )r5   r1   r¯   )r5   r1   r°   )r+   r,   rQ   r   r.   r/   r   Úget_positionÚextentsrc   Úarrayr±   r   r2   ÚraisesÚ
ValueErrorrp   rq   )r0   rx   r:   r;   ZinsZins1Zins2r%   r%   r)   Útest_inset_axes_completeÈ   sf    
  ÿþ
þ
 ÿ
  ÿþ  þ

ÿÿÿr½   zfill_facecolor.pngZmpl20)ru   rt   c                  C   s.  t  dd¡\} }|  dd¡ tddƒD ]}|| j d¡ q&|d j ¡  t dddd¡}t	||d j
ƒ}t	||d j
ƒ}t||dddd	d
dd�}| d¡ |d  |¡ t|d ddd�}| dd¡ | dd¡ t  ¡ jj g ¡ t  ¡ jj g ¡ t|d |ddddd� t	||d j
ƒ}t	||d j
ƒ}	t||	dddd	d
dd�}| d¡ |d  |¡ t|d ddd�}| dd¡ | dd¡ t  ¡ jj g ¡ t  ¡ jj g ¡ t|d |ddddd� t	||d j
ƒ}
t	||d	 j
ƒ}t|
|dddd	d
dd�}| d¡ |d  |¡ t|d ddd�}| dd¡ | dd¡ t  ¡ jj g ¡ t  ¡ jj g ¡ t|d |ddddd� t	||d	 j
ƒ}t	||d j
ƒ}t||dddd	d
ddd�	}| d¡ |d	  |¡ t|d	 ddd�}| dd¡ | dd¡ |j g ¡ |j g ¡ t|d	 |dddddd� d S )Nr>   rk   rv   Fr   r·   r¶   rD   r~   ÚrÚb)Úloc1aÚloc2aÚloc1bÚloc2br•   r”   r‡   )r‰   çš™™™™™É?r�   r‘   Úy)rÀ   rÁ   rÂ   rÃ   r•   Ú	facecolor)r’   r“   rÆ   r•   Úg)rÀ   rÁ   rÂ   rÃ   r•   Úcolor)r’   r“   rÈ   r•   )rÀ   rÁ   rÂ   rÃ   r•   r”   Úfill)r’   r“   r”   r•   rÉ   )r+   r,   Zset_size_inchesÚrangerž   rO   Z
tick_rightr   Zfrom_extentsr   r¦   r   Zset_clip_onÚ	add_patchr   r¢   r£   ÚgcaÚaxesr¡   Z	set_ticksr   )r:   r;   rU   ÚbboxZbbox1Zbbox2Úpr«   Zbbox3Zbbox4Zbbox5Zbbox6Zbbox7Zbbox8r%   r%   r)   Útest_fill_facecolorô   s®          þ
      þ
      þ
       þ
rÐ   zzoomed_axes.pngzinverted_zoomed_axes.pngc                  C   s°   t  ¡ \} }| dddgdddg¡ | ddddg¡ t|ddd�}| ddddg¡ t  ¡ \} }| dddgdddg¡ | ddddg¡ t|ddd�}| ddddg¡ d S )	Nr>   rD   r~   g      @zlower rightrˆ   gš™™™™™ñ?gffffffö?)r+   r,   ÚplotrN   r   )r:   r;   Zinset_axr%   r%   r)   Útest_zooming_with_inverted_axesB  s    rÒ   zanchored_direction_arrows.pngÚx86_64g{®Gáz„?)r@   c                  C   s<   t  ¡ \} }|jt d¡dd� t|jddƒ}| |¡ d S )N©r_   r_   r`   ©ra   ÚXÚY)r+   r,   re   rc   rœ   r   r±   r§   )r:   r;   Zsimple_arrowr%   r%   r)   Útest_anchored_direction_arrowsQ  s    rØ   z'anchored_direction_arrows_many_args.pngc                  C   sT   t  ¡ \} }| t d¡¡ t|jdddddddd	d
ddddddd�}| |¡ d S )NrÔ   ÚAÚBr‡   Úredg      à¿r¶   rD   Tgffffffæ?g¸…ëQ¸®¿g{®Gáz´¿r   é	   r_   rk   )r‰   rÈ   Zaspect_ratior    r˜   rš   ÚalphaZsep_xZsep_yZback_lengthZ
head_widthZhead_lengthZ
tail_width)r+   r,   re   rc   Zonesr   r±   r§   )r:   r;   Zdirection_arrowsr%   r%   r)   Ú(test_anchored_direction_arrows_many_args[  s*                ürÞ   c               	   C   sd   t  ¡ \} }t|ƒ}t ddi¡� |jddd�}W 5 Q R X | j ¡  t 	|j
dd�jd¡s`t‚d S )	Nzfigure.subplot.wspaceg{®Gáz”?r#   z5%)ÚsizeF)Úoriginalg@¸Ù/ÄŠ¢?)r+   r,   r   rH   Z
rc_contextr-   r.   r/   rc   Úiscloser¸   r5   r4   )r:   r;   r<   rm   r%   r%   r)   Útest_axes_locatable_positionh  s    
ÿrâ   zimage_grid.pngZbbox_inchesZtight)ru   rt   Zsavefig_kwargc                  C   s`   t  d¡ d¡} t dd¡}t|dddd�}| ¡ d	ks<t‚td
ƒD ]}|| j	| dd� qDd S )Nr³   rÔ   r>   )rv   rv   rZ   ©rD   rD   r   )r]   Zaxes_pad)r   r   rv   r`   rÕ   )
rc   ÚarangeÚreshaper+   rb   r   Zget_axes_padr4   rÊ   re   )ri   r:   rg   rU   r%   r%   r)   Útest_image_gridr  s    ræ   c                  C   s”   t jdd�\} }| dddgdddg¡\}t|dƒ}| dddgdddg¡ t||dddd	d
� t| ƒ |  | j ¡ ¡}t	j
 |jddddg¡ d S )N)rA   r†   rw   r>   rD   r~   r   rv   r�   z0.3r‘   g33333³1ÀgÍÌÌÌÌÌ+ÀgÍÌÌÌÌÌ@gš™™™™™@)r+   r,   rÑ   r   r   r
   Úget_tightbboxr.   Zget_rendererrc   Ztestingr   r¹   )r:   r;   ÚlZax_zoomrÎ   r%   r%   r)   Útest_gettightbbox€  s    


ÿré   Úclick_onÚbigÚsmallzbig_on_axes,small_on_axes)rÌ   rÌ   )Úhostrí   )rí   Úparasite)rî   rí   )rî   rî   c                    sz  t jddddd�}t jdddddd�}g ‰ ‡ fd	d
„}t  ¡ j d|¡ | |f}ddddœ}d|krpt  ¡ |d< d|ks€d|krœtdƒ|d< |d  ¡ |d< ||   |¡ ||  |¡ |dkrÎ||  }d}	n|| }d}	||d krî|d }|j	 
|	¡\}
}td|jj|
|dd�}| |¡ |dk�r,dnd}tˆ ƒ|k�sBt‚dd„ ˆ D ƒ}||k�s^t‚|dk�rv||k�svt‚dS )z2Test pick events on normal, host or parasite axes.)ç      Ð?rï   rE   rk   )Úpicker)r·   r·   rÄ   r¾   )rÆ   rð   c                    s   ˆ   | ¡ d S )N)Úappend)Úevent©Zreceived_eventsr%   r)   Úon_pick¤  s    z/test_picking_callbacks_overlap.<locals>.on_pickZ
pick_eventN)rÌ   rí   rî   rÌ   rí   rî   rZ   rë   )ç333333Ó?rõ   )rE   rE   Zbutton_press_eventr>   )Zbuttonrì   rD   c                 S   s   g | ]
}|j ‘qS r%   )Zartist)r&   rò   r%   r%   r)   Ú
<listcomp>Ä  s     z2test_picking_callbacks_overlap.<locals>.<listcomp>)r+   Z	RectangleZgcfr.   Zmpl_connectrÌ   r   rB   rË   r±   Z	transformr   rb   ÚpickrJ   r4   )Zbig_on_axesZsmall_on_axesrê   rë   rì   rô   Zrectangles_on_axesrÍ   Z
click_axesZaxes_coordsÚxrÅ   ÚmZexpected_n_eventsZevent_rectsr%   ró   r)   Útest_picking_callbacks_overlap�  s@    ÿ

rú   c            	   	   C   sô   t  d¡ d¡} t  d¡ d¡}t dd¡\}\}}| | ¡ | |¡ d}t|dt |¡t 	|¡t |¡gt 
|¡t d¡t 
|¡gd�}| | d	¡¡ | | d¡¡ |j ¡  | ¡ }| ¡ }|j|jksÖt‚|j|j t d
¡ksðt‚d S )Né   )rv   rk   )rk   rv   r>   rD   rE   rZ   )Ú
horizontalÚverticalr   g|®Gázä?)rc   rä   rå   r+   r,   re   r   ÚSizeZAxesXÚFixedZAxesYZScaledZset_axes_locatorZnew_locatorr.   r/   r¸   r1   r4   r5   r2   r3   )	Zarr1Zarr2r:   Zax1Zax2r    r<   Úp1Zp2r%   r%   r)   Útest_hbox_dividerÊ  s&    

 ý
r  c                  C   s*   t  ¡ } tjjji f}t| dd|d�}d S )NrZ   r[   )r]   Ú
axes_class)r+   rb   Úmpl_toolkitsZ
axes_grid1Zmpl_axesZAxesr   )r:   r  Úgrr%   r%   r)   Útest_axes_class_tupleá  s    r  c                  C   s„   t  ¡ } t| dddd�}t||jƒ t|jt |j¡ƒ t|t 	|j¡dƒ | 
¡ dks\t‚t| dddd�}t|t 	|j¡dƒ dS )z:Test Grid axes_all, axes_row and axes_column relationship.rZ   ©rD   r~   Úrow©Ú	directionÚcolumnN)r+   rb   r   r   Zaxes_allÚaxes_rowrc   Z	transposeZaxes_columnÚravelZget_geometryr4   )r:   rg   r%   r%   r)   Útest_grid_axes_listsç  s    r  r	  )r  r
  c                 C   s¶   t  ¡ }t|dd| d�}dd„ t |j¡D ƒ}|d j|d jkrV|d j|d jk sZt‚|d j|d jkr‚|d j|d jks†t‚|d	 j|d jkr®|d	 j|d jks²t‚d
S )z%Test positioning of the axes in Grid.rZ   rã   r  c                 S   s   g | ]}|  ¡ ‘qS r%   )Zget_axes_locator)r&   r;   r%   r%   r)   rö   ø  s     z+test_grid_axes_position.<locals>.<listcomp>r>   r   rD   r~   N)	r+   rb   r   rc   r  r  Z_nxZ_nyr4   )r	  r:   rg   r‰   r%   r%   r)   Útest_grid_axes_positionó  s    ,,r  zrect, ngrids, error, messager[   zIncorrect rect formatrZ   éÿÿÿÿzngrids must be positiverŠ   c              	   C   s6   t  ¡ }tj||d�� t|| d|d� W 5 Q R X d S )Nrn   r  )r^   )r+   rb   r2   r»   r   )Úrectr^   ÚerrorÚmessager:   r%   r%   r)   Útest_grid_errorsþ  s    r  zanchor, error, messagezanchor must be strÚCCz$'CC' is not a valid value for anchor)r>   r>   r>   c              	   C   sP   t  ¡ }tj||d��0 t|ddddgt d¡gt d¡g| d� W 5 Q R X d S )Nrn   r   r>   )Úanchor)r+   rb   r2   r»   r   rþ   rÿ   )r  r  r  r:   r%   r%   r)   Útest_divider_errors	  s
    "ÿr  )r?   c                 C   sŽ   |   dd¡\}}| ddgddg¡ |jddd� t||ddƒ |  dd¡\}}| ddgddg¡ |jddd� t||ddƒ |j ¡  d S )Nr>   rD   r   rk   )r>   rD   )ZxlimZylimrv   )r,   rÑ   Úsetr   r.   r/   )Zfig_testZfig_refZinsetÚfullr%   r%   r)   Ú test_mark_inset_unstales_viewlim  s    r  c                  C   s¸   t  ¡ } |  ddddg¡}d}t||d� | j ¡  | ¡ }|jt 	|| j
 ¡ksVt‚|jt 	| jj|| j
  ¡ksxt‚|jt 	|| j
 ¡ks’t‚|jt 	| jj|| j
  ¡ks´t‚d S )Nr   r>   r   ©r    )r+   rb   Zadd_axesr   r.   r/   rç   r8   r2   r3   r0   r4   r9   rÎ   r5   r6   r7   r1   )r:   r;   r    Ztbbr%   r%   r)   Útest_auto_adjustable%  s    
"r  zrgb_axes.png)ru   c                  C   sV   t  ¡ } t| ddd�}tj d¡}| d¡}| d¡}| d¡}|j|||dd� d S )N)r   r   çš™™™™™é?r  r   r  i!N,)rk   rk   r�   rÕ   )r+   rb   r   rc   rd   Zdefault_rngZ
imshow_rgb)r:   r;   Úrngr¾   rÇ   r¿   r%   r%   r)   Útest_rgb_axes2  s    


r  )OÚ	itertoolsr   ÚplatformZ
matplotlibrH   Zmatplotlib.pyplotZpyplotr+   r   Zmatplotlib.backend_basesr   Zmatplotlib.colorsr   Zmatplotlib.transformsr   r   Zmatplotlib.testing.decoratorsr   r	   r
   Zmpl_toolkits.axes_grid1r   rþ   r   r   r   r   r   Z(mpl_toolkits.axes_grid1.anchored_artistsr   r   Z$mpl_toolkits.axes_grid1.axes_dividerr   r   r   Z mpl_toolkits.axes_grid1.axes_rgbr   Z%mpl_toolkits.axes_grid1.inset_locatorr   r   r   r   Z mpl_toolkits.axes_grid1.mpl_axesr  r2   Únumpyrc   Znumpy.testingr   r   r=   rY   rj   rr   r­   r²   r½   rÐ   rÒ   ÚmachinerØ   rÞ   râ   ræ   ré   ÚmarkZparametrizerú   r  r  r  r  Ú	TypeErrorr¼   r  r  r  r  r  r%   r%   r%   r)   Ú<module>   s˜    

(
+,
M

ÿ


 þ
û2




ý
ý


