o
    iF                     @   s6  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 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 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.e'j/0dddgdd Z1edgddddd Z2ed gdddd!d" Z3d#d$ Z4ed%gdd&d'd(d) Z5ed*d+gd,d- Z6ed.ge7 d/krd nd0d1d2d3 Z8ed4gd5d6 Z9d7d8 Z:ed9gdd&d:d;id<d=d> Z;d?d@ Z<e'j/0dAdBdCge'j/0dDg dEdFdG Z=dHdI Z>dJdK Z?dS )L    )productN)cbook)MatplotlibDeprecationWarning)
MouseEvent)LogNorm)BboxTransformedBbox)image_comparisonremove_ticks_and_titles)	axes_sizehost_subplotmake_axes_locatableAxesGrid	ImageGrid)AnchoredSizeBarAnchoredDirectionArrows)HBoxDivider)zoomed_inset_axes
mark_inset
inset_axesBboxConnectorPatch)assert_array_equalassert_array_almost_equalc               
      sT  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sRJ |d jt	
d| ks`J |d jt	
d| ksnJ |d jt	
d| ks|J |d j|d j t	
d| ksJ |d j|d j t	
d| ksJ |d j|d j t	
d| ksJ |d j|d j t	
d| ksJ |d j|d j  kr|d jksJ  J |d j|d j  kr|d jksJ  J |d j|d j  kr|d jksJ  J |d j|d j  kr%|d jks(J  J d S )Ntop333333?皙?)padsharexbottomleft)r   shareyright)mainr   r   r   r!   c                    s   i | ]	}| |   qS  )get_window_extent).0kaxsr#   ]/var/www/edux/Edux_v2/venv/lib/python3.10/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get_rendererdpiheightpytestapproxwidthy0y1x0x1)figaxdividerrendererbboxesr1   r#   r'   r)   test_divider_append_axes   s0   

&&&&..26r?   twin_axes_empty_and_removedpng   )
extensionstolc                  C   s4  t jddi t jddi t jddi g d} g d}tt|d t| d}|jd	d	d
ddd tt|| t| d D ]N\}\}}tt|d t| |}t|| }d|v rh|j	d d  
d d|v rp|  d|v r~|j	d d  
d |jd	d	||rd| nd ddd qBtjd	dd d S )Nz	font.size   zxtick.labelsizezytick.labelsize)twinxtwinytwin) host invisibletwin removedtwin invisibleztwin removed
host invisiblerB            ?r   center)horizontalalignmentverticalalignmentrL   FrK   rJ   
rI   )wspacehspace)
matplotlib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_removed9   s0   


rg   legacy_colorbarFTc              	   C   s   | t jd< t }t|ddddddd}d	tjd
d
 }|d j|dt	 d}| rJt
t |jd | W d    d S 1 sCw   Y  d S |jd | d S )Nzmpl_toolkits.legacy_colorbaro   rB   rB   rB   Lr   single)nrows_ncolsngrids
label_modecbar_location	cbar_modei'  
   r   nearest)interpolationnorm)rU   rV   r+   figurer   nprandomrandimshowr   r3   warnsr   	cbar_axescolorbar)rh   r:   gridZimr#   r#   r)   $test_axesgrid_colorbar_log_smoketestV   s    
"r   zinset_locator.pngdefault)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np_loadr         r      rs   lowerextentrt   origin   upper rightzoomloc   nbinsg      gg      gffffffFvisiblerM   none0.5loc1loc2fcecrN   lower centerr   r   r   	borderpadsepframeon)r+   r,   r   get_sample_datarw   zerosshaperz   r   yaxisget_major_locator
set_paramsxaxisset_xlimset_ylimxticksyticksr   r   	transData
add_artistr:   r;   r   r   Z2nynxaxinsr9   x2r7   y2asbr#   r#   r)   test_inset_locatorm   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 )Nr   r   r   r   Tr   r   r   r   rs   r   r         ?rj   )r5   r2   bbox_to_anchorbbox_transformr   r   r   Fr   rM   r   r   r   rN   r   r   r   )r+   r,   r   r   rw   r   r   rz   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 sw   Y  tt t|d
d|jd}W d    d S 1 sw   Y  d S )Nd   )r   r   )r   r1   r   ?g       @r   )r5   r2   r   rB   z40%z30%)g(\?gQ?r   r   r   r   )   r   r   )r5   r2   r   r   r   g      i@g      Y@z35%z60%)r5   r2   r   r   z100%)r   r   gffffff?333333?)r5   r2   r   r   r   r   )皙?rN   )r5   r2   r   )r5   r2   r   )r+   r,   r_   r   r.   r/   r   get_positionextentsrw   arrayr   r   r3   raises
ValueErrorr{   UserWarning)r1   r   r:   r;   insins1ins2r#   r#   r)   test_inset_axes_complete   s^   



 $

"r   zfill_facecolor.pngmpl20)r   r   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 g  t  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 g  t  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 g  t  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 | g  | g  t|d	 |dddddd d S )NrB   r   r   Fr   r   r   rM   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,   set_size_inchesranger   r]   
tick_rightr   from_extentsr   r   r   set_clip_on	add_patchr   r   r   gcaaxes	get_xaxis	set_ticks	get_yaxisr   )r:   r;   rc   bboxbbox1bbox2pr   bbox3bbox4bbox5bbox6bbox7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rB   rM   r   )rB   r   rB   r   g      @zlower rightr   )皙?ffffff?r   r   )r   rB   r   rB   )r   r   r   r   )r+   r,   plotr\   r   )r:   r;   inset_axr#   r#   r)   test_zooming_with_inverted_axes>  s   r   zanchored_direction_arrows.pngx86_64g{Gz?)rD   c                  C   s<   t  \} }|jtddd t|jdd}|| d S )Nrr   rr   rs   rt   XY)r+   r,   rz   rw   r   r   r   r   )r:   r;   simple_arrowr#   r#   r)   test_anchored_direction_arrowsM  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   rM   Tgffffff?gQg{Gzr   	   rr   r   )r   r   aspect_ratior   r   r   alphasep_xsep_yback_length
head_widthhead_length
tail_width)r+   r,   rz   rw   onesr   r   r   )r:   r;   direction_arrowsr#   r#   r)   (test_anchored_direction_arrows_many_argsW  s   
r  c                  C   sL   t  \} }t|}|jdddd}| j  t|jddj	ds$J d S )Nr!   z5%z2%)sizer   F)originalg@/Ċ?)
r+   r,   r   r-   r.   r/   rw   iscloser   r5   )r:   r;   r<   caxr#   r#   r)   test_axes_locatable_positiond  s   
r  zimage_grid.pngbbox_inchestight)r   r   savefig_kwargc                  C   sd   t dd} tdd}t|dddd}td	D ]}|| j| d
d || d	| qd S )Nr   r  rB   )r   r   ri   )rM   rM   r   )rm   axes_padr   rs   r  ztest {0}{0})
rw   arangereshaper+   rv   r   r   rz   	set_titleformat)r   r:   r~   rc   r#   r#   r)   test_image_gridm  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)rE   r   r   r   )r   rB   r   r   rB   r   r   z0.3r   )g333331g+g@g@)r+   r,   r   r   r   r
   get_tightbboxr.   r0   rw   testingr   r   )r:   r;   l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                    st  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 r8t  |d< d|v s@d|v rNtd|d< |d  |d< ||  | || | |dkrg||  }d}	n|| }d}	||d u rw|d }|j	
|	\}
}td|jj|
|dd}|| |dkrdnd}t |ksJ dd  D }||v sJ |dkr||v sJ dS dS )z2Test pick events on normal, host or parasite axes.)      ?r/  rN   r   )picker)r   r   r   r   )r   r0  c                    s     |  d S )N)append)eventreceived_eventsr#   r)   on_pick  s   z/test_picking_callbacks_overlap.<locals>.on_pick
pick_eventN)r   r-  r.  r   r-  r.  ri   r+  )333333?r7  )rN   rN   button_press_eventrB   )buttonr,  rM   c                 S   s   g | ]}|j qS r#   )artist)r%   r2  r#   r#   r)   
<listcomp>  s    z2test_picking_callbacks_overlap.<locals>.<listcomp>)r+   	Rectanglegcfr.   mpl_connectr   r   rH   r   r   	transformr   rv   pickrX   )big_on_axessmall_on_axesr*  r+  r,  r5  rectangles_on_axesr   
click_axesaxes_coordsxr   mexpected_n_eventsevent_rectsr#   r3  r)   test_picking_callbacks_overlap  sD   
rJ  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skJ |j|j td
ksxJ d S )N   )r   r   )r   r   rB   rM   rN   ri   )
horizontalverticalr   g|Gz?)rw   r   r!  r+   r,   rz   r   SizeAxesXFixedAxesYScaledset_axes_locatornew_locatorr.   r/   r   r2   r5   r3   r4   )	arr1arr2r:   ax1ax2r   r<   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 )Nri   rj   )rm   
axes_class)r+   rv   mpl_toolkits
axes_grid1mpl_axesAxesr   )r:   r\  grr#   r#   r)   test_axes_class_tuple  s   rb  )@	itertoolsr   platformrU   matplotlib.pyplotpyplotr+   r   matplotlib.cbookr   matplotlib.backend_basesr   matplotlib.colorsr   matplotlib.transformsr   r   matplotlib.testing.decoratorsr	   r
   mpl_toolkits.axes_grid1r   rN  r   r   r   r   (mpl_toolkits.axes_grid1.anchored_artistsr   r   $mpl_toolkits.axes_grid1.axes_dividerr   %mpl_toolkits.axes_grid1.inset_locatorr   r   r   r    mpl_toolkits.axes_grid1.mpl_axesr]  r3   numpyrw   numpy.testingr   r   r?   rg   markparametrizer   r   r   r   r   r   machiner  r  r  r$  r)  rJ  r[  rb  r#   r#   r#   r)   <module>   sd    


)
,,

M


	
2