a
    ìÝEbæH  ã                   @   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 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 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*m+Z+m,Z, dd„ Z-edgdgdd�dd„ ƒZ.dd„ Z/edgddd�dd„ ƒZ0edgddd�dd„ ƒZ1d d!„ Z2ed"gdd#d$�d%d&„ ƒZ3ed'd(gƒd)d*„ ƒZ4ed+ge 5¡ d,k�rŽd nd-d.�d/d0„ ƒZ6ed1gƒd2d3„ ƒZ7d4d5„ Z8ed6gdd#d7d8id9�d:d;„ ƒZ9d<d=„ Z:e'j; <d>d?d@g¡e'j; <dAg dB¢¡dCdD„ ƒƒZ=dEdF„ Z>dGdH„ Z?dIdJ„ Z@e'j; <dKdL¡dMdN„ ƒZAdS )Oé    )ÚproductN)Úcbook)Ú
MouseEvent)ÚLogNorm)ÚBboxÚTransformedBbox)Úimage_comparisonÚremove_ticks_and_titles)Ú	axes_sizeÚhost_subplotÚmake_axes_locatableÚGridÚAxesGridÚ	ImageGrid)ÚAnchoredSizeBarÚAnchoredDirectionArrows)ÚHBoxDivider)Úzoomed_inset_axesÚ
mark_insetÚ
inset_axesÚBboxConnectorPatch)Úassert_array_equalÚassert_array_almost_equalc               
      s\  t  ¡ \} }t|ƒ}||jddd|d�|jddd|d�|jddd|d�|jddd|d�d	œ‰ | j ¡  | j ¡ }‡ fd
d„ˆ D ƒ}| j}|d jt	 
d| ¡ks¤J ‚|d jt	 
d| ¡ksÀJ ‚|d jt	 
d| ¡ksÜJ ‚|d jt	 
d| ¡ksøJ ‚|d j|d j t	 
d| ¡k�s J ‚|d j|d j t	 
d| ¡k�sHJ ‚|d j|d j t	 
d| ¡k�spJ ‚|d j|d j t	 
d| ¡k�s˜J ‚|d j|d j  k�rÂ|d jk�sÈn J ‚|d j|d j  k�rò|d jk�søn J ‚|d j|d j  k�r"|d jk�s(n J ‚|d j|d j  k�rR|d jk�sXn J ‚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!   úb/home/ja/django-apps/lartica_env/lib/python3.9/site-packages/mpl_toolkits/tests/test_axes_grid1.pyÚ
<dictcomp>*   ó    z,test_divider_append_axes.<locals>.<dictcomp>r    )ÚpltÚsubplotsr   Úappend_axesÚcanvasÚdrawÚget_rendererÚdpiÚheightÚpytestÚapproxÚwidthZy0Úy1Zx0Úx1)ÚfigÚaxÚdividerÚrendererZbboxesr.   r!   r$   r%   Útest_divider_append_axes   s0    û

((((000r9   Ztwin_axes_empty_and_removedZpngé   )Ú
extensionsÚtolc                  C   s  t j ddddœ¡ g d¢} g d¢}tt|ƒd t| ƒdƒ}|jdddd	d	d
� tt|| ƒt| ƒd ƒD ]œ\}\}}tt|ƒd t| ƒ|ƒ}t||ƒƒ }d|v r´|j	d d …  
d¡ d|v rÄ| ¡  d|v rà|j	d d …  
d¡ |jdd||röd| nd d	d	d
� qhtjddd� d S )Né   )z	font.sizezxtick.labelsizezytick.labelsize)ZtwinxZtwinyÚtwin)Ú úhost invisibleútwin removedútwin invisibleztwin removed
host invisibler:   é   ç      à?r   Úcenter)ZhorizontalalignmentZverticalalignmentrB   FrA   r@   Ú
r?   )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:   s0    
ÿ
ÿ

ÿÿrX   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   Úsingle)Únrows_ncolsZngridsZ
label_modeZcbar_locationZ	cbar_modei'  é
   r   Únearest)ÚinterpolationZnorm)
