a
    ضa                  
   @   s  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 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g d(d)d* Z-ed+gd,d- Z.d.d/ Z/d0d1 Z0d2d3 Z1e
j23d4ed5gd6d7d8 Z4d9d: Z5d;d< Z6ed=gd>d?d@dA Z7edBgd>d?dCdD Z8edEgd>d?dFdG Z9edHgd>d?dIdJ Z:dKdL Z;dMdN Z<edOgd>d?dPdQ Z=dRdS Z>e
j23dTdUdV Z?e
j23dTdWdX Z@e
j23dTdYdZ ZAed[gd\d] ZBed^gd>dTd_d`da ZCdbdc ZDddde ZEdfdg ZFdhdi ZGdjdk ZHdldm ZIdndo ZJejKLdpd>i fdqi fd>eMdqdrfdqeMdsdtfged5gd6dudv ZNed5gd6dwdx ZOdydz ZPd{d| ZQd}d~ ZRdd ZSdd ZTdd ZUdd ZVe
j23dTejKLdejWejXgdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dS )    N)SimpleNamespace)assert_array_equalassert_array_almost_equal)
MouseEvent)
CollectionLineCollectionEventCollectionPolyCollection)check_figures_equalimage_comparison)MatplotlibDeprecationWarningc               
   C   s   t g d} t g d}d}d}d}d}g d}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   r   r   r   solidT)orientation
lineoffset
linelength	linewidthcolor	linestyleantialiasedzEventCollection: default)		positionsextra_positionsr   r   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.   q/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/matplotlib/tests/test_collections.pygenerate_EventCollection_plot   sD    



r0   ZEventCollection_plot__defaultc                  C   s   t  \} }}t||d |d |d |d  tj|d |  |d | ksVJ | sbJ |d | ksvJ |d |	 ksJ |
 dgksJ | g| D ]}tj||d  qd S )Nr   r   r   r   r   Nr   )r0   check_segmentsr"   testingr   get_positionsget_orientation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   )
r0   r"   hstackZset_positionsr3   r   r4   r2   r'   r(   spltr*   r-   new_positionsr.   r.   r/   $test__EventCollection__set_positionsV   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    #   )r0   r"   r>   switch_orientationZadd_positionsr3   r   r4   r2   r'   r(   r?   r.   r.   r/   $test__EventCollection__add_positionsd   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=   )
r0   r"   r>   Zappend_positionsr3   r   r4   r2   r'   r(   r?   r.   r.   r/   'test__EventCollection__append_positionsv   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=   )
r0   r"   r>   Zextend_positionsr3   r   r4   r2   r'   r(   r?   r.   r.   r/   'test__EventCollection__extend_positions   s    

rG   Z(EventCollection_plot__switch_orientationc                  C   sz   t  \} }}d}|  || ks(J | r4J | }t|||d |d | | d | dd | dd d S )	Nverticalr   r   z#EventCollection: switch_orientationr    r!   r   r   )	r0   rD   r5   r6   r4   r2   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s8J | sDJ 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)
r0   rD   r4   r5   r6   r"   r3   r   r2   r'   r?   r.   r.   r/   ,test__EventCollection__switch_orientation_2x   s    rK   Z%EventCollection_plot__set_orientationc                  C   sx   t  \} }}d}|| || ks*J | r6J t||d |d |d | | d | dd | dd	 d S )
NrH   r   r   r   z EventCollection: set_orientationr    r!   r   r   )r0   Zset_orientationr5   r6   r2   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*J t||d ||d |d  | d | dd d S )N   r   r   r   zEventCollection: set_linelengthi   )r0   Zset_linelengthr7   r2   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*J t||d |d ||d  | d | dd d S )Ng      r   r   r   zEventCollection: set_lineoffseti)r0   Zset_lineoffsetr8   r2   r'   r)   )r@   r*   r-   Znew_lineoffsetr.   r.   r/   %test__EventCollection__set_lineoffset   s    

rQ   )#EventCollection_plot__set_linestylerR   Z#EventCollection_plot__set_linewidthc                  C   sn   dddgfdddgfdfD ]N\} }}t  \}}}|jf i | |i t|| |ksXJ |d|   qd S )Nr   dashed)r   )      @rT   )r      rU   zEventCollection: set_)r0   setr$   Zgetpr'   )propvalueexpectedr@   r*   r;   r.   r.   r/   test__EventCollection__set_prop   s    

rZ   ZEventCollection_plot__set_colorc                  C   sX   t  \} }}tg d}|| | g| D ]}tj|| q6| d d S )N)r   r   r   r   zEventCollection: set_color)	r0   r"   r#   	set_colorr9   r:   r3   r   r'   )r@   r*   r;   Z	new_colorr   r.   r.   r/    test__EventCollection__set_color   s    
r\   c           
      C   s   |   }| dks(| dks(|du r2d}d}n| dkrHd}d}ntdt|D ]p\}}	|	d|f ||d  ks|J |	d|f ||d  ksJ |	d|f || ksJ |	d|f || ksXJ 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	enumerate)
r*   r   r   r   r   segmentsZpos1pos2isegmentr.   r.   r/   r2     s"    
r2   c                  C   s4   t g } | t }t| tj   d S N)	mcollectionsPathCollectionget_datalimmtransformsIdentityTransformr   Z
get_pointsZBboxnull)colZcol_data_limr.   r.   r/   test_null_collection_datalim   s
    
rn   c                  C   sV   t   t  } | ddgddg}| | | jj}| g g }| jj|ksRJ d S )Nr   r   )r$   figureaxesscatterr&   dataLimbounds)r,   r*   rs   r.   r.   r/   test_add_collection'  s    
rt   Zmpl20Zpng)
extensionsc                 C   s   g d}g d}t ||\}}| }| }|  }|d |d d|_||| | }|d |d |j||ddd d S )N)g+c>g`8F>gq[;u>gy7/>g9̗>gW!>g-I>g\p5>gdjD>gyK'?g~+=?gFEAL ?g|0j?gGKe?gލ=B?)r   皙?gK?gsh|??gS?g?r   gQ@g(\@g333333(@g      6@gC@g33333Q@logr   o )markerls)	r"   meshgridflattenr%   Z
set_xscaleZ
set_yscaleZmarginsrq   Zplot)fig_testfig_refZx_valsZy_valsxyZax_testZax_refr.   r.   r/   test_collection_log_datalim3  s    



