U
    d»{j±¡  ã                
   @   s2  d dl Z d dlmZ d dlZd dlmZ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mZmZmZ d dlm Z m!Z! d dl"m#Z# dd„ Z$e!d	gƒd
d„ ƒZ%e!dgƒdd„ ƒZ&e!dgƒdd„ ƒZ'e!dgƒdd„ ƒZ(e!dgƒdd„ ƒZ)e!dgƒdd„ ƒZ*e!dgƒdd„ ƒZ+e!dgƒdd „ ƒZ,e!d!gƒd"d#„ ƒZ-e!d$gƒd%d&„ ƒZ.e!d'd'd(gƒd)d*„ ƒZ/e!d+gƒd,d-„ ƒZ0d.d/„ Z1d0d1„ Z2d2d3„ Z3d4d5„ Z4e
j5 6d6¡e d7gd8�d9d:„ ƒƒZ7d;d<„ Z8d=d>„ Z9e!d?gd@dA�dBdC„ ƒZ:e!dDgd@dA�dEdF„ ƒZ;e!dGgd@dA�dHdI„ ƒZ<e!dJgd@dA�dKdL„ ƒZ=dMdN„ Z>dOdP„ Z?dQdR„ Z@dSdT„ ZAdUdV„ ZBdWdX„ ZCe!dYgd@dA�dZd[„ ƒZDd\d]„ ZEe
j5 6d^¡d_d`„ ƒZFe
j5 6d^¡dadb„ ƒZGe
j5 6d^¡dcdd„ ƒZHe!degƒdfdg„ ƒZIe!dhgd@d^di�djdk„ ƒZJdldm„ ZKdndo„ ZLdpdq„ ZMdrds„ ZNdtdu„ ZOdvdw„ ZPdxdy„ ZQejR Sdzd{d|g¡d}d~„ ƒZTejR Sdd@i fd€i fd@eUd€d��fd€eUd‚dƒ�fg¡e d7gd8�d„d…„ ƒƒZVe d7gd8�d†d‡„ ƒZWdˆd‰„ ZXdŠd‹„ ZYdŒd�„ ZZdŽd�„ Z[d�d‘„ Z\d’d“„ Z]d”d•„ Z^e
j5 6d^¡ejR Sd–ej_ej`g¡d—d˜„ ƒƒZad™dš„ Zbd›dœ„ Zcd�dž„ ZddŸd „ Zed¡d¢„ Zfd£d¤„ ZgdS )¥é    N)ÚSimpleNamespace)Úassert_array_equalÚassert_array_almost_equal)Ú
CollectionÚLineCollectionÚEventCollectionÚPolyCollectionÚQuadMesh)Úcheck_figures_equalÚimage_comparison)ÚMatplotlibDeprecationWarningc               
   C   sÀ   t  ddddddddg¡} t  d	d
dg¡}d}d}d}d}ddddg}d}d}t| |||||||d�}	t ¡ \}
}| |	¡ | d¡ | ||||||||dœ	}| dd¡ | dd¡ ||	|fS )z,Generate the initial collection and plot it.ç        ç      ð?ç       @ç      @g      @g       @g      *@g      5@g      A@g     €K@g     @V@Ú
horizontalé   ç      à?é   r   ÚsolidT)ÚorientationÚ
lineoffsetÚ
linelengthÚ	linewidthÚcolorÚ	linestyleÚantialiasedzEventCollection: default)	Ú	positionsÚextra_positionsr   r   r   r   r   r   r   éÿÿÿÿé   )	ÚnpÚarrayr   ÚpltÚsubplotsÚadd_collectionÚ	set_titleÚset_xlimÚset_ylim)r   r   r   r   r   r   r   r   r   ÚcollÚfigÚaxÚprops© r-   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/matplotlib/tests/test_collections.pyÚgenerate_EventCollection_plot   sD    ù


ø
r/   ZEventCollection_plot__defaultc                  C   sÊ   t ƒ \} }}t||d |d |d |d ƒ tj |d | ¡ ¡ |d | ¡ ksVt‚| ¡ sbt‚|d | 	¡ ksvt‚|d | 
¡ ksŠt‚| ¡ dgksœt‚| ¡ f| ¡ •D ]}tj ||d ¡ q®d S )Nr   r   r   r   ©r   Nr   )r/   Úcheck_segmentsr!   Útestingr   Úget_positionsÚget_orientationÚAssertionErrorÚis_horizontalÚget_linelengthÚget_lineoffsetZget_linestyleÚ	get_colorÚ
get_colors)Ú_r)   r,   r   r-   r-   r.   Ú test__EventCollection__get_props=   s    ür<   Z#EventCollection_plot__set_positionsc                  C   st   t ƒ \} }}t |d |d g¡}| |¡ tj || ¡ ¡ t|||d |d |d ƒ |  d¡ |  	dd¡ d S )	Nr   r   r   r   r   zEventCollection: set_positionsr   éZ   )
r/   r!   ÚhstackZset_positionsr2   r   r3   r1   r&   r'   ©Úspltr)   r,   Únew_positionsr-   r-   r.   Ú$test__EventCollection__set_positionsW   s    
ý
rB   Z#EventCollection_plot__add_positionsc                  C   s�   t ƒ \} }}t |d |d d g¡}| ¡  | |d d ¡ | ¡  tj || ¡ ¡ t|||d |d |d ƒ |  	d¡ |  
dd	¡ d S )
Nr   r   r   r   r   r   zEventCollection: add_positionsr   é#   )r/   r!   r>   Úswitch_orientationZadd_positionsr2   r   r3   r1   r&   r'   r?   r-   r-   r.   Ú$test__EventCollection__add_positionse   s     

ÿü
rE   Z&EventCollection_plot__append_positionsc                  C   s€   t ƒ \} }}t |d |d d g¡}| |d d ¡ tj || ¡ ¡ t|||d |d |d ƒ |  d¡ |  	dd	¡ d S )
Nr   r   r   r   r   r   z!EventCollection: append_positionsr   r=   )
r/   r!   r>   Zappend_positionsr2   r   r3   r1   r&   r'   r?   r-   r-   r.   Ú'test__EventCollection__append_positionsw   s    

