a
    ضa }                  	   @   s  d dl Z d dlZ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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 d dlmZ dd Zed	gd
ddd Zedgd
ddd Z edgdd Z!edgd
ddd Z"edgd
ddd Z#edgd
ddd Z$edgd
e% dkrBd ndd d!d" Z&ed#gd
e% dkrld ndd d$d% Z'ed&gd
dd'd( Z(ed)gd
e% dkrd nd*d d+d, Z)ed-d.gd
dd/d0 Z*ed1gd
dd2d3 Z+ed4gd
d5d6d7d8 Z,d9d: Z-G d;d< d<Z.G d=d> d>Z/ed?gd@dA Z0dBdC Z1dDdE Z2dFdG Z3edHgdIdJ Z4edKgdLdM Z5dNdO Z6dPdQ Z7dRdS Z8dTdU Z9dVdW Z:dXdY Z;dZd[ Z<d\d] Z=ej>?d^d_d`da Z@dbdc ZAddde ZBdfdg ZCdhdi ZDej>?d^d_djdk ZEdldm ZFdndo ZGdpdq ZHdrds ZIdtdu ZJdvdw ZKdxdy ZLej>jMeNd
 dzd{d|d} ZOd~d ZPdd ZQej>?dddgdeRddggdd ZSej>?dddeTgdd ZUej>?dddgdeRddggdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dS )    N)mock)image_comparison)HandlerTuple)
rc_context)FontPropertiesc                  C   s   t jd} t jd}dgd dgd  }dgd dgd  }t \}}t| |||D ]\}}}}	|j||||	d qZ| \}
}t	t||
}|j
| | dd	d
 d S )N
   a   brg)labelccenter left)         ?)locbbox_to_anchor)nprandomZrandnpltsubplotszipscatterZget_legend_handles_labelscollectionsOrderedDictlegendvalueskeys)XYlabelscolorsfigaxxyr   colorhandlesr    r)   l/Users/vegardjervell/Documents/master/model/venv/lib/python3.9/site-packages/matplotlib/tests/test_legend.pytest_legend_ordereddict   s    r+   Zlegend_auto1T)remove_textc                  C   sR   t  \} }td}|j|d| ddd |j||d ddd |jdd d	S )
Test automatic legend placementd   2   oy=1r   y=-1bestr   N)r   r   r   arangeplotr   )r#   r$   r%   r)   r)   r*   test_legend_auto1&   s
    
r8   Zlegend_auto2c                  C   sh   t  \} }td}|j||ddd}|j||ddd ddd}|j|d |d gd	d
gdd dS )r-   r.   Zedgem)Zalignr'   Nr   r   ZupZdownr4   r5   )r   r   r   r6   barr   )r#   r$   r%   b1b2r)   r)   r*   test_legend_auto20   s
    
r>   Zlegend_auto3c                  C   sV   t  \} }g d}g d}|j||ddd |dd |dd |jdd	 d
S )r-   )?皙?r@   r?   r?   r   )ffffff?rA   皙?rB   r   r   zo-liner2                 ?r4   r5   N)r   r   r7   set_xlimset_ylimr   )r#   r$   r%   r&   r)   r)   r*   test_legend_auto3:   s    rH   Zlegend_various_labelsc                  C   sl   t  } | d}|jtdddd |jtddddd |jtddddd	d |jdd
d d S )Ny      r0   r   r2   gffffff@u   Développésr:   Z__nolegend__r4   )	numpointsr   )r   figureZadd_subplotr7   r   r6   linspacer   r#   r$   r)   r)   r*   test_various_labelsF   s    
rO   zlegend_labels_first.pngc                  C   sh   t  \} }|jtdddd |jtdd ddd |jtddd	d
dd |jddd d S )Nr   -or   r2   r	   z:xr%      r:   dZdiamondr4   F)r   Zmarkerfirst)r   r   r7   r   r6   Zonesr   rN   r)   r)   r*   test_labels_firstQ   s
    rS   zlegend_multiple_keys.pngc                  C   s   t  \} }|g dd\}|g dd\}|g dd\}|j||f||f|gg dd||ftd d	||ftd d
did d S )Nr         rP   rU   rV   rJ   z-x)rV   rJ   r	   z-d)ztwo keyszpad=0zone keyr   )ndivider   )rX   pad)rK   handler_map)r   r   r7   r   r   )r#   r$   p1p2Zp3r)   r)   r*   test_multiple_keys[   s    r]   zrgba_alpha.pngx86_64g{Gz?)r,   Ztolc                  C   sB   t  \} }|jtddd t jdgdd}|jg d d S )Nr   r	   lwLonglabel that will go awaycenterr5   r   r   r   r   )r   r   r7   ranger   legendPatchset_facecolorr#   r$   legr)   r)   r*   test_alpha_rgbah   s    ri   zrcparam_alpha.pngc                  C   sr   t  \} }|jtddd tjddid0 t jdgdd	}|jg d
 W d    n1 sd0    Y  d S )Nr   r	   r_   zlegend.framealphag      ?)rcra   rb   r5   rc   )	r   r   r7   rd   mplr   r   re   rf   rg   r)   r)   r*   test_alpha_rcparamq   s
    rl   Zfancyc                   C   s~   t d t jdgd ddd t jtdtdddd	d t jtdtdd
d
dd t jddd
gddddd d S )NrI   r	   r   zo--ZXXr2   r   r:   zXX
XXr   )ZxerrZyerrr   r   rE   rU   T	My legendr   )r   r   ncolshadowtitlerK   )r   subplotr7   r   r   r6   Zerrorbarr   r)   r)   r)   r*   
test_fancy   s    
 rr   
framealphag{Gz?c                  C   s4   t ddd} | }tj| |ddd tjdd d S )Nr   r.   Zmylabelr   )r   r`   r   )rs   )r   rM   r   r7   r   )r%   r&   r)   r)   r*   test_framealpha   s    rt   Zscatter_rc3Zscatter_rc1c                  C   s   t   t d} | jtdtddddd | jddd	gd
d dtjd< t   t d} | jtdtddddd | jddd	gd
d d S )NrI   r   r   r:   Zthreer2   r   rE   r   rm   )r   r   rp   r   zlegend.scatterpointsone)	r   rL   rq   r   r   r6   r   rk   rcParams)r$   r)   r)   r*   test_rc   s    
 

 rw   Zlegend_expandc                  C   s   ddg} t t| d\}}td}t|| D ]t\}}|j|d| ddd |jd	|d
}|| |j||d ddd |jd|d
}|| |jd|dd q0dS )zTest expand modeNexpandr   r.   r/   r0   r1   r2   z
upper left)r   moder3   rightz
lower leftrU   )r   ry   rn   )	r   r   lenr   r6   r   r7   r   Z
add_artist)Zlegend_modesr#   axsr%   r$   ry   l1l2r)   r)   r*   test_legend_expand   s    