r   c                  C   s   t  } tdtd }}tddddd }}t ||||}|| jj	dks^J t 
  t  } tddd}tdd	d}t||\}}t d
d| j }t j||t|t||d | jj	dksJ d S )N   
   r   P   )r   r   g      @g      "@rN             	transform)g      4@g      >@g      .@rT   )r$   rp   r"   arangelinspacereshapeZquiverri   	transDatars   ro   r|   rj   Affine2D	translatesincosrr   )r,   r   r   uvqtransr.   r.   r/   test_quiver_limitsM  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$   rp   r"   r   r|   rj   r   r   r   Zbarbsr   r   r   rr   rs   )r,   r   r   r   r.   r.   r/   test_barb_limits^  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transOffset
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_EllipseCollectionl  s     



r   zpolycollection_close.pngc                  C   sL  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	}g d
}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   krU   g      ?r   gffffff?r   )zsZzdirr   r   )Zmpl_toolkits.mplot3dr   r$   ro   Zadd_axeslistrangerg   r	   len	set_alphazipextendr[   Zadd_collection3dZ
set_xlim3dZ
set_zlim3dZ
set_ylim3d)r   Z	vertsQuadr+   r,   colorsZzposZpolyr   cszcr.   r.   r/   test_polycollection_close  s0    

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alpharm   r.   r.   r/   !test_regularpolycollection_rotate  s    r   zregularpolycollection_scale.pngc                  C   s`   G dd dt j} t \}}dg}tjd g}| |||jd}|j|dd |g d 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@)
rp   ro   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   )r   r   r   )r   r   r   Tr   )r    r   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}||\}}|sZJ t	|d	 dg d S )
Nr   i  T)Zpicker)r   iE     )r   r   ind)
r$   r%   rq   ZsavefigioBytesIOr   r   containsr   )r+   r,   rm   Zmouse_eventfoundindicesr.   r.   r/   test_picking  s    r   c                   C   s,   t jg dg ddddgfd t   d S )Nr   r   r   r   r   )r   )r$   rq   drawr.   r.   r.   r/   test_linestyle_single_dashes  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,   ZwidthsZheightsZanglescoordser.   r.   r/   test_size_in_xy  s    

r   c                 C   s   g d}| j g d|d }}| j g d|d}| j g d|d}| j g d|d}t|d t|d t|d	 t|d
 t|d d S )N)         )redbluegreen)indexr   r   r   )r   rS   Zdashdot)TFT)
edgecolors)r   )
linewidths)Z
linestyles)Zantialiaseds)ZSeriesr   )pdr   r   ZfcZlwr{   r   r.   r.   r/   test_pandas_indexing  s    



r   defaultc                  C   s   t g } | ddg | g d |  dgd ks<J |  g dd ksTJ | g d |  dgd ksxJ |  g dk sJ d S )N-r   r1   r   r   )r   r   r   r   )rg   rh   Zset_linestylesZset_linewidthsZget_linestylesZget_linewidthsallrm   r.   r.   r/   test_lslw_bcast  s    
r   c                  C   s<   t jg dd} |  dksJ | d |  dks8J d S )Nround)ZcapstyleZbutt)rg   rh   Zget_capstyleset_capstyler   r.   r.   r/   test_capstyle  s    
r  c                  C   s<   t jg dd} |  dksJ | d |  dks8J d S )Nr   )Z	joinstylemiter)rg   rh   Zget_joinstyleset_joinstyler   r.   r.   r/   test_joinstyle  s    
r  zcap_and_joinstyle.pngc                  C   s   t  \} }|ddg |ddg tg d}tdgdgdggtg dg }td	}||d d d d d
f< ||d d d d df< t|g dd}|d |	d |
| |d d S )Ng      g      ?      @)r   r   r   r   r   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_image$  s    &



r  zscatter_post_alpha.png)r   stylec                  C   s6   t  \} }|jtdtdtdd}|d d S )NrU   r   rv   )r$   r%   rq   r   r   )r+   r,   scr.   r.   r/   test_scatter_post_alpha8  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| | g d|d}|j| | d|d}t  t| d d df | t| d d df | td\}\}}|j| | g dd	}|| |j| | dd	}|| t  t| d d df | t| d d df | d S )
NrU   r   )r   r   r  r    )r   r   r   r   m)r   r   r   )r   )	r"   r   r$   r%   rq   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sJ t
t |tt d t dd |D }	|t dd }
t
|	|
 |j||dd}|jdd\}}t	|dksJ |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 g d!d"}|j|d\}}t	|t	|ksJ g d#}|j|ddd$\}}t
t |t|dd   ||||fD ]}|| q`|j  d S )%N!N,r   r   r   rU   )sizei,  Zjetrx   )r   scmaprz   r   z{x:g})fmtc                 S   s   g | ]}|  qS r.   )r9   .0liner.   r.   r/   
<listcomp>j      z7test_pathcollection_legend_elements.<locals>.<listcomp>r   r   )loc	   )numr   r   r   )rW   r   r   c                 S   s   g | ]}|  qS r.   )Z	get_alphar  r.   r.   r/   r  t  r  c                 S   s   g | ]}|  qS r.   )Zget_markerfacecolorr  r.   r.   r/   r  v  r  z{x:.2f}c                 S   s   d|  S )Nr   r.   )r   r.   r.   r/   <lambda>{  r  z5test_pathcollection_legend_elements.<locals>.<lambda>)rW   r  r  funcc                 S   s   g | ]}|  qS r.   Zget_markersizer  r.   r.   r/   r  |  r  r   r   )r   r   r  r   rU   r   r   r   )ZnbinsZmin_n_ticksZsteps)r    r   g33333K@i  )r  rW   r  )r"   randomseedZrandrandintr$   r%   rq   legend_elementsr   r   r#   Zastypefloatr   r  Zlegendsqrtr   mplZtickerZMaxNLocatorZ
add_artistcanvasr   )r   r   r   r  r+   r,   r	  hlr   Zcolors2l1h2Zlab2l2r   r   l3ZactsizesZlabeledsizesl4r  h5Zlab5Zlevelsh6Zlab6r.   r.   r/   #test_pathcollection_legend_elements]  sR    