ÿü
rF   Z&EventCollection_plot__extend_positionsc                  C   sˆ   t ƒ \} }}t |d |d dd … g¡}| |d dd … ¡ tj || ¡ ¡ t|||d |d |d ƒ |  d¡ |  	dd	¡ d S )
Nr   r   r   r   r   r   z!EventCollection: extend_positionsr   r=   )
r/   r!   r>   Zextend_positionsr2   r   r3   r1   r&   r'   r?   r-   r-   r.   Ú'test__EventCollection__extend_positions‡   s    
ÿü
rG   Z(EventCollection_plot__switch_orientationc                  C   sz   t ƒ \} }}d}| ¡  || ¡ ks(t‚| ¡ r4t‚| ¡ }t|||d |d |ƒ |  d¡ |  dd¡ |  	dd¡ d S )	NÚverticalr   r   z#EventCollection: switch_orientationr   r    r   r   )
r/   rD   r4   r5   r6   r3   r1   r&   r(   r'   )r@   r)   r,   Únew_orientationrA   r-   r-   r.   Ú)test__EventCollection__switch_orientation—   s     ý
rJ   Z,EventCollection_plot__switch_orientation__2xc                  C   s€   t ƒ \} }}| ¡  | ¡  | ¡ }|d | ¡ ks8t‚| ¡ sDt‚tj |d |¡ t	|||d |d |d ƒ |  
d¡ dS )zc
    Check that calling switch_orientation twice sets the orientation back to
    the default.
    r   r   r   r   z&EventCollection: switch_orientation 2xN)r/   rD   r3   r4   r5   r6   r!   r2   r   r1   r&   r?   r-   r-   r.   Ú,test__EventCollection__switch_orientation_2x¨   s    ürK   Z%EventCollection_plot__set_orientationc                  C   sx   t ƒ \} }}d}| |¡ || ¡ ks*t‚| ¡ r6t‚t||d |d |d |ƒ |  d¡ |  dd¡ |  dd	¡ d S )
NrH   r   r   r   z EventCollection: set_orientationr   r    r   r   )	r/   Zset_orientationr4   r5   r6   r1   r&   r(   r'   )r@   r)   r,   rI   r-   r-   r.   Ú&test__EventCollection__set_orientation½   s    
ü
rL   Z$EventCollection_plot__set_linelengthc                  C   s`   t ƒ \} }}d}| |¡ || ¡ ks*t‚t||d ||d |d ƒ |  d¡ |  dd¡ d S )Né   r   r   r   zEventCollection: set_linelengthiìÿÿÿé   )r/   Zset_linelengthr7   r5   r1   r&   r(   )r@   r)   r,   Znew_linelengthr-   r-   r.   Ú%test__EventCollection__set_linelengthÎ   s    
ü
rO   Z$EventCollection_plot__set_lineoffsetc                  C   s`   t ƒ \} }}d}| |¡ || ¡ ks*t‚t||d |d ||d ƒ |  d¡ |  dd¡ d S )Ng      Àr   r   r   zEventCollection: set_lineoffsetiúÿÿÿéüÿÿÿ)r/   Zset_lineoffsetr8   r5   r1   r&   r(   )r@   r)   r,   Znew_lineoffsetr-   r-   r.   Ú%test__EventCollection__set_lineoffsetÝ   s    
ü
rQ   Z#EventCollection_plot__set_linestyleZ#EventCollection_plot__set_linewidthc                  C   sj   dddgfdddgfdfD ]J\} }}t ƒ \}}}|jf | |iŽ t || ¡|ksTt‚| d| › �¡ qd S )Nr   Údashed)r   )ç      @rS   )r   é   rT   zEventCollection: set_)r/   Úsetr#   Zgetpr5   r&   )ÚpropÚvalueÚexpectedr@   r)   r;   r-   r-   r.   Útest__EventCollection__set_propì   s    

ýrY   ZEventCollection_plot__set_colorc                  C   s\   t ƒ \} }}t ddddg¡}| |¡ | ¡ f| ¡ •D ]}tj ||¡ q:|  d¡ d S )Nr   r   zEventCollection: set_color)	r/   r!   r"   Ú	set_colorr9   r:   r2   r   r&   )r@   r)   r;   Ú	new_colorr   r-   r-   r.   Ú test__EventCollection__set_colorý   s    
r\   c           
      C   sÎ   |   ¡ }| ¡ dks(| ¡ dks(|dkr2d}d}n| ¡ dkrHd}d}ntdƒ‚t|ƒD ]p\}}	|	d|f ||d  ks|t‚|	d|f ||d  ks˜t‚|	d|f || ks°t‚|	d|f || ksXt‚qXdS )	zp
    Test helper checking that all values in the segment are correct, given a
    particular set of inputs.
    r   ÚnoneNr   r   rH   z.orientation must be 'horizontal' or 'vertical'r   )Úget_segmentsÚlowerÚ
ValueErrorÚ	enumerater5   )
r)   r   r   r   r   ÚsegmentsZpos1Úpos2ÚiÚsegmentr-   r-   r.   r1     s"    
ÿÿr1   c                  C   s4   t  g ¡} |  t ¡ ¡}t| ¡ tj ¡  ¡ ƒ d S ©N)	ÚmcollectionsÚPathCollectionÚget_datalimÚmtransformsÚIdentityTransformr   Ú
get_pointsÚBboxÚnull)ÚcolZcol_data_limr-   r-   r.   Útest_null_collection_datalim!  s
    