r   Zhatchingdefault)r,   stylec               	   C   s  dt jd< t  \} }t jdddddd}|| t jdddd	d
dd}|| t jddddddd}|| t jdddd	dd
dd}|| |jg dg dg dddd |jg dg dg ddddd |dd |dd |jddd d S ) N   ztext.kerning_factor)r   r   333333?xxzPatch
default color
filled)hatchr   )Q?r   z||ZC1zPatch
explicit color
filled)r   	edgecolorr   )r   皙?FzPatch
default color
unfilled)r   fillr   )r   r   zPatch
explicit color
unfilled)r   r   r   r   )r   g333333?r   )皙?r   r   )r?   rE   r?   +zPath
default color)r   gQ?g)\(?ZC2zPath
explicit colorg{Gzg?rJ   )ZhandlelengthZhandleheight)	r   rv   r   Z	RectangleZ	add_patchfill_betweenrF   rG   r   )r#   r$   patchr)   r)   r*   test_hatching   s8    




r   c                  C   sb   t  \} }|td}| |d}|  | jg ks<J |d}|  | d u s^J d S )Nr   test)r   r   r7   rd   r   removeZlegendsZ
get_legend)r#   r$   linesrh   r)   r)   r*   test_legend_remove   s    
r   c                   @   sd   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dd Z
dd Zdd Zdd ZdS )TestLegendFunctionc                 C   s\   t jtddd}td}t   W d    n1 s:0    Y  |t  |dg d S )Nr   hello worldr2   matplotlib.legend.Legendr   r7   rd   r   r   r   assert_called_withgcaselfr   Legendr)   r)   r*   test_legend_no_args   s    &z&TestLegendFunction.test_legend_no_argsc                 C   s^   t td}td}t |dg W d    n1 s<0    Y  |t  |dg d S )Nr   r   r   r   r   r)   r)   r*   %test_legend_positional_handles_labels   s    ,z8TestLegendFunction.test_legend_positional_handles_labelsc                 C   sJ   t td}tjtdd t | W d    n1 s<0    Y  d S )Nr   zbut found an Artist)match)r   r7   rd   pytestraises	TypeErrorr   )r   r   r)   r)   r*   #test_legend_positional_handles_only   s    z6TestLegendFunction.test_legend_positional_handles_onlyc                 C   s`   t jtddd}td}t dg W d    n1 s>0    Y  |t  |dg d S )Nr   r   r2   r   foobarr   r   r)   r)   r*   "test_legend_positional_labels_only   s    *z5TestLegendFunction.test_legend_positional_labels_onlyc                 C   sj   t jtddd}td"}t j|dgdd W d    n1 sD0    Y  |jt  |dgdd d S )Nr   r   r2   r   r   rz   r5   r   r   r)   r)   r*   test_legend_three_args   s    0z)TestLegendFunction.test_legend_three_argsc                 C   sr   t jtddd}td,}|dgf|_t jddid W d    n1 sN0    Y  |t  gddi d S )Nr   r   r2   z,matplotlib.legend._get_legend_handles_labels1rU   )rZ   )	r   r7   rd   r   r   Zreturn_valuer   r   r   )r   r   Zhandles_labelsr)   r)   r*   test_legend_handler_map  s    
.z*TestLegendFunction.test_legend_handler_mapc                 C   s   t  \}}tddd}|j||dd\}|j|d| dd\}|j|d| d	d\}td
 }|j||gd W d    n1 s0    Y  ||||gd	dg d S )Nr   r      r%   r2   rU   2xrV   Z3xr   )r(   	r   r   r   rM   r7   r   r   r   r   )r   r#   r$   r%   ln1ln2Zln3r   r)   r)   r*   test_legend_kwargs_handles_only
  s    .z2TestLegendFunction.test_legend_kwargs_handles_onlyc                 C   s   t  \}}tddd}|||\}||d| \}td }|jddgd W d    n1 sj0    Y  ||||gddg d S )	Nr   r   r   rU   r   r%   r   r!   r   )r   r#   r$   r%   r   r   r   r)   r)   r*   test_legend_kwargs_labels_only  s    .z1TestLegendFunction.test_legend_kwargs_labels_onlyc                 C   s   t  \}}tddtj d}|j|t|dd\}|j|t|dd\}t	d"}|j