r1  c                  C   s2   t g d} t| }t j| t g d d S )N)r   r   r   r   )r"   r#   r   r3   r   )Zarrr*   r.   r.   r/   test_EventCollection_nosort  s    r2  c                  C   s  t jdt jdddd} t| }tt| }t|jt|jksFJ t|j|jD ]0\}}t 	|j
|j
spJ t 	|j|jsTJ qTt jdtd}dd | D |d d < t|}t|jt|jksJ t|j|jD ]0\}}t 	|j
|j
sJ t 	|j|jsJ qd 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)r  r   r.   r.   r/   	<genexpr>  r  z=test_collection_set_verts_array.<locals>.<listcomp>.<genexpr>r3  r  r   r.   r.   r/   r    r  z3test_collection_set_verts_array.<locals>.<listcomp>)r"   r   doubler   r	   r   r   Z_pathsr   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    r=  c                  C   sx   g t d} t }||  tjtdd |d W d    n1 sJ0    Y  d| d< t| | 	 stJ d S )Nr   z^Image data of dtypematchZwrong_input-   rU   )
r   r   	set_arraypytestraises	TypeErrorr"   	not_equal	get_arrayany)valsr   r.   r.   r/   test_collection_set_array  s    
(rI  c                  C   s   g d} 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 )N)r   r   r   皙?r   r   r   TF)ZscalexZscaleyr   r   )r"   Zcolumn_stackrepeattiler   r   r$   r%   rj   Zblended_transform_factoryr   Z	transAxesr&   r   r   r3   assert_allcloseget_xlim)ar   Zxy_pairsZ	line_segsfr,   r   r.   r.   r/   test_blended_collection_autolim  s    &rQ  c                  C   sH   t  \} }|dd tj| ddg tj| ddg d S )Nr   gQgQ?)r$   r%   rq   r"   r3   rM  Zget_ylimrN  )r+   r,   r.   r.   r/   test_singleton_autolim  s    rR  zflat_ref, kwargsF)r   Z__initialization_delayed__r   c                 C   s  ddl m} g d}g d}t||\}}|d| 7 }tj||gdd}	|	jdksXJ tdd	d
d	d}
|  }|j	ddd d|v rt
 d|j |d< ||	fi |}||
 || |jdksJ | }|j	ddd d|v rt
 d|j |d< tt: |dd	|r6|	 dd	n|	fi |}W d    n1 sZ0    Y  ||rv|
 n|
 || |jdksJ d S )Nr   QuadMeshr   r   r   r   r   r   r   rJ  r    r   r   r   r   r   r   r   r   rU   r   r   ZxlimZylimr   g333333?Zflat)matplotlib.collectionsrT  r"   r|   stackshaper   r   add_subplotrV   rj   r   r   r   rA  r&   Z_shadingrB  warnsr   copyr}   )r~   r   Zflat_refr   rT  r   r   r   r   r   Cr,   qmeshr.   r.   r/   "test_quadmesh_deprecated_signature  s:    