ÿrp   c                  C   sR   t  ¡ } t t ddg¡g¡}|  |¡ | t 	¡ ¡}t
| ¡ tj ¡  ¡ ƒ d S )N©r   r   )r   r   )r#   Úaxesrg   rh   ÚmpathÚPathr%   ri   rj   rk   r   rl   rm   rn   )r+   r)   Zcoll_data_limr-   r-   r.   Útest_no_offsets_datalim(  s    
ÿru   c                  C   sL   t  ¡  t  ¡ } |  ddgddg¡ | jj}|  g g ¡ | jj|ksHt‚d S )Nr   r   )r#   Úfigurerr   ÚscatterÚdataLimÚboundsr5   )r+   ry   r-   r-   r.   Útest_add_collection3  s    rz   Zmpl20Zpng)Ú
extensionsc                 C   sÀ   ddddddddd	d
dddddg}dddddddddddddg}t  ||¡\}}| ¡ }| ¡ }|  ¡ }| d¡ | d¡ d|_| ||¡ | ¡ }| d¡ | d¡ |j||dd d!� d S )"Ng¥+ócÒ>gë®`8�F×>gq�[€;uÝ>gƒy7½/¤â>gÖÿ9Ì—ç>gWÇ!Üí>gÄ-–Iåò>g\p5ê÷>gd‘jDþ>g—y¹´K'?gÈ~Í+»=?gFEAL ®?g��|™0j?gÇ÷GKe’?gÞ�´=B?r   çš™™™™™¹?g²�ï§ÆKÇ?gsh‘í|?Õ?g‡ÙÎ÷Sã?gš™™™™™ñ?r   g…ëQ¸@g�Âõ(\�@g333333(@g      6@gÍÌÌÌÌÌC@g33333ÓQ@Úlogr   ÚoÚ )ÚmarkerÚls)	r!   ÚmeshgridÚflattenr$   Z
set_xscaleZ
set_yscaleZmarginsrw   Zplot)Úfig_testÚfig_refZx_valsZy_valsÚxÚyZax_testZax_refr-   r-   r.   Útest_collection_log_datalim>  s8    
        þ ÿ



rˆ   c                  C   sä   t  ¡ } t d¡t d¡ }}t ddd¡ dd¡ }}t  ||||¡}| | j¡j	dks^t
‚t  ¡  t  ¡ } t ddd¡}t dd	d¡}t ||¡\}}t ¡  d
d¡| j }t j||t |¡t |¡|d� | jj	dksàt
‚d S )Né   é
   r   éP   )r   r   g      @g      "@éûÿÿÿrN   éþÿÿÿé   é   é    ©Ú	transform)g      4@g      >@g      .@rS   )r#   rr   r!   ÚarangeÚlinspaceÚreshapeZquiverri   Ú	transDatary   r5   rv   r‚   rj   ÚAffine2DÚ	translateÚsinÚcosrx   )r+   r†   r‡   ÚuÚvÚqÚtransr-   r-   r.   Útest_quiver_limitsX  s     rŸ   c                  C   s€   t  ¡ } t ddd¡}t ddd¡}t ||¡\}}t ¡  dd¡| j }t j	||t 
|¡t |¡|d� t| jjd	d
d� d S )NrŒ   rŠ   rN   r�   rŽ   r�   r�   r‘   )rN   é   rM   é   r   ©Údecimal)r#   rr   r!   r”   r‚   rj   r—   r˜   r–   Zbarbsr™   rš   r   rx   ry   )r+   r†   r‡   rž   r-   r-   r.   Útest_barb_limitsi  s     
ÿr¤   z EllipseCollection_test_image.pngT)Úremove_textc               	   C   sž   t  ¡ \} }t d¡}t d¡}t ||¡\}}t | ¡ | ¡ f¡j}||d  }||d  }t |¡d }	t	j
|||	d||jdd�}
| |
¡ | ¡  d S )NrŽ   é   r   rN   r†   r]   )ÚunitsÚoffsetsÚoffset_transformÚ
facecolors)r#   r$   r!   r“   r‚   ZvstackÚravelÚTZ	ones_likerg   ÚEllipseCollectionr–   r%   Úautoscale_view)r*   r+   r†   r‡   ÚXÚYZXYZwwÚhhÚaaÚecr-   r-   r.   Útest_EllipseCollectionw  s&    

     þ
r´   zpolycollection_close.pngc                  C   sR  ddl m}  ddgddgddgddggddgddgddgddggddgddgddgddggddgddgddgddggg}t ¡ }| | |dd	�¡}d
ddddg}ttdƒƒ}tj|t	|ƒ dd�}| 
d¡ g }g }t||ƒD ]0\}	}
| |	gt	|ƒ ¡ | |
gt	|ƒ ¡ qÞ| |¡ |j||dd� | dd¡ | dd¡ | dd¡ d S )Nr   )ÚAxes3Dr   r   r   r   ç      @F)Zauto_add_to_figureÚrÚgÚbr‡   ÚkrT   ç      Ð?©r   gffffffæ?)ÚzsZzdirrŽ   r¦   )Zmpl_toolkits.mplot3drµ   r#   rv   Zadd_axesÚlistÚrangerg   r   ÚlenÚ	set_alphaÚzipÚextendrZ   Zadd_collection3dZ
set_xlim3dZ
set_zlim3dZ
set_ylim3d)rµ   Z	vertsQuadr*   r+   ÚcolorsZzposZpolyr½   ÚcsÚzÚcr-   r-   r.   Útest_polycollection_close‹  s2    ü
 ÿ

