U
    \	a"E                  	   @   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 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 Z.edgddddd Z/d d! Z0ed"gdd#d$d%d& Z1ed'd(gd)d* Z2ed+ge3 d,krd nd-d.d/d0 Z4ed1gd2d3 Z5d4d5 Z6ed6gdd#d7d8id9d:d; Z7d<d= Z8e%j9:d>d?d@ge%j9:dAdBdCdDdEdFgdGdH Z;dIdJ Z<dKdL Z=dS )M    )productN)cbook)
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               
      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st|d jt	
d| kst|d jt	
d| kst|d jt	
d| kst|d j|d j t	
d| ks t|d j|d j t	
d| ksHt|d j|d j t	
d| kspt|d j|d j t	
d| kst|d j|d j  kr|d jksn t|d j|d j  kr|d jksn t|d j|d j  kr"|d jks(n t|d j|d j  krR|d jksXn td S )Ntop333333?皙?)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    F/tmp/pip-unpacked-wheel-wjyw_3jo/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AssertionErrorwidthZy0y1Zx0x1)figaxdividerZrendererZbboxesr,   r    r#   r$   test_divider_append_axes   s0    

((((000r7   Ztwin_axes_empty_and_removedZpng   )
extensionstolc                  C   s@  t jddi t jddi t jddi 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 qtjddd d S )Nz	font.size   zxtick.labelsizezytick.labelsizeZtwinxZtwinytwin zhost invisibleztwin removedztwin invisibleztwin removed
host invisibler8            ?r   center)ZhorizontalalignmentZverticalalignmentF
)ZwspaceZhspace)
matplotlibZ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_removed8   s8    

 


 rS   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 )No   r8   r8   r8   Lr   Zsingle)nrows_ncolsZngridsZ
label_modeZcbar_locationZ	cbar_modei'  
   r   nearest)interpolationZnorm)
r&   figurer   nprandomZrandimshowr   Z	cbar_axesZcolorbar)r4   gridZimr    r    r$   $test_axesgrid_colorbar_log_smoketestU   s    rb   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rg         rq      rY   lowerextentrZ   origin   upper rightZzoomloc   Znbinsg      gg      gffffffFZvisibler>   none0.5loc1loc2fcecr?   lower centerr   rz   r   	borderpadsepframeon)r&   r'   r   get_sample_datar\   zerosshaper^   r   yaxisget_major_locator
set_paramsxaxisset_xlimset_ylimxticksyticksr   r   	transData
add_artistr4   r5   r`   ru   ZZ2nyZnxaxinsr3   Zx2r2   y2Zasbr    r    r$   test_inset_locatore   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 )Nrf   rg   rh   rj   Trk   rl   rp   rr   rY   rs   rt         ?rU   )r1   r-   bbox_to_anchorbbox_transformr{   r|   r}   Fr~   r>   r   r   r   r?   r   r   r   )r&   r'   r   r   r\   r   r   r^   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 )Nd   )rw   rf   )ri   r,   r   ?g       @r   )r1   r-   r   r8   z40%z30%)g(\?gQ?r   r   r   r   )   r   ro   )r1   r-   r   rz   r   g      i@g      Y@z35%z60%)r1   r-   rz   r   z100%)r   r   gffffff?333333?)r1   r-   r   r   rz   r   )皙?r?   )r1   r-   r   )r1   r-   r   )r&   r'   rK   r   r)   r*   r   get_positionextentsr\   arrayr   r   r.   Zraises
ValueErrorZwarnsUserWarning)r,   ri   r4   r5   ZinsZins1Zins2r    r    r$   test_inset_axes_complete   sf    
  

 
    

r   zfill_facecolor.pngZmpl20)re   rd   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 )Nr8   rf   rg   Fr   r   r   r>   ro   rb)loc1aloc2aloc1bloc2br   r   rx   )rz   皙?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   rI   Z
tick_rightr   Zfrom_extentsr   r   r   Zset_clip_on	add_patchr   r   r   gcaaxesr   Z	set_ticksr   )r4   r5   rO   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 )	Nr8   r>   ro   g      @zlower rightry   g?gffffff?)r&   r'   plotrH   r   )r4   r5   Zinset_axr    r    r$   test_zooming_with_inverted_axes6  s    r   zanchored_direction_arrows.pngx86_64g{Gz?)r:   c                  C   s<   t  \} }|jtddd t|jdd}|| d S )NrX   rX   rY   rZ   XY)r&   r'   r^   r\   r   r   r   r   )r4   r5   Zsimple_arrowr    r    r$   test_anchored_direction_arrowsE  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Brx   Zredg      r   r>   Tgffffff?gQg{Gzr   	   rX   rf   )rz   r   Zaspect_ratior   r   r   alphaZsep_xZsep_yZback_lengthZ
head_widthZhead_lengthZ
tail_width)r&   r'   r^   r\   Zonesr   r   r   )r4   r5   Zdirection_arrowsr    r    r$   (test_anchored_direction_arrows_many_argsO  s*                r   c                  C   sL   t  \} }t|}|jdddd}| j  t|jddj	dsHt
d S )Nr   z5%z2%)sizer   F)originalg@/Ċ?)r&   r'   r   r(   r)   r*   r\   iscloser   r1   r0   )r4   r5   r6   Zcaxr    r    r$   test_axes_locatable_position\  s    
r   zimage_grid.pngZbbox_inchesZtight)re   rd   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   r8   )rg   rg   rT   )r>   r>   r   )rW   Zaxes_padrg   rY   r   ztest {0}{0})
r\   arangereshaper&   r[   r   r   r^   	set_titleformat)ra   r4   r_   rO   r    r    r$   test_image_gride  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)r;   rw   rh   r8   r>   ro   r   rg   r   z0.3r   g333331g+g@g@)r&   r'   r   r   r   r	   Zget_tightbboxr)   r+   r\   Ztestingr   r   )r4   r5   lZax_zoomr   r    r    r$   test_gettightbboxt  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sd|krt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   r?   rf   )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   rT   r   )333333?r   )r?   r?   Zbutton_press_eventr8   )buttonr   r>   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   r<   r   r   Z	transformr   r[   ZpickrD   r0   )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st|j|j td
kstd S )N   )rg   rf   )rf   rg   r8   r>   r?   rT   )Z
horizontalZverticalr   g|Gz?)r\   r   r   r&   r'   r^   r   SizeZAxesXZFixedZAxesYZScaledZset_axes_locatorZnew_locatorr)   r*   r   r-   r0   r1   r.   r/   )	Zarr1Zarr2r4   Zax1Zax2r   r6   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 )NrT   rU   )rW   
axes_class)r&   r[   mpl_toolkitsZ
axes_grid1Zmpl_axesZAxesr   )r4   r   Zgrr    r    r$   test_axes_class_tuple  s    r   )>	itertoolsr   platformrB   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   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   r.   Znumpyr\   Znumpy.testingr   r   r7   rS   rb   r   r   r   r   r   machiner   r   r   r   r   markZparametrizer   r   r   r    r    r    r$   <module>   sl   

)
,,
M



	 
2