&
rd  c                 C   s,  ddl m} g d}g d}t||\}}|d| 7 }tj||gdd}|jdksXJ | dd	}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 d    n1 s
0    Y  ||	 |
| d S )Nr   rS  rU  rV  rJ  r    rW  rX  r   r   r   r   rY  rZ  r[  Fgouraud)r   shading)r\  rT  r"   r|   r]  r^  ra  r   r   r_  rV   rA  r&   rB  r`  r   )r~   r   rT  r   r   r   r   r   Zcoords_flatrb  r,   rc  r.   r.   r/   #test_quadmesh_deprecated_positional  s,    

$
rg  c                  C   s<  t d} t d}t jd}t \}}|| ||}tt" |	|
dd W d    n1 sl0    Y  t d
d}tjtdd	 |	| W d    n1 s0    Y  tjtd
d	 |	|  W d    n1 s0    Y  t d} t d}t jd}t \}}|j| ||dd}d S )Nr   r   )   r   r   rh  6   )r   r  zFDimensions of A \(6, 9\) are incompatible with X \(11\) and/or Y \(8\)r>  zEDimensions of A \(54,\) are incompatible with X \(11\) and/or Y \(8\)re  rf  )r"   r   r   r$   r%   
pcolormeshrB  r`  r   rA  r   rC  rD  r   r   r   r   r+   r,   r*   r.   r.   r/   "test_quadmesh_set_array_validation  s"    

0(,

rm  c                  C   s`   g d} g d}t jdd}t | |\}}t|||}t |j|jgj}t| | d S )Nr   )r   r   r   )r   r   )r^  )	r"   onesr|   r$   rk  r]  r   r   Zget_coordinates)r   r   r   r   r   r*   r   r.   r.   r/   test_quadmesh_get_coordinates2  s    ro  c                  C   s<  t d} t d}t dd}t \}}|| |t |j}|| |j	
  t | |snJ |t d |j	
  t | t dsJ t dd}t \}}|j| |t |jdd}|| |j	
  t | |sJ |t d |j	
  t | t ds8J d S )Nr   r  r   r      )r   r   re  rj  )r"   r   r   r$   r%   rk  rn  r^  rA  r'  r   r8  rF  rl  r.   r.   r/   test_quadmesh_set_array>  s(    