d||fd	 W d    n1 s0    Y  ||||fd d S )
Nr   rU      sinr2   cosr   r   r
   )r!   r(   )r   r   r   rM   pir7   r   r   r   r   r   r   )r   r#   r$   thlnslncr   r)   r)   r*   !test_legend_kwargs_handles_labels  s    0z4TestLegendFunction.test_legend_kwargs_handles_labelsc                 C   s   t  \}}tddtj d}|j|t|dd\}|j|t|dd\}t	t
"}|j||fdd W d    n1 s0    Y  t|d	ksJ t|d jd
ksJ d S )Nr   rU   r   r   r2   r   r   r   r   MYou have mixed positional and keyword arguments, some input may be discarded.)r   r   r   rM   r   r7   r   r   r   warnsUserWarningr   r{   strmessage)r   r#   r$   r   r   r   recordr)   r)   r*   test_warn_mixed_args_and_kwargs'  s    0z2TestLegendFunction.test_warn_mixed_args_and_kwargsc                 C   s   ddl m} |d}| }|jg dg ddd\}|jg dg ddd\}td	}t  W d    n1 sx0    Y  ||||gddg d S )
Nr   )host_subploto   r   r   rU   ZDensityr2   )r   rV   rU   ZTemperaturer   )	Zmpl_toolkits.axes_grid1r   Ztwinxr7   r   r   r   r   r   )r   r   hostparr[   r\   r   r)   r)   r*   test_parasite3  s    &z TestLegendFunction.test_parasiteN)__name__
__module____qualname__r   r   r   r   r   r   r   r   r   r   r   r)   r)   r)   r*   r      s   
	