rÈ   z regularpolycollection_rotate.pngc            	      C   sš   t jd d…d d…f \} }t  |  ¡ | ¡ g¡}t  ddt j t|ƒ¡}t ¡ \}}t	||ƒD ].\}}t
jdd||g|jd�}|j|dd� q^| ¡  d S )	NrŠ   r   r   rŽ   )éd   )ÚsizesÚrotationr¨   r©   T©Zautolim)r!   ZmgridZ	transposerƒ   r”   ÚpirÀ   r#   r$   rÂ   rg   ÚRegularPolyCollectionr–   r%   r®   )	ÚxxÚyyZ	xy_pointsZ	rotationsr*   r+   ÚxyÚalpharo   r-   r-   r.   Ú!test_regularpolycollection_rotate°  s       þrÓ   zregularpolycollection_scale.pngc                  C   sd   G dd„ dt jƒ} t ¡ \}}dg}tjd g}| |||jd�}|j|dd� | dd	dd	g¡ d S )
Nc                       s$   e Zd Z‡ fdd„Zdd„ Z‡  ZS )z:test_regularpolycollection_scale.<locals>.SquareCollectionc                    s    t ƒ jddtjd i|—Ž d S )NrŽ   rË   r¶   )rŽ   )ÚsuperÚ__init__r!   rÍ   )ÚselfÚkwargs©Ú	__class__r-   r.   rÕ   Ä  s    zCtest_regularpolycollection_scale.<locals>.SquareCollection.__init__c                 S   sJ   | j }d|jj }||jj |jj }||jj |jj }t ¡  	||¡S )z4Return transform scaling circle areas to data space.g      R@)
rr   rv   ÚdpiZbboxÚwidthZviewLimÚheightrj   r—   Úscale)rÖ   r+   Z
pts2pixelsZscale_xZscale_yr-   r-   r.   Úget_transformÇ  s
    zHtest_regularpolycollection_scale.<locals>.SquareCollection.get_transform)Ú__name__Ú
__module__Ú__qualname__rÕ   rÞ   Ú__classcell__r-   r-   rØ   r.   ÚSquareCollectionÃ  s   rã   rq   r   )rÊ   r¨   r©   TrÌ   r   r   )	rg   rÎ   r#   r$   r!   rÍ   r–   r%   Úaxis)rã   r*   r+   rÑ   Zcircle_areasZsquaresr-   r-   r.   Ú test_regularpolycollection_scale¿  s      ÿrå   c                  C   sn   t  ¡ \} }|jdgdgdgdd�}| jt ¡ | jd� tddd�}| |¡\}}|sZt	‚t
|d	 dgƒ d S )
Nr   iè  T)Zpicker)rÚ   iE  éð   )r†   r‡   Úind)r#   r$   rw   ZsavefigÚioÚBytesIOrÚ   r   Úcontainsr5   r   )r*   r+   ro   Úmouse_eventÚfoundÚindicesr-   r-   r.   Útest_pickingÜ  s    rî   c                  C   sô   t  d¡} | d d …d f | d d d …f  }t ¡ \}}| |¡}| ¡  d\}}| ¡  ||f¡\} }t||| |d�}| 	|¡\}	}
|	sŒt
‚t|
d dgƒ d\}}| ¡  ||f¡\} }t||| |d�}| 	|¡\}	}
|	sàt
‚t|
d dgƒ d S )NrŽ   ©r   r   ©ÚxdataÚydatar†   r‡   rç   r   ©ç      ø?rô   rT   )r!   r“   r#   r$   Ú
pcolormeshÚdraw_without_renderingrÞ   r’   r   rê   r5   r   )r†   r¯   r*   r+   Úmeshrñ   rò   r‡   rë   rì   rí   r-   r-   r.   Útest_quadmesh_containsæ  s"    
 
rø   c                  C   sª   ddgddgg} ddgddgg}t  ¡ \}}| | |dgg¡}| ¡  ddddg}|D ]N}|\}}}	| ¡  ||f¡\} }t||| |d�}
| |
¡\}}||	ksVt‚qVd S )	Nr   r   r   )ç      à¿r»   T)r   r»   F)r   r»   T)r   g      Ð¿Trð   )	r#   r$   rõ   rö   rÞ   r’   r   rê   r5   )r†   r‡   r*   r+   r÷   ZpointsÚpointrñ   rò   rX   rë   rì   rí   r-   r-   r.   Útest_quadmesh_contains_concaveü  s     ý
rû   c            	      C   s¶   t  d¡} | d d …d f | d d d …f  }t ¡ \}}| |¡}d |_| ¡  d\}}| ¡  ||f¡\} }t	||| |d�}| 
|¡d ksŽt‚| t  |j¡¡ t| 
|¡dgƒ d S )NrŽ   rï   rð   r   )r!   r“   r#   r$   rõ   Z_Arö   rÞ   r’   r   Úget_cursor_datar5   Ú	set_arrayÚonesÚshaper   )	r†   r¯   r*   r+   r÷   rñ   rò   r‡   rë   r-   r-   r.   Útest_quadmesh_cursor_data  s    
 
r   c                  C   s|   ddddg} t  ¡ \}}| | | t d¡¡}| ¡  d\}}| ¡  ||f¡\} }t||| |d�}t	| 
|¡t d¡ƒ d S )Nr   r   ©r¦   r¦   ró   rð   é	   )r#   r$   rõ   r!   rþ   rö   rÞ   r’   r   r   rü   )r†   r*   r+   r÷   rñ   rò   r‡   rë   r-   r-   r.   Ú)test_quadmesh_cursor_data_multiple_points%  s    r  c                   C   s0   t jdddgdddgdddgfd� t  ¡  d S )Nr   r   r   r   r   )r   )r#   rw   Údrawr-   r-   r-   r.   Útest_linestyle_single_dashes1  s    $r  zsize_in_xy.pngc                  C   s`   t  ¡ \} }d\}}}d}ddg}tj|||d||jd�}| |¡ | dd¡ | dd¡ d S )N)©rŠ   rŠ   rŠ   r   r  )rM   rM   rÑ   )r§   r¨   r©   r   r    )r#   r$   rg   r­   r–   r%   r'   r(   )r*   r+   ÚwidthsZheightsZanglesÚcoordsÚer-   r-   r.   Útest_size_in_xy6  s    
    þ
r
  c                 C   s”   dddg}| j dddg|d� }}| j dd	d
g|d�}| j dddg|d�}| j dddg|d�}t|d� t|d� t|d� t|d� t|d� d S )Né   é   é   ÚredÚblueÚgreen)Úindexr   r   r¦   r   rR   ZdashdotTF)Ú
edgecolors)rª   )Ú
linewidths)Z
linestyles)Zantialiaseds)ZSeriesr   )Úpdr  r³   ÚfcZlwr�   r²   r-   r-   r.   Útest_pandas_indexingG  s    