rr  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snJ d\|_|_| j	  t
| dd d f ||dsJ d S )NZplasmar   r   )vminvmax)r  norm)r   r   )r$   r%   r&  cmget_cmapr   Z	Normalizerk  r'  r   r"   r8  r  rs  rt  )r+   r,   r  ru  r*   r.   r.   r/   test_quadmesh_vmin_vmax\  s    
(
rx  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  rp  r   )r   r    )r"   r   r   maxr   r$   r%   rk  r   r   r   r  )
r   r   r   r   Z
alpha_flatr+   r  r  Zcoll1Zcoll2r.   r.   r/   test_quadmesh_alpha_arrayl  s&    



rz  c                  C   sj   t  \} }|tdd}tjtdd& |	ddg |
  W d    n1 s\0    Y  d S )Nr   )r   r   z^Data array shaper>  r   333333?)r$   r%   rk  r"   r   r   rB  rC  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| }g d}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   rU   )rJ  g?r{  g?r  r   c                 S   s   d|  S )NrU   r.   r  r.   r.   r/   r    r  z=test_legend_inverse_size_label_relationship.<locals>.<lambda>)rW   r  r  c                 S   s   g | ]}|  qS r.   r  r6  r.   r.   r/   r    r  z?test_legend_inverse_size_label_relationship.<locals>.<listcomp>c                 S   s   g | ]}d |d  qS )rU   r   r.   r6  r.   r.   r/   r    r  r   N)r"   r   r!  r$   r%   rq   r#  r   )r   r   rb  SZlegend_sizesr+   r,   r	  ZhandleslabelsZhandle_sizesr.   r.   r/   +test_legend_inverse_size_label_relationship  s    