r   c                   @   sD   e Zd Zdd Zdd Zdd Zdd Zd	d
 Zdd Zdd Z	dS )TestLegendFigureFunctionc                 C   sl   t  \}}|td}td}||dg W d    n1 sH0    Y  |j||dg|jd d S )Nr   r   r   bbox_transform	r   r   r7   rd   r   r   r   r   transFigurer   r#   r$   r   r   r)   r)   r*   test_legend_handle_labelC  s    ,z1TestLegendFigureFunction.test_legend_handle_labelc                 C   sj   t  \}}|jtddd}td}|  W d    n1 sF0    Y  |j||dg|jd d S )Nr   r   r2   r   r   r   r   r)   r)   r*   r   K  s    &z,TestLegendFigureFunction.test_legend_no_argsc                 C   sj   t  \}}|td}td}|dg W d    n1 sF0    Y  |j||dg|jd d S )Nr   r   r   r   r   r   r)   r)   r*   test_legend_label_argS  s    *z.TestLegendFigureFunction.test_legend_label_argc                 C   sp   t  \}}|td}td }||dgd W d    n1 sJ0    Y  |j||dgd|jd d S )Nr   r   r   rz   r   r   r   r)   r)   r*   test_legend_label_three_args[  s    .z5TestLegendFigureFunction.test_legend_label_three_argsc                 C   s\   t  \}}|td}tt$ |j|dgddd W d    n1 sN0    Y  d S )Nr   r   rz   leftr5   )r   r   r7   rd   r   r   	Exceptionr   )r   r#   r$   r   r)   r)   r*   #test_legend_label_three_args_pluskwc  s    z<TestLegendFigureFunction.test_legend_label_three_args_pluskwc                 C   s   t dd\}}|d td}|d tdd }td$}|jdd||fd	 W d    n1 sn0    Y  |j	|||fdd|j
d
 d S )Nr   rU   r   r          @r   rz   r   )r   r!   r(   )r   r   )r   r   r7   rd   r   r6   r   r   r   r   r   )r   r#   r|   r   lines2r   r)   r)   r*   test_legend_kw_argsk  s    2z,TestLegendFigureFunction.test_legend_kw_argsc                 C   s   t dd\}}|d td}|d tdd }tt"}|j	||fdd W d    n1 sl0    Y  t
|dksJ t|d jdksJ d S )	Nr   rU   r   r   r   r   r   r   )r   r   r7   rd   r   r6   r   r   r   r   r{   r   r   )r   r#   r|   r   r   r   r)   r)   r*   test_warn_args_kwargsu  s    0z.TestLegendFigureFunction.test_warn_args_kwargsN)
r   r   r   r   r   r   r   r   r   r   r)   r)   r)   r*   r   A  s   
r   zlegend_stackplot.pngc                  C   sv   t  \} }tddd}d| }d| d }d| d }|j||||g dd	 |d
 |d |jdd dS )z/Test legend for PolyCollection using stackplot.r   r   rE   r   r   g      @rU   )y1y2y3r   )r   r   )r   F   r4   r5   N)r   r   r   rM   Z	stackplotrF   rG   r   )r#   r$   r%   r   r   r   r)   r)   r*   test_legend_stackplot  s    