r(   Úfigurer   ÚnpÚrandomZrandÚimshowr   Z	cbar_axesZcolorbar)r5   ÚgridÚZÚimr!   r!   r%   Ú$test_axesgrid_colorbar_log_smoketestV   s    ûrh   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 )Né   é   ©Úfigsizeúaxes_grid/bivariate_normal.npyT©Znp_load©éýÿÿÿrm   éüÿÿÿé   ©é–   rw   é   r_   Úlower©Úextentr`   Úoriginé   úupper right©ZzoomÚlocé   ©Znbins©g      ø¿gÍÌÌÌÌÌì¿g      Àgffffffþ¿F©ÚvisiblerC   Únoneú0.5©Úloc1Úloc2ÚfcÚecrD   úlower centerr   ©r€   r   Ú	borderpadÚsepÚframeon)r(   r)   r   Úget_sample_datarb   ÚzerosÚshaperd   r   ÚyaxisÚget_major_locatorÚ
set_paramsÚxaxisÚset_xlimÚset_ylimÚxticksÚyticksr   r   Ú	transDataÚ
add_artist©r5   r6   rf   r{   ZZ2ÚnyÚnxÚaxinsr4   Zx2r3   Úy2Zasbr!   r!   r%   Útest_inset_locatorf   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 )Nrl   rm   rn   rp   Trq   rr   rv   rx   r_   ry   rz   ç      ð?rZ   )r2   r/   Úbbox_to_anchorÚbbox_transformr�   r‚   rƒ   Fr„   rC   r†   r‡   rˆ   rD   r�   r   rŽ   )r(   r)   r   r’   rb   r“   r”   rd   r   Ú	transAxesr•   r–   r—   r˜   r™   rš   r›   rœ   r   r   r�   rž   rŸ   r!   r!   r%   Útest_inset_axes�   s>    


ÿ
ÿ
ÿû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 d   ƒ n1 �sª0    Y  t t¡�" t|d
d|jd�}W d   ƒ n1 �sè0    Y  d S )Néd   )r}   rl   )ro   r.   r   çÍÌÌÌÌÌì?g       @r   )r2   r/   r�   r:   z40%z30%)g�Âõ(\�â?g…ëQ¸å?r«   r«   r¥   r   )éÈ   rª   ru   )r2   r/   r¦   r€   r�   g      i@g      Y@z35%z60%)r2   r/   r€   r�   z100%)r   r   gffffffÖ?ç333333ã?)r2   r/   r¦   r§   r€   r�   )çš™™™™™Ù?rD   )r2   r/   r¦   )r2   r/   r§   )r(   r)   rP   r   r+   r,   r   Úget_positionÚextentsrb   Úarrayr¨   r   r0   ZraisesÚ
ValueErrorZwarnsÚUserWarning)r.   ro   r5   r6   ZinsZins1Zins2r!   r!   r%   Útest_inset_axes_complete½   sZ    
ÿþ
þ
ÿ
 $ÿþþ

ÿÿ&ÿr´   zfill_facecolor.pngZmpl20)rk   rj   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:   rl   rm   Fr   r®   r­   rC   ru   Ú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•   rN   Z
tick_rightr   Zfrom_extentsr   r�   r   Zset_clip_onÚ	add_patchr   r™   rš   ÚgcaÚaxesr˜   Z	set_ticksr   )r5   r6   rT   Ú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  ¡ \} }| g d¢g d¢¡ | g d¢¡ t|ddd�}| g d¢¡ t  ¡ \} }| g d¢g d¢¡ | g d¢¡ t|ddd�}| g d¢¡ d S )	N©r:   rC   ru   )r:   ru   r:   ru   g      @zlower rightr   )çš™™™™™ñ?çffffffö?rÉ   rÊ   )ru   r:   ru   r:   )rÊ   rÉ   rÊ   rÉ   )r(   r)   ÚplotrM   r   )r5   r6   Zinset_axr!   r!   r%   Útest_zooming_with_inverted_axes7  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_   ©r`   ÚXÚY)r(   r)   rd   rb   r“   r   r¨   rž   )r5   r6   Zsimple_arrowr!   r!   r%   Útest_anchored_direction_arrowsF  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­   rC   Tgffffffæ?g¸…ëQ¸®¿g{®Gáz´¿r   é	   r^   rl   )r€   r¿   Zaspect_ratior   r�   r‘   ÚalphaZsep_xZsep_yZback_lengthZ
head_widthZhead_lengthZ
tail_width)r(   r)   rd   rb   Zonesr   r¨   rž   )r5   r6   Zdirection_arrowsr!   r!   r%   Ú(test_anchored_direction_arrows_many_argsP  s    
ürØ   c                  C   sx   t  ¡ \} }t|ƒ}t ddi¡� |jddd�}W d   ƒ n1 sF0    Y  | j ¡  t 	|j
dd�jd¡stJ ‚d S )	Nzfigure.subplot.wspaceg{®Gáz”?r   z5%)ÚsizeF)Úoriginalg@¸Ù/ÄŠ¢?)r(   r)   r   rG   Z
rc_contextr*   r+   r,   rb   Úiscloser¯   r2   )r5   r6   r7   Zcaxr!   r!   r%   Útest_axes_locatable_position]  s    ,
ÿrÜ   zimage_grid.pngZbbox_inchesZtight)rk   rj   Zsavefig_kwargc                  C   sd   t  d¡ d¡} t dd¡}t|dddd�}td	ƒD ]*}|| j| d
d� ||  d 	|¡¡ q4d S )Nrª   rÎ   r:   )rm   rm   rY   ©rC   rC   r   )r]   Zaxes_padrm   r_   rÏ   ztest {0}{0})
rb   ÚarangeÚreshaper(   ra   r   rÁ   rd   Ú	set_titleÚformat)rg   r5   re   rT   r!   r!   r%   Útest_image_gridg  s    râ   c                  C   sˆ   t jdd�\} }| g d¢g d¢¡\}t|dƒ}| g d¢g d¢¡ t||dddd	d
� t| ƒ |  | j ¡ ¡}t	j
 |jg d¢¡ d S )N)r=   r}   rn   rÈ   )r   r:   r   rm   r:   ru   r†   z0.3rˆ   )g33333³1ÀgÍÌÌÌÌÌ+ÀgÍÌÌÌÌÌ@gš™™™™™@)r(   r)   rË   r   r   r	   Zget_tightbboxr+   r-   rb   Útestingr   r°   )r5   r6   ÚlZax_zoomrÅ   r!   r!   r%   Útest_gettightbboxv  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|v rpt  ¡ |d< d|v s€d|v rœtdƒ|d< |d  ¡ |d< ||   |¡ ||  |¡ |dkrÎ||  }d}	n|| }d}	||d u rî|d }|j	 