r  pcfuncc                 C   sn  t ddd}| |ddd}|  t| }| ||	 }t
| ds`J | |}|d |d |  t
| dsJ t
| g dgsJ |d |  t
| g d	gsJ |d  |  t
| g dgsJ |d  |  t
| |s4J |d  |  t
| |s\J t
| dsrJ |d  |  t
| dsJ t
| |sJ ||	  |  t
| |sJ t
| dsJ | |d
dd}|  t
| |sJ t
| g dgs:J | |d
t dd}|  t
| |slJ t
| g dgsJ |d  |  t
| t dsJ t
| g dgsJ | |d
t dd}|  t
| |sJ t
| g dgs J |d  |  t
| t dsNJ t
| g dgsjJ 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|  mcolorsZto_rgba_arrayZ_get_default_facecolorrw  ru  r   
same_colorget_edgecolorZset_facecolorZset_edgecolorget_facecolorr   rA  rn  )r  r   r}  Zface_defaultZmappedr.   r.   r/   test_color_logic  sj    








r  c                  C   s   t tx td dddg dd} |  d dks6J t|  dsJJ |  dksZJ t| 	 g dgstJ W d    n1 s0    Y  td d d} t| 	 dsJ d S )	Ng@r   r   )r   r   r   r   )Zzorderr   r   )Z	facecolorr]   )
rB  r`  r   r   Zget_linewidthr  r  r  Z
get_zorderr  )lcr.   r.   r/   test_LineCollection_args  s    8r  c                  C   s|   t ddd} t| }tjtdd" ||  |	  W d    n1 sR0    Y  t
| }||  |	  d S )Nr   r   r   z^Collections can only mapr>  )r"   r   r   r$   pcolorrB  rC  r`   rA  r|  rk  )r   r}  r.   r.   r/   test_array_wrong_dimensions  s    

&

r  c                  C   s   t  \} }|tdd dtdd  ^ }}|jddg\}}td| j||}|	|dkslJ dD ]:}|jd	dg\}}td| j||}|	|d u spJ qpd S )
Nr   r   r   r   e   Zmotion_notify_eventr   r.   r    )
r$   r%   Zhist2dr"   r   r   r   r   r'  Zget_cursor_data)r+   r,   r;   Zqmr   r   eventZ
out_xydatar.   r.   r/   test_quadmesh_cursor_data  s    
r  c                  C   sB   t t ddddj} t| g}| \}t | |ks>J d S )Nr   r      )r   r   )r"   rL  r   r   r   r^   r   )rb   r  Zreadbackr.   r.   r/   test_get_segments  s    

r  c                  C   s~   t  } dg}tj|d}tj|dd}tj|d}|d || j}|| j}|| j}||ksnJ ||kszJ d S )Nr   )r   r   )r   r   )rj   rk   rg   ZCircleCollectionset_offsetsri   rs   )identityr   rl   initlateZnull_boundsZinit_boundsZlate_boundsr.   r.   r/   test_set_offsets_late  s    
r  c                  C   s   t jtdd" tjg t d W d    n1 s60    Y  t dd} tjg g | d}tg }|	|  | |
   kr|
 ksn J d S )Nz-.transOffset. without .offsets. has no effectr>  )r   r   )r   r   )rB  r`  r   rg   r   rj   rk   r   skewZset_offset_transformZget_offset_transform)r  r  r  r.   r.   r/   test_set_offset_transform2  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   rU      r(  z
2021-11-29)r"   r   r   Ztimedelta64Z
datetime64r$   rq   Zget_offsetsr  r   r   r3   rM  r%   )r   r   dr	  Zoff0r+   r,   r.   r.   r/   test_set_offset_unitsA  s    
r  )ar   typesr   Znumpyr"   Znumpy.testingr   r   rB  Z
matplotlibr&  Zmatplotlib.pyplotZpyplotr$   Zmatplotlib.backend_basesr   r\  collectionsrg   Zmatplotlib.colorsr   r  Zmatplotlib.transformsZ
transformsrj   r   r   r   r	   Zmatplotlib.testing.decoratorsr
   r   Zmatplotlib._api.deprecationr   r0   r<   rB   rE   rF   rG   rJ   rK   rL   rO   rQ   rZ   r\   r2   rn   rt   r  contextr   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r1  r2  r=  rI  rQ  rR  markZparametrizedictrd  rg  rm  ro  rr  rx  rz  r~  r  r  rk  r  r  r  r  r  r  r  r  r.   r.   r.   r/   <module>   s   (












	



$











3
$

	
D	