r   c                  C   s<   t  \} }t  \}}|tdtd}||d d S )NrV   foo)r   r   r;   rd   r   )r#   r$   Zfig2Zax2Zbrsr)   r)   r*   test_cross_figure_patch_legend  s    r   c               
   C   s   t  \} }|jtjgtjgddddd}||gdg t  \} }dD ]B}d}tjd|\}}d	tj| }|j|||||d
dd qJ|  |d d S )Nr0   r   rV   )marker	facecolorr   sr   )redgreenbluei  rU   g      i@r   none)r   r   r   alphaZ
edgecolorsT)	r   r   r   r   nanr   r   ZrandZgrid)r#   r$   hr'   nr%   r&   Zscaler)   r)   r*   test_nanscatter  s    r   c                  C   s   t  \} }|jdddddd |jdddd	dd |  t|g\}}t|d
ks\J t  \} }|jdddddd |jdddd	dd |  t|g\}}t|d
ksJ d S )NrD   rE   kr0   r   )r'   r   r   r   r   vrU   )r   r   r   r   mlegendZ_get_legend_handles_labelsr{   )r#   r$   handZlabr)   r)   r*   test_legend_repeatcheckok  s    r   znot_covering_scatter.pngc                  C   sd   g d} t dD ]}tj|g|g| | d qtjg ddd t dd t dd d S )	N)r
   r   r   rV   )r'   )r   r   r   r4   r5   g      g@)rd   r   r   r   r   rF   rG   )r"   r   r)   r)   r*   test_not_covering_scatter  s    r   z"not_covering_scatter_transform.pngc                  C   s^   t  dd} tddd}t|| tjdgdg| t j	 d tj
dd	gd
d d S )NirQ   r        r   )Z	transformr   r;   r4   r5   )mtransformsZAffine2D	translater   rM   r   r7   r   r   Z	transDatar   )offsetr%   r)   r)   r*   #test_not_covering_scatter_transform  s
    r   c                  C   s$  ddgddgg} ddgddggd	dgd