r  Údefaultc                  C   sœ   t  g ¡} |  ddg¡ |  dddg¡ |  ¡ dgd ks>t‚|  ¡ dddgd ksXt‚|  dddg¡ |  ¡ dgd ks~t‚|  ¡ dddgk ¡ s˜t‚d S )Nú-r   r   r¦   r0   r¡   )rg   rh   Zset_linestylesZset_linewidthsZget_linestylesr5   Zget_linewidthsÚall©ro   r-   r-   r.   Útest_lslw_bcastX  s    
r  c                  C   s<   t jg dd�} |  ¡ dkst‚|  d¡ |  ¡ dks8t‚d S )NÚround)ZcapstyleZbutt)rg   rh   Zget_capstyler5   Úset_capstyler  r-   r-   r.   Útest_capstylef  s    
r  c                  C   s<   t jg dd�} |  ¡ dkst‚|  d¡ |  ¡ dks8t‚d S )Nr  )Z	joinstyleÚmiter)rg   rh   Zget_joinstyler5   Úset_joinstyler  r-   r-   r.   Útest_joinstylen  s    
r!  zcap_and_joinstyle.pngc                  C   sÔ   t  ¡ \} }| ddg¡ | ddg¡ t dddg¡}t dgdgdgg¡t dddgg¡ }t d¡}||d d …d d …df< ||d d …d d …d	f< t|d
ddgd�}| d¡ | 	d¡ | 
|¡ | d¡ d S )Nrù   rô   ç      @r   r   r   )r¦   r¦   r   r   r   rŠ   rM   rN   r¼   r  r  z2Line collection with customized caps and joinstyle)r#   r$   r'   r(   r!   r"   Zzerosr   r  r   r%   r&   )r*   r+   r†   ZysZsegsZline_segmentsr-   r-   r.   Útest_cap_and_joinstyle_imagev  s    (



r#  zscatter_post_alpha.png)r¥   Ústylec                  C   s6   t  ¡ \} }|jtdƒtdƒtdƒd�}| d¡ d S )NrT   ©rÇ   r|   )r#   r$   rw   r¿   rÁ   )r*   r+   Úscr-   r-   r.   Útest_scatter_post_alphaŠ  s    r'  c                  C   s˜  t  d¡} | d }t d¡\}\}}|j| | | |d�}|j| | | d�}| |¡ t ¡  t| ¡ d d …df |ƒ t| ¡ d d …df |ƒ t d¡\}\}}|j| | dddd	d
g|d�}|j| | d|d�}t ¡  t| ¡ d d …df |ƒ t| ¡ d d …df |ƒ t d¡\}\}}|j| | dddd	d
gd�}| |¡ |j| | dd�}| |¡ t ¡  t| ¡ d d …df |ƒ t| ¡ d d …df |ƒ d S )NrT   r   )rÇ   rÒ   r%  r   r·   r¸   r¹   rÇ   Úm)r   rÒ   )r   )	r!   r“   r#   r$   rw   rÁ   r  r   Úget_facecolors)r†   rÒ   r*   Úax0Úax1Zsc0Zsc1r-   r-   r.   Útest_scatter_alpha_array’  s.    



r,  c                  C   s�  t j d¡ t j dd¡\} }t j d¡}t jjdddd�}t jjdddd�}t ¡ \}}|j| |||dd	dd
�}|jdd�\}}t	|ƒdks’t
‚tt  |¡ t¡t  d¡ƒ t  dd„ |D ƒ¡}	| t  d¡d ¡}
t|	|
ƒ |j||dd�}|jdd�\}}t	|ƒdk�st
‚|j||dd�}|jdddd�\}}t  dd„ |D ƒ¡}t|dƒ t  dd„ |D ƒ¡}t|dƒ |j||dd�}|jddddd„ d�\}}dd„ |D ƒ}t  t  |¡ t¡d ¡}t||ƒ |j||dd�}tjjdd ddd!ddd"d dgd#�}|j|d�\}}t	|ƒt	|ƒk�s&t
‚d$dd%d&g}|j|ddd'�\}}tt  |¡ t¡|dd … ƒ ||||fD ]}| |¡ �qp|j ¡  d S )(Né!N,r   rŠ   r   rT   )Úsizei,  Zjetr~   )rÇ   ÚsÚcmapr€   r  z{x:g})Úfmtc                 S   s   g | ]}|  ¡ ‘qS r-   )r9   ©Ú.0Úliner-   r-   r.   Ú
<listcomp>¼  s     z7test_pathcollection_legend_elements.<locals>.<listcomp>rŽ   r   )Úlocr  )ÚnumrÊ   r   r  )rV   rÒ   r   c                 S   s   g | ]}|  ¡ ‘qS r-   )Z	get_alphar2  r-   r-   r.   r5  Æ  s     c                 S   s   g | ]}|  ¡ ‘qS r-   )Zget_markerfacecolorr2  r-   r-   r.   r5  È  s     z{x:.2f}c                 S   s   d|  S )Nr   r-   )r†   r-   r-   r.   Ú<lambda>Í  ó    z5test_pathcollection_legend_elements.<locals>.<lambda>)rV   r7  r1  Úfuncc                 S   s   g | ]}|  ¡ ‘qS r-   ©Zget_markersizer2  r-   r-   r.   r5  Î  s     r¦   r‰   r"  r¡   )ZnbinsZmin_n_ticksZstepsr   g33333³K@i  )r7  rV   r1  )r!   ÚrandomÚseedZrandÚrandintr#   r$   rw   Úlegend_elementsrÀ   r5   r   r"   ZastypeÚfloatr“   r0  ZlegendÚsqrtr   ÚmplZtickerZMaxNLocatorZ
add_artistÚcanvasr  )r†   r‡   rÇ   r/  r*   r+   r&  ÚhÚlrÄ   Zcolors2Úl1Zh2Zlab2Úl2rÒ   r   Úl3ZactsizesZlabeledsizesÚl4r6  Zh5Zlab5ZlevelsZh6Zlab6r-   r-   r.   Ú#test_pathcollection_legend_elements¯  sR    