|	¡\}
}td|jj|
|dd�}| |¡ |dk�r,dnd}tˆ ƒ|k�sBJ ‚dd„ ˆ D ƒ}||v �s^J ‚|dk�rv||v �svJ ‚dS )z2Test pick events on normal, host or parasite axes.)ç      Ð?rë   rD   rl   )Ú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ê   rY   rç   )ç333333Ó?rñ   )rD   rD   Zbutton_press_eventr:   )Úbuttonrè   rC   c                 S   s   g | ]
}|j ‘qS r!   )Zartist)r"   rî   r!   r!   r%   Ú
<listcomp>º  r'   z2test_picking_callbacks_overlap.<locals>.<listcomp>)r(   Z	RectangleZgcfr+   Zmpl_connectrÃ   r   r>   rÂ   r¨   Z	transformr   ra   ÚpickrI   )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ÖJ ‚|j|j t d
¡ksðJ ‚d S )Né   )rm   rl   )rl   rm   r:   rC   rD   rY   )Ú
horizontalÚverticalr   g|®Gázä?)rb   rÞ   rß   r(   r)   rd   r   ÚSizeZAxesXZFixedZAxesYZScaledZset_axes_locatorZnew_locatorr+   r,   r¯   r/   r2   r0   r1   )	Zarr1Zarr2r5   Zax1Zax2r   r7   Úp1Úp2r!   r!   r%   Útest_hbox_dividerÀ  s$    

ý
rþ   c                  C   s*   t  ¡ } tjjji f}t| dd|d�}d S )NrY   rZ   )r]   Ú
axes_class)r(   ra   Úmpl_toolkitsZ
axes_grid1Zmpl_axesZAxesr   )r5   rÿ   Úgrr!   r!   r%   Útest_axes_class_tuple×  s    r  c                  C   st   t  ¡ } t| dddd�}t||jƒ t|jt |j¡ƒ t|t 	|j¡dƒ t| dddd�}t|t 	|j¡dƒ dS )z:Test Grid axes_all, axes_row and axes_column relationship.rY   )rC   ru   Úrow©Ú	directionÚcolumnN)
r(   ra   r   r   Zaxes_allÚaxes_rowrb   Z	transposeZaxes_columnÚravel)r5   re   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 sZJ ‚|d j|d jkr‚|d j|d jks†J ‚|d	 j|d jkr®|d	 j|d jks²J ‚d
S )z%Test positioning of the axes in Grid.rY   rÝ   r  c                 S   s   g | ]}|  ¡ ‘qS r!   )Zget_axes_locator)r"   r6   r!   r!   r%   ró   í  r'   z+test_grid_axes_position.<locals>.<listcomp>r:   r   rC   ru   N)r(   ra   r   rb   r  r  Z_nxZ_ny)r  r5   re   r€   r!   r!   r%   Útest_grid_axes_positionè  s    ,,r
  )BÚ	itertoolsr   ÚplatformZ
matplotlibrG   Zmatplotlib.pyplotZpyplotr(   r   Zmatplotlib.backend_basesr   Zmatplotlib.colorsr   Zmatplotlib.transformsr   r   Zmatplotlib.testing.decoratorsr   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   Z%mpl_toolkits.axes_grid1.inset_locatorr   r   r   r   Z mpl_toolkits.axes_grid1.mpl_axesr   r0   Únumpyrb   Znumpy.testingr   r   r9   rX   rh   r¤   r©   r´   rÇ   rÌ   ÚmachinerÒ   rØ   rÜ   râ   rå   ÚmarkZparametrizer÷   rþ   r  r	  r
  r!   r!   r!   r%   Ú<module>   sd    

)
,,
M

ÿ


þ
2