dggg}d
dgddggd	dgddggg}t j| ddd}t j|dd}t j|dd	d}t \}}|| || || ||||gg d}|j\}	}
}t|||f|	|
|fD ]>\}}| d d |j	ksJ | d d |j
ksJ qd S )N)r   r   )r   r   )r   333333?)皙?r   gffffff?r   r   r   r   r   r@   z--rV   )
linestylesr`   z-.)r   :)Zline1Zline2zline 3r   r   )mcollectionsZLineCollectionr   r   Zadd_collectionr   legendHandlesr   Zget_linestylesZ_dashSeqZ_dashOffset)Zlines1r   Zlines3Zlc1Zlc2Zlc3r#   r$   rh   h1h2h3Zohlhr)   r)   r*   !test_linecollection_scaled_dashes  s      


r  c                  C   s.   t  \} }|jtddd |jdd dS )z(Test legend handler with numpoints <= 1.r	   r   r2   r   rK   N)r   r   r7   rd   r   rN   r)   r)   r*   test_handler_numpoints  s    r  c                   C   s   t jg g dd t   dS )z1Test legend when bar chart is empty with a label.r   r2   N)r   r;   r   r)   r)   r)   r*    test_empty_bar_chart_with_legend  s    r  c                  C   sD   t  \} }|jtddd |jddd}|  dks@J d S )Nr.   r   r2   Tw)ro   r   r   )r   r   r7   rd   r   Z	get_frameZ	get_alpharg   r)   r)   r*   test_shadow_framealpha  s    r  c                  C   sJ   t  \} }|td | }|  dks6J |  rFJ d S )Nr    )r   r   r7   rd   r   	get_titleget_textZget_visiblerg   r)   r)   r*   test_legend_title_empty  s
    r  c                  C   s   t jdd\} }|jtddd | }|| j j}t jdd\} }|jtddd | }|| j j}t	
|d d|ksJ d S )	Nr.   Zdpir   Aardvarkr2      rU   r@   )r   r   r7   rd   r   get_window_extentcanvasZget_rendererZx0r   Zapprox)r#   r$   rh   Zx01Zx02r)   r)   r*    test_legend_proper_window_extent  s    r  c                  C   sP   t jdd\} }|jtddd | }|  }| j  |  |  d S )Nr.   r  r   r  r2   )r   r   r7   rd   r   r  drawr  )r#   r$   rh   leg2r)   r)   r*   "test_window_extent_cached_renderer  s    
r  c            	      C   s  t td tt& t jdddddd W d    n1 sD0    Y  t jdtdddd} |  	 dksxJ t j
dd	d
d\}}|j}|d td |d jddd}|  dksJ |d td |d jddddd}|  dks
J |d td d tjd< |d jdddid}|  tjd ksXJ |d	 td |d	 jdd}|  tjd ksJ |d td dtjd< |d jdddid}|  dksJ |d td |d jdd}|  dksJ d S )Nr   r     serif)familysize)rp   title_fontsizetitle_fontproperties)rp   r  rU   rV   )r   r   )Zfigsizer   )rp   r  r   zlegend.title_fontsizer  z	font.sizerp   rJ   rQ   r	   )r   r7   rd   r   r   
ValueErrorr   r   r	  get_sizer   ZflatZget_fontsizerk   rv   )	rh   r#   axesZleg0Zleg1r  Zleg3Zleg4Zleg5r)   r)   r*   #test_legend_title_fontprop_fontsize%  sJ    $





r  r'   )r   r   )r   r   r   c                 C   s   t  \}}|jtdtdd dd |jtdtdd dd |jtdtdd dd |j| d	}| D ]}tj	|
 | sJ qd S )
Nr   r   #1r2   rU   #2rV   #3Z
labelcolor)r   r   r7   r   r6   r   	get_textsrk   r"   
same_color	get_colorr'   r#   r$   rh   textr)   r)   r*   test_legend_labelcolor_singleK  s       r)  c                  C   s   t  \} }|jtdtdd dd |jtdtdd dd |jtdtdd dd |jg d	d
}t| g d	D ]\}}tj	
| |sJ qd S )Nr   r   r   r2   rU   r!  rV   r"  r   r   r
   r#  r   r   r7   r   r6   r   r   r$  rk   r"   r%  r&  r#   r$   rh   r(  r'   r)   r)   r*   test_legend_labelcolor_listX  s       r-  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd |jdd}t| g dD ]\}}tj	
| |sJ qd S )Nr   r   r   r   r   r'   rU   r!  r   rV   r"  r
   	linecolorr#  r*  r+  r,  r)   r)   r*    test_legend_labelcolor_linecolord  s    """r0  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd |jdd}t| g dD ]\}}tj	
| |sJ qd S )Nr   r   r   r   r   markeredgecolorrU   r!  r   rV   r"  r
   r2  r#  r*  r+  r,  r)   r)   r*   &test_legend_labelcolor_markeredgecolorp  s    """r3  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd |jdd}t| g dD ]\}}tj	
| |sJ qd S )Nr   r   r   r   r   markerfacecolorrU   r!  r   rV   r"  r
   r5  r#  r*  r+  r,  r)   r)   r*   &test_legend_labelcolor_markerfacecolor|  s    """r6  c                 C   s   t  \}}|jtdtdd dd |jtdtdd dd |jtdtdd dd | tjd	< | }| D ]}tj	
| | sJ qd S )
Nr   r   r   r2   rU   r!  rV   r"  legend.labelcolor)r   r   r7   r   r6   rk   rv   r   r$  r"   r%  r&  r'  r)   r)   r*   %test_legend_labelcolor_rcparam_single  s       
r8  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd dtjd< | }t|	 g dD ]\}}tj
| |sJ qd S )Nr   r   r   r   r.  rU   r!  r   rV   r"  r
   r/  r7  r*  r   r   r7   r   r6   rk   rv   r   r   r$  r"   r%  r&  r,  r)   r)   r*   (test_legend_labelcolor_rcparam_linecolor  s    """
r:  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd dtjd< | }t|	 g dD ]\}}tj
| |sJ qd S )Nr   r   r   r   r1  rU   r!  r   rV   r"  r
   r2  r7  r*  r9  r,  r)   r)   r*   .test_legend_labelcolor_rcparam_markeredgecolor  s    """
r;  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd dtjd< | }t|	 g dD ]\}}tj
| |sJ qd S )Nr   r   r   r   r1  rU   r!  r   rV   r"  r
   Zmecr7  r*  r9  r,  r)   r)   r*   4test_legend_labelcolor_rcparam_markeredgecolor_short  s    """
r<  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd dtjd< | }t|	 g dD ]\}}tj
| |sJ qd S )Nr   r   r   r   r4  rU   r!  r   rV   r"  r
   r5  r7  r*  r9  r,  r)   r)   r*   .test_legend_labelcolor_rcparam_markerfacecolor  s    """
r=  c                  C   s   t  \} }|jtdtdd ddd |jtdtdd ddd |jtdtdd	 d
dd dtjd< | }t|	 g dD ]\}}tj
| |sJ qd S )Nr   r   r   r   r4  rU   r!  r   rV   r"  r
   Zmfcr7  r*  r9  r,  r)   r)   r*   4test_legend_labelcolor_rcparam_markerfacecolor_short  s    """
r>  c                  C   sD   t  } |  rJ | d |  s*J | d |  r@J d S )NTF)r   r   Zget_draggableZset_draggable)r   r)   r)   r*   test_get_set_draggable  s    

r?  c                  C   s   t jg ddddd\} }}t  }|jD ]}|d q*| d d |d  d d ksbJ | d d |d  d d ksJ d S )	NrT   g      ?datar   )r   r   r'   rE   r:   r   )r   histr   r   Z	set_alphaZget_facecolorZget_edgecolor)r%   r   hhr   r  r)   r)   r*   test_alpha_handles  s    
(rC  z"This test needs a TeX installation)reasonc                 C   sb   dt jd< dt jd< dt jd< t \}}|jdddd	 |jd
d |j  d| jvs^J d S )Nr  zfont.familyzComputer Modernz
font.serifTztext.usetexr   inputr2   rm   r  z Font family ['serif'] not found.)	rk   rv   r   r   r7   r   r  r  r(  )Zcaplogr#   r$   r)   r)   r*   test_usetex_no_warn  s    



rF  c                  C   s   t  \} }| j  tdD ]}|jtd|d qtddi |	 }W d    n1 sb0    Y  t
t}| | W d    n1 s0    Y  t|dksJ |D ]}t|jdksJ qd S )Nr     r2   z
legend.locr4   rU   zGCreating legend with loc="best" can be slow with large amounts of data.)r   r   r  r  rd   r7   r   r6   r   r   r   r   r   draw_artistr{   r   r   )r#   r$   idxr   recordsr   r)   r)   r*   test_warn_big_data_best_loc  s    
&(rK  c                  C   sP   t  \} }| j  tdD ]}|jtd|d q|d}| 	| d S )Nr   rG  r2   r4   )
r   r   r  r  rd   r7   r   r6   r   rH  )r#   r$   rI  r   r)   r)   r*   (test_no_warn_big_data_when_loc_specified  s    

rL  label_arraylowhigh)rN  rO  c                 C   sh   g d}ddgddgddgg}t  \}}|j||| d | }dd	 | D }|d
dgksdJ d S )NrT   r   rU   r	   rJ   	   r2   c                 S   s   g | ]}|  qS r)   r
  .0entryr)   r)   r*   
<listcomp>"      z;test_plot_multiple_input_multiple_label.<locals>.<listcomp>rN  rO  )r   r   r7   r   r$  )rM  r%   r&   r#   r$   rh   legend_textsr)   r)   r*   'test_plot_multiple_input_multiple_label  s    rX  r   ru   r   c                 C   sn   g d}ddgddgddgg}t  \}}|j||| d | }dd	 | D }|t| gd ksjJ d S )
NrT   r   rU   r	   rJ   rP  r2   c                 S   s   g | ]}|  qS r)   rQ  rR  r)   r)   r*   rU  2  rV  z9test_plot_multiple_input_single_label.<locals>.<listcomp>)r   r   r7   r   r$  r   )r   r%   r&   r#   r$   rh   rW  r)   r)   r*   %test_plot_multiple_input_single_label&  s    rY  c                 C   sh   g d}g d}t  \}}|j||| d | }t| dksHJ | d  t| ksdJ d S )NrT   )rU   r	   r   r2   r   r   )r   r   r7   r   r{   r$  r
  r   )rM  r%   r&   r#   r$   rh   r)   r)   r*   %test_plot_single_input_multiple_label6  s    rZ  c                  C   sp   t tR g d} ddgddgddgg}g d}t \}}|j| ||d W d    n1 sb0    Y  d S )	NrT   r   rU   r	   rJ   rP  )rO  rN  Zmediumr2   )r   r   r  r   r   r7   )r%   r&   r   r#   r$   r)   r)   r*   3test_plot_multiple_label_incorrect_length_exceptionE  s    r[  c                  C   s:   t  \} }|jg dg dg ddddd |  d S )Nr   rT   rW   r   faceZFill)r   r   r   )r   r   r   r   rN   r)   r)   r*   test_legend_face_edgecolorR  s
    r]  c                  C   sT   t  \} }|jddgddgdd | }|j|u s:J | d j|u sPJ d S )Nr   rU   rV   rJ   rC   r2   r   )r   r   r7   r   r  r$  rg   r)   r)   r*   test_legend_text_axesZ  s
    r^  c                  C   sn   t  \} }|jddgddgdd tjdgdgddg}|j|dgdd}|d  |jd  ksjJ d S )Nr   r   r   )r   r  r  )r   r   r   mlinesZLine2Dr   Z
get_markerr   )r#   r$   r(   rh   r)   r)   r*   test_handlerline2dc  s
    r`  c                  C   sF   t   } |  }|jddgddgdd |  }|j| u sBJ d S )Nr   r   rC   r2   )r   rL   Z
subfiguresr   r7   r   )Zsubfigr$   rh   r)   r)   r*   test_subfigure_legendl  s
    ra  )\r   platformZunittestr   Znumpyr   r   Zmatplotlib.testing.decoratorsr   Zmatplotlib.pyplotZpyplotr   Z
matplotlibrk   Zmatplotlib.transformsZ
transformsr   Zmatplotlib.collectionsr   Zmatplotlib.linesr   r_  Zmatplotlib.legend_handlerr   Zmatplotlib.legendr   r   r   Zmatplotlib.font_managerr   r+   r8   r>   rH   rO   rS   r]   machineri   rl   rr   rt   rw   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  markZparametrizer)  r-  r0  r3  r6  r8  r:  r;  r<  r=  r>  r?  rC  ZskipifZcheckdep_usetexrF  rK  rL  arrayrX  intrY  rZ  r[  r]  r^  r`  ra  r)   r)   r)   r*   <module>   s   
	
	



	







 `@


	&

		

	


		