ÿ


ÿrJ  c               	   C   s:   t  ddddg¡} t| ƒ}t j | t  ddddg¡¡ d S )Nr¦   r   r   rŠ   )r!   r"   r   r2   r   )Zarrr)   r-   r-   r.   Útest_EventCollection_nosortâ  s    rK  c                  C   s  t jdt jd� ddd¡} t| ƒ}tt| ƒƒ}t|jƒt|jƒksFt‚t	|j|jƒD ]0\}}t  
|j|j¡spt‚t  
|j|j¡sTt‚qTt jdtd�}dd„ | D ƒ|d d …< t|ƒ}t|jƒt|jƒksÊt‚t	|j|jƒD ]0\}}t  
|j|j¡sôt‚t  
|j|j¡sØt‚qØd S )Nr‹   )ZdtyperŠ   rŽ   r   c                 S   s   g | ]}t d d„ |D ƒƒ‘qS )c                 s   s   | ]}t |ƒV  qd S rf   ©Útuple)r3  r‡   r-   r-   r.   Ú	<genexpr>ó  s     z=test_collection_set_verts_array.<locals>.<listcomp>.<genexpr>rL  ©r3  r†   r-   r-   r.   r5  ó  s     z3test_collection_set_verts_array.<locals>.<listcomp>)r!   r“   Údoubler•   r   r¾   rÀ   Ú_pathsr5   rÂ   Úarray_equalÚ	_verticesÚ_codesÚemptyÚobject)ZvertsZcol_arrZcol_listZapZlpZverts_tupleZcol_arr_tupleZatpr-   r-   r.   Útest_collection_set_verts_arrayé  s    rW  c               	   C   sb   t dƒ•} tƒ }| | ¡ tjtdd�� | d¡ W 5 Q R X d| d< t | | ¡ ¡ 	¡ s^t
‚d S )NrŠ   z^Image data of dtype©ÚmatchZwrong_inputé-   rT   )r¿   r   rý   ÚpytestÚraisesÚ	TypeErrorr!   Ú	not_equalÚ	get_arrayÚanyr5   )ÚvalsrÇ   r-   r-   r.   Útest_collection_set_arrayû  s    

rb  c                  C   sž   dddg} d}t  t  | d¡t  d|gt| ƒ¡g¡}| t| ƒddg¡}t ¡ \}}t 	|j
|j¡}| t||d�¡ |jddd	� t j | ¡ d
dg¡ d S )Nr   r   rŽ   çš™™™™™É?r   r‘   TF)ZscalexZscaleyr   r¶   )r!   Zcolumn_stackÚrepeatÚtilerÀ   r•   r#   r$   rj   Zblended_transform_factoryr–   Ú	transAxesr%   r   r®   r2   Úassert_allcloseÚget_xlim)ÚarÜ   Zxy_pairsZ	line_segsÚfr+   rž   r-   r-   r.   Útest_blended_collection_autolim  s    
&rk  c                  C   sH   t  ¡ \} }| dd¡ tj | ¡ ddg¡ tj | ¡ ddg¡ d S )Nr   g¸…ëQ¸®¿g¸…ëQ¸®?)r#   r$   rw   r!   r2   rg  Úget_ylimrh  )r*   r+   r-   r-   r.   Útest_singleton_autolim  s    rm  ztransform, expected)r–   )rù   g      @)rf  )gffffff@gš™™™™™	@c                 C   sV   t  ¡ \}}|jddt|| ƒd� | dd¡ tj | ¡ |¡ tj | ¡ |¡ d S )Nr   r‘   r¦   )	r#   r$   rw   Úgetattrr!   r2   rg  rl  rh  )r’   rX   r*   r+   r-   r-   r.   Útest_autolim_with_zeros   s
    	ro  zflat_ref, kwargsF)r   Z__initialization_delayed__r‘   c              	   C   sv  ddddg}dddg}t  ||¡\}}|d| 7 }t j||gdd�}|jdksRt‚t  ddd	¡ dd
¡}	|  ¡ }
|
jddd� d|kržt	 
¡  d¡|
j |d< t|f|Ž}| |	¡ |
 |¡ |jdksÌt‚| ¡ }
|
jddd� d|k�rt	 
¡  d¡|
j |d< t t¡�, td
d|�r,| ¡  dd¡n|f|Ž}W 5 Q R X | |�rR|	 ¡ n|	¡ |
 |¡ |jdk�srt‚d S )Nr   r   r   r   rc  r   ©rä   ©r¦   rŽ   r   r¡   r¦   ©r   rT   ©r   rŽ   ©ZxlimZylimr’   g333333ó?Zflat)r!   r‚   Ústackrÿ   r5   r”   r•   Úadd_subplotrU   rj   r—   rÝ   r–   r	   rý   r%   Z_shadingr[  Úwarnsr   Úcopyrƒ   )r„   r…   Zflat_refr×   r†   r‡   r¯   r°   r  ÚCr+   Úqmeshr-   r-   r.   Ú"test_quadmesh_deprecated_signature0  s8    



ÿþ
r{  c              	   C   s  ddl m} ddddg}dddg}t ||¡\}}|d| 7 }tj||gdd�}|jd	ks^t‚t ddd
¡ dd¡}|  	¡ }	|	j
ddd� ||ddd�}
|
 |¡ |	 |
¡ | 	¡ }	|	j
ddd� t t¡�" |dd| ¡  dd¡ddƒ}
W 5 Q R X |
 |¡ |	 |
¡ d S )Nr   )r	   r   r   r   rc  r   rp  rq  r  r¦   rŽ   rr  rs  rt  FÚgouraud)r   Úshading)Úmatplotlib.collectionsr	   r!   r‚   ru  rÿ   r5   r”   r•   rv  rU   rý   r%   r[  rw  r   rx  )r„   r…   r	   r†   r‡   r¯   r°   r  ry  r+   rz  r-   r-   r.   Ú#test_quadmesh_deprecated_positionalY  s,    


 ÿ
r  c               	   C   s   t  d¡} t  d¡}t j d¡}t ¡ \}}| | ||¡}t t¡� | 	| 
dd¡¡ W 5 Q R X t  d¡ 
d¡}tjtdd	�� | 	|¡ W 5 Q R X tjtd
d	�� | 	| ¡ ¡ W 5 Q R X t  d¡} t  d¡}t j d¡}t ¡ \}}|j| ||dd�}d S )Nr  r‰   )é   rŠ   rŠ   r€  é6   )r¡   r  zFDimensions of A \(6, 9\) are incompatible with X \(11\) and/or Y \(8\)rX  zEDimensions of A \(54,\) are incompatible with X \(11\) and/or Y \(8\)r|  ©r}  )r!   r“   r<  r#   r$   rõ   r[  rw  r   rý   r•   r\  r]  r«   ©r†   r‡   rÆ   r*   r+   r)   r-   r-   r.   Ú"test_quadmesh_set_array_validationw  s"    



r„  c                  C   sd   dddg} dddg}t jdd�}t  | |¡\}}t |||¡}t  |j|jg¡j}t| ¡ |ƒ d S )Nr   r   r   rŽ   r¡   )r   r   )rÿ   )	r!   rþ   r‚   r#   rõ   ru  r¬   r   Zget_coordinates)r†   r‡   rÆ   rÏ   rÐ   r)   r  r-   r-   r.   Útest_quadmesh_get_coordinates‘  s    

r…  c                  C   s<  t  d¡} t  d¡}t  d¡ d¡}t ¡ \}}| | |t  |j¡¡}| |¡ |j	 
¡  t  | ¡ |¡snt‚| t  d¡¡ |j	 
¡  t  | ¡ t  d¡¡s¢t‚t  d¡ d¡}t ¡ \}}|j| |t  |j¡dd�}| |¡ |j	 
¡  t  | ¡ |¡�st‚| t  d¡¡ |j	 
¡  t  | ¡ t  d¡¡�s8t‚d S )NrŽ   r  r  é   )rŽ   rŽ   r|  r‚  )r!   r“   r•   r#   r$   rõ   rþ   rÿ   rý   rC  r  rR  r_  r5   rƒ  r-   r-   r.   Útest_quadmesh_set_array�  s(    







r‡  c                  C   s®   t  ¡ \} }tjd }tjjddd�}|jdgg||d�}| j ¡  t	 
| ¡ dd d …f ||dƒƒ¡slt‚d\|_|_| j ¡  t	 
| ¡ dd d …f ||dƒƒ¡sªt‚d S )NZplasmar   r   )ÚvminÚvmax)r0  Únorm)r   r   )r#   r$   rB  Z	colormapsrÄ   Z	Normalizerõ   rC  r  r!   rR  r)  r5   rˆ  r‰  )r*   r+   r0  rŠ  r)   r-   r-   r.   Útest_quadmesh_vmin_vmax»  s    

(
r‹  c            
      C   s,  t  d¡} t  d¡}t  d¡ d¡}|| ¡  }| ¡ }t d¡\}\}}|j| |||d�}| | ||¡}	|	 |¡ t 	¡  t
| ¡ d d …df |ƒ t
|	 ¡ d d …df |ƒ t d¡\}\}}|j| |||d�}| | ||¡}	|	 |¡ t 	¡  t
| ¡ d d …df |ƒ t
|	 ¡ d d …df |ƒ d S )NrŽ   r  r  r   )rÒ   r   )r!   r“   r•   Úmaxr«   r#   r$   rõ   rÁ   r  r   r)  )
r†   r‡   rÆ   rÒ   Z
alpha_flatr*   r*  r+  Zcoll1Zcoll2r-   r-   r.   Útest_quadmesh_alpha_arrayË  s&    



r�  c               	   C   sV   t  ¡ \} }| t d¡ d¡¡}tjtdd�� | 	ddg¡ | 
¡  W 5 Q R X d S )Nr  )r¦   rŽ   z^Data array shaperX  r   ç333333ã?)r#   r$   rõ   r!   r“   r•   r[  r\  r`   rÁ   Úupdate_scalarmappable)r*   r+   Úpcr-   r-   r.   Útest_alpha_validationã  s
    r‘  c                  C   sª   t j d¡ t j d¡} t j d¡}dt j d¡ }d| }ddddg}t ¡ \}}|j| ||d	�}|jd
|dd„ d�\}}	dd„ |D ƒ}
dd„ |
D ƒ}
t|
|dd� dS )z|
    Ensure legend markers scale appropriately when label and size are
    inversely related.
    Here label = 5 / size
    r-  é2   r   rT   rc  gš™™™™™Ù?rŽ  gš™™™™™é?©r/  rÊ   c                 S   s   d|  S )NrT   r-   r“  r-   r-   r.   r8  ý  r9  z=test_legend_inverse_size_label_relationship.<locals>.<lambda>)rV   r7  r:  c                 S   s   g | ]}|  ¡ ‘qS r-   r;  rO  r-   r-   r.   r5    s     z?test_legend_inverse_size_label_relationship.<locals>.<listcomp>c                 S   s   g | ]}d |d  ‘qS )rT   r   r-   rO  r-   r-   r.   r5    s     r¢   N)r!   r<  r=  r#   r$   rw   r?  r   )r¯   r°   ry  ÚSZlegend_sizesr*   r+   r&  ZhandlesÚlabelsZhandle_sizesr-   r-   r.   Ú+test_legend_inverse_size_label_relationshipì  s       ÿ
r–  Úpcfuncc                 C   sŽ  t  d¡ dd¡}| |ddd�}| ¡  t | ¡ ¡}| ¡ | | 	¡ ¡ƒ}t 
| ¡ d¡s`t‚| |ƒ}| d¡ | d¡ | ¡  t 
| ¡ d¡s˜t‚t 
| ¡ ddddgg¡s¶t‚| d	¡ | ¡  t 
| ¡ dddd	gg¡sæt‚| d ¡ | ¡  t 
| ¡ ddddgg¡�st‚| d ¡ | ¡  t 
| ¡ |¡�s@t‚| d ¡ | ¡  t 
| ¡ |¡�sht‚t 
| ¡ d¡�s~t‚| d ¡ | ¡  t 
| ¡ d¡�s¦t‚t 
| ¡ |¡�s¼t‚| | 	¡ ¡ | ¡  t 
| ¡ |¡�sèt‚t 
| ¡ d¡�sþt‚| |d
dd�}| ¡  t 
| ¡ |¡�s*t‚t 
| ¡ ddddgg¡�sJt‚| |d
t  d¡d�}| ¡  t 
| ¡ |¡�s|t‚t 
| ¡ ddddgg¡�sœt‚| d ¡ | ¡  t 
| ¡ t  d¡¡�sÊt‚t 
| ¡ ddddgg¡�sêt‚| |d
t  d¡d�}| ¡  t 
| ¡ |¡�st‚t 
| ¡ ddddgg¡�s<t‚| d ¡ | ¡  t 
| ¡ t  d¡¡�sjt‚t 
| ¡ ddddgg¡�sŠt‚d S )Nr  r¦   rŽ   r  r]   )r  rª   r   r   r   )r   r   r   )r   r   r   )r  r¦   )r  rŽ   )r!   r“   r•   r�  ÚmcolorsZto_rgba_arrayZ_get_default_facecolorZget_cmaprŠ  r«   Ú
same_colorÚget_edgecolorr5   Zset_facecolorZset_edgecolorÚget_facecolorrÁ   rý   rþ   )r—  rÆ   r�  Zface_defaultZmappedr-   r-   r.   Útest_color_logic  sj    



 


  
  
rœ  c               	   C   s”   t d dddddddgd�} |  ¡ d dks.t‚t |  ¡ d¡sBt‚|  ¡ dksRt‚t |  ¡ ddddgg¡spt‚t d d d�} t |  ¡ d¡s�t‚d S )	Ngš™™™™™@r·   r¦   r   r   )r   Z	edgecolorZzorderrª   )Z	facecolorr]   )r   Zget_linewidthr5   r˜  r™  rš  Z
get_zorderr›  )Úlcr-   r-   r.   Útest_LineCollection_argsM  s     
ÿrž  c               	   C   sh   t  d¡ dd¡} t | ¡}tjtdd�� | | ¡ | 	¡  W 5 Q R X t 
| ¡}| | ¡ | 	¡  d S )Nr  r¦   rŽ   z^Collections can only maprX  )r!   r“   r•   r#   Úpcolorr[  r\  r`   rý   r�  rõ   )rÆ   r�  r-   r-   r.   Útest_array_wrong_dimensions[  s    



r   c                  C   sB   t  t  ddd¡d¡j} t| gƒ}| ¡ \}t  | |k¡s>t‚d S )Nr   r   é   )r   r   )r!   re  r”   r¬   r   r^   r  r5   )rb   r�  Zreadbackr-   r-   r.   Útest_get_segmentsf  s    

r¢  c                  C   s~   t  ¡ } dg}tj|d�}tj|dd�}tj|d�}| d¡ | | ¡j}| | ¡j}| | ¡j}||ksnt‚||kszt‚d S )Nr   )rÊ   r  )rÊ   r¨   )rj   rk   rg   ZCircleCollectionÚset_offsetsri   ry   r5   )ÚidentityrÊ   rn   ÚinitÚlateZnull_boundsZinit_boundsZlate_boundsr-   r-   r.   Útest_set_offsets_lateo  s    
r§  c                  C   sT   t  ¡  dd¡} tj| d�}t ¡ }| | ¡ | | ¡   krJ| ¡ ksPn t‚d S )Nr   )r©   )rj   r—   Úskewrg   r   Zset_offset_transformZget_offset_transformr5   )r¨  r¥  r¦  r-   r-   r.   Útest_set_offset_transform„  s
    
r©  c                  C   s¶   t  ddd¡} t  | ¡}| t  dd¡ t  d¡ }t ||¡}| ¡ }| t	t
||ƒƒ¡ t j || ¡ ¡ t ¡ \}}| ||¡}| ¡ }| t	t
||ƒƒ¡ t j || ¡ ¡ d S )Nr   rŠ   rT   é   rD  z
2021-11-29)r!   r”   r™   Ztimedelta64Z
datetime64r#   rw   Zget_offsetsr£  r¾   rÂ   r2   rg  r$   )r†   r‡   Údr&  Zoff0r*   r+   r-   r-   r.   Útest_set_offset_unitsŽ  s    
r¬  )hrè   Útypesr   Únumpyr!   Znumpy.testingr   r   r[  Z
matplotlibrB  Zmatplotlib.pyplotZpyplotr#   r~  Úcollectionsrg   Zmatplotlib.colorsrÄ   r˜  Zmatplotlib.pathÚpathrs   Zmatplotlib.transformsZ
transformsrj   r   r   r   r   r	   Zmatplotlib.testing.decoratorsr
   r   Zmatplotlib._api.deprecationr   r/   r<   rB   rE   rF   rG   rJ   rK   rL   rO   rQ   rY   r\   r1   rp   ru   rz   r$  Úcontextrˆ   rŸ   r¤   r´   rÈ   rÓ   rå   rî   rø   rû   r   r  r  r
  r  r  r  r!  r#  r'  r,  rJ  rK  rW  rb  rk  rm  ÚmarkZparametrizero  Údictr{  r  r„  r…  r‡  r‹  r�  r‘  r–  rŸ  rõ   rœ  rž  r   r¢  r§  r©  r¬  r-   r-   r-   r.   Ú<module>   sî   (









ý

	



$










 ÿ
3þ
ü
"

	
D	
