
    (?e˿              	       z	   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	Z	d dl
mZm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$m%Z% d dl&m'Z' d	 Z( ed
gd          d             Z) edgd          d             Z* edg          d             Z+d Z,d Z- edgd          d             Z.d Z/ edgd          d             Z0 edgd          d             Z1 edgd ej2                    dk    rd nd          d             Z3 ed gd ej2                    dk    rd nd          d!             Z4 ed"gdd#          d$             Z5 ed%gd ej2                    dk    rd nd&          d'             Z6 ed(d)gd          d*             Z7 ed+gd          d,             Z8 ed-gdd./          d0             Z9d1 Z:d2 Z; ed3g4          d5             Z< G d6 d7          Z= G d8 d9          Z>d: Z? ed;g          d<             Z@d= ZAd> ZBd? ZC ed@g          dA             ZD edBg          dC             ZEdD ZFdE ZGdF ZHdG ZI edHgddI/          dJ             ZJdK ZKdL ZLdM ZMdN ZNdO ZOdP ZPe	jQ        R                    dQdR          dS             ZSe	jQ        R                    dTdU          dV             ZTe	jQ        R                    dTdW          dX             ZUe	jQ        R                    dQdR          dY             ZVe	jQ        R                    dZd[          d\             ZWd] ZXd^ ZYd_ ZZd` Z[da Z\db Z]dc Z^dd Z_de Z`df Zadg Zbdh Zcdi Zde	jQ        R                    dZd[          dj             Zedk Zfdl Zgdm Zhdn Zido Zjdp Zke	jQ        R                    dqdr          ds             Zldt Zmedu             Zndv Zodw Zpe	jQ        R                    dxdydzgd{ ejq        dydzg          g          d|             Zre	jQ        R                    d}d~desg          d             Zte	jQ        R                    dxdydzgd{ ejq        dydzg          g          d             Zud Zvd Zwd Zxd Zyd Zzd Z{d Z| e            d             Z}d Z~d Zd Zd Zd Zd Zd ZdS )    N)mock)assert_allclose)check_figures_equalimage_comparison)needs_usetex)HandlerTuple)_api
rc_context)FontPropertiesc                  4   t           j                            d          } t           j                            d          }dgdz  dgdz  z   }dgdz  dgdz  z   }t          j                    \  }}t          | |||          D ] \  }}}}	|                    ||||	           !|                                \  }
}t          j	        t          ||
                    }|
                    |                                |                                dd	
           d S )N
   a   brglabelccenter left)         ?)locbbox_to_anchor)nprandomrandnpltsubplotszipscatterget_legend_handles_labelscollectionsOrderedDictlegendvalueskeys)XYlabelscolorsfigaxxyr   colorhandlesr%   s               <lib/python3.11/site-packages/matplotlib/tests/test_legend.pytest_legend_ordereddictr3      s    		A
	AUQY#"FUQY#"FlnnGC!!Q77 / /1eU


1au
....2244OGV$S%9%9::FIIfmmoov{{}}  9 9 9 9 9    legend_auto1T)remove_textc                      t          j                    \  } }t          j        d          }|                    |d|z
  dd           |                    ||dz
  d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.   s      r2   test_legend_auto1rC   *   sv     lnnGC
	#AGGArAvs%G(((GGAq2vs&G)))II&Ir4   legend_auto2c                      t          j                    \  } }t          j        d          }|                    ||dd          }|                    ||ddd         dd          }|                    |d         |d         gd	d
gd           dS )r8   r9   edgem)alignr0   Nr   r   updownr?   r@   )r   r   r   rA   barr%   )r,   r-   r.   b1b2s        r2   test_legend_auto2rO   4   s     lnnGC
	#A	1F#	.	.B	1TTrT7&	4	4BIIr!ubentVn&I99999r4   legend_auto3c                      t          j                    \  } }g d}g d}|                    ||dd           |                    dd           |                    dd           |                    d	           d
S )r8   )?皙?rS   rR   rR   r   )ffffff?rT   皙?rU   r   r   zo-liner=                 ?r?   r@   N)r   r   rB   set_xlimset_ylimr%   )r,   r-   r.   r/   s       r2   test_legend_auto3r[   >   s     lnnGC&&&A***AGGAq$fG%%%KKSKKSII&Ir4   c                     t          j        dd          \  } }g }t          |j        d          D ]\  }}|                    |           |                    dgddgz  z   t          d          d	|
           |                    d          }| j        	                                 |
                    |                                                    |j                                                             t          |d         j        |d         j                   t          |d         j        |d         j                   dS )z
    Check that the legend location with automatic placement is the same,
    whatever the histogram type is. Related to issue #9580.
       )g@g333333@ncolsfigsize)rL   step
stepfilledr   r   	   r   Legend)binsr   histtyper?   r@   r      N)r   r   r    flat	set_titlehistranger%   canvasdrawappendget_window_extenttransformed	transAxesinvertedr   bounds)r,   axs
leg_bboxesr-   htlegs         r2   test_legend_auto4rx   J   s6    |!Z888HCJch =>> J JB
R
ae%))8bIIIiiFi##
!!##//0E0E0G0GHH	J 	J 	J 	J JqM(*Q-*>???JqM(*Q-*>?????r4   c                     t          j        dd          \  } }g }t          |j        d          D ].\  }}t	          j        dddd	          t	          j        t          j        d
dgd
d
gdd
gddgddgddgddgddgddgg	          d          t	          j	        ddd
ddd          fD ]}|
                    |           |                    ddgddgd           |                    |          }| j                                         |                    |                                                    |j                                                             0t)          |d         j        |d
         j                   dS )z
    Check that the automatic placement handle a rather complex
    case with non rectangular patch. Related to issue #9580.
    rg   )g333333#@g333333@r^   centerr?   )r   rR   皙?皙?C1)xywidthheightfcr   r   rR   rX   rS   )r   )r   r   r   ih  rU   C0)r   r   z	A segmentr=   r@   N)r   r   r    rh   mpatchesEllipsePolygonr   arrayWedge	add_patchrB   r%   rl   rm   rn   ro   rp   rq   rr   r   rs   )r,   rt   ru   r-   r   _patchrw   s          r2   test_legend_auto5r   `   s   
 |!Z888HCJsx!344 J JC
  !STC C C FQFQFQFS#Jc
#Jc
S#J+8 "9 "9=AC C C z33dtLLL 	! 	!F LL    
c
S#Jk:::iiCi  
!!##//0E0E0G0GHH	J 	J 	J 	J JqM(*Q-*>?????r4   legend_various_labelsc                     t          j                    } |                     d          }|                    t	          j        d          dd           |                    t	          j        dd          dd           |                    t	          j        ddd          dd	           |                    dd
           d S )Ny      r;   r   r=   gffffff@u   DéveloppésrI   __nolegend__r?   )	numpointsr   )r   figureadd_subplotrB   r   rA   linspacer%   r,   r-   s     r2   test_various_labelsr      s     *,,C			BGGBIaLL#QG'''GGBK3NG;;;GGBIaBNG;;;IIvI&&&&&r4   c                  :   t          j                    \  } }|                    ddgd          \  }t          j        t
          j        d          5  |                    |g          }ddd           n# 1 swxY w Y   t          |j	                  dk    sJ dS )	z
    Test that artists with labels starting with an underscore are not added to
    the legend, and that a warning is issued if one tries to add them
    explicitly.
    r   r   _foor=   zwith an underscorematchr1   N)
r   r   rB   pytestwarnsr	   MatplotlibDeprecationWarningr%   lenlegend_handles)r,   r-   rV   r%   s       r2   )test_legend_label_with_leading_underscorer      s     lnnGCGGQF&G))ED	d7?S	T	T	T + +D6**+ + + + + + + + + + + + + + +v$%%******s   A66A:=A:zlegend_labels_first.pngc                  f   t          j                    \  } }|                    t          j        d          dd           |                    t          j        d          dz  dd           |                    t          j        ddd	          d
d           |                    dd           d S )Nr   -or   r=   r   z:xr.      rI   ddiamondr?   F)r   markerfirst)r   r   rB   r   rA   onesr%   r   s     r2   test_labels_firstr      s     lnnGCGGBIbMM4qG)))GGBGBKKM4sG+++GGBIb"b!!3iG888II&eI,,,,,r4   zlegend_multiple_keys.pngc                  \   t          j                    \  } }|                    g dd          \  }|                    g dd          \  }|                    g dd          \  }|                    ||f||f|gg dd||ft	          d 	          ||ft	          d d
          i           d S )Nr   rg   r]   r   rg   r]   r   z-x)r]   r   r   z-d)ztwo keyszpad=0zone keyr   )ndivider   )r   pad)r   handler_map)r   r   rB   r%   r   )r,   r-   p1p2p3s        r2   test_multiple_keysr      s     lnnGC
'')))T
"
"CB
'')))T
"
"CB
'')))T
"
"CBIIBx"b2&(H(H(H8\$%?%?%?8\$A%F%F%FH  I I I I Ir4   zrgba_alpha.pngx86_64g{Gz?)r6   tolc                      t          j                    \  } }|                    t          d          d           t          j        dgd          }|j                            g d           d S )Nr   r   lwLonglabel that will go awayr{   r@   r   r   r   r   )r   r   rB   rk   r%   legendPatchset_facecolorr,   r-   rw   s      r2   test_alpha_rgbar      sg     lnnGCGGE"II!G
*34(
C
C
CCO!!...11111r4   zrcparam_alpha.pngc                  @   t          j                    \  } }|                    t          d          d           t	          j        ddi          5  t          j        dgd	          }|j                            g d
           d d d            d S # 1 swxY w Y   d S )Nr   r   r   zlegend.framealphag      ?)rcr   r{   r@   r   )	r   r   rB   rk   mplr
   r%   r   r   r   s      r2   test_alpha_rcparamr      s     lnnGCGGE"II!G	/5	6	6	6 6 6j78hGGG
 	%%nnn5556 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6s   4BBBfancyrU   c                     t          j        d           t          j        dgdz  dd           t          j        t	          j        d          t	          j        ddd          d	           t          j        t	          j        d          t	          j        d          d
d
d           t          j        ddd
gdddd           d S )Nr   r   r   zo--XXr=   r   rI   zXX
XXr   )xerryerrr   r   rX   rg   T	My legendr   )r   r   r_   shadowtitler   )r   subplotrB   r!   r   rA   errorbarr%    r4   r2   
test_fancyr      s    
 KHaS2XuD))))K	"ryQ338DDDDL2	"C' ' ' 'J=#st;!E E E E E Er4   
framealphag{Gz?c                      t          j        ddd          } | }t          j        | |dd           t          j        d           d S )Nr   r9   mylabelr   )r   r   r   )r   )r   r   r   rB   r%   )r.   r/   s     r2   test_framealphar      sN     	AsC  A	AHQr****J#r4   scatter_rc3scatter_rc1c                      t          j                     t          j        d          } |                     t	          j        d          t	          j        ddd          d           |                     ddd	gd
           dt          j        d<   t          j                     t          j        d          } |                     t	          j        d          t	          j        ddd          d           |                     ddd	gd
           d S )Nr   r   r   rI   threer=   r   rX   r   r   )r   r   r   r   zlegend.scatterpointsone)	r   r   r   r!   r   rA   r%   r   rcParams)r-   s    r2   test_rcr      s     JLLL	S		BJJry}}biAr22'JBBBII-c
  ! ! ! ,-CL'(JLLL	S		BJJry}}biAr22%J@@@II-c
  ! ! ! ! !r4   legend_expandc                     ddg} t          j        t          |           d          \  }}t          j        d          }t          ||           D ]\  }}|                    |d|z
  dd           |                    d	|
          }|                    |           |                    ||dz
  dd           |                    d|
          }|                    |           |                    d|d           dS )zTest expand modeNexpandr   r9   r:   r;   r<   r=   
upper left)r   moder>   right
lower leftrg   )r   r   r_   )	r   r   r   r   rA   r    rB   r%   
add_artist)legend_modesr,   rt   r.   r-   r   l1l2s           r2   test_legend_expandr      s    (#L|C--q11HC
	#A\** 8 8D
263e,,,YY<dY33
b
1r63f---YY7Y..
b
		lQ	77778 8r4   hatchingdefault)r6   stylec            	         dt           j        d<   t          j                    \  } }t          j        ddddd          }|                    |           t          j        dddd	d
d          }|                    |           t          j        dddddd          }|                    |           t          j        dddd	dd
d          }|                    |           |                    g dg dg ddd           |                    g dg dg dddd           |                    dd           |                    dd           |                    dd           d S ) N   ztext.kerning_factor)r   r   333333?xxzPatch
default color
filled)hatchr   )Q?r   z||r~   z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|   )rR   rX   rR   +zPath
default color)r   gQ?g)\(?C2zPath
explicit colorg{Gz皙?r   )handlelengthhandleheight)	r   r   r   	Rectangler   fill_betweenrY   rZ   r%   )r,   r-   patchs      r2   test_hatchingr      s    +,CL&'lnnGC M&#s$ >@ @ @ELLM)S#TT ?A A AELLM(CDu @B B BELLM+sCt%$( AC C CE LL OOLLL,,,%:  < < <OOOOO\\\===5K  M M M KKsKKsII11I-----r4   c                  b   t          j                    \  } }|                    t          d                    }|                     |d          }|                                 | j        g k    sJ |                    d          }|                                 |                                J d S )Nr   test)r   r   rB   rk   r%   removelegends
get_legend)r,   r-   linesrw   s       r2   test_legend_remover     s    lnnGCGGE"IIE
**UF
#
#CJJLLL;"
))F

CJJLLL==??"""""r4   c                  :   t          j                    \  } }d}d}g d}g d}|                    |||d         |d                    |                    |||d         |d                    |                    |||d         |d                    |                    d          }d	 |                                D             }d
 |j        D             }|t          t          |                    k    sJ |t          t          |                    k    sJ dS )z6Check that the legend handles and labels are reversed.r   )zFirst labelzSecond labelzThird label).,r;   r   r=   rg   Treversec                 6    g | ]}|                                 S r   get_text).0ts     r2   
<listcomp>z:test_reverse_legend_handles_and_labels.<locals>.<listcomp>7  s     ;;;aQZZ\\;;;r4   c                 6    g | ]}|                                 S r   
get_marker)r
  hs     r2   r  z:test_reverse_legend_handles_and_labels.<locals>.<listcomp>8  s     AAAallnnAAAr4   N)r   r   rB   r%   	get_textsr   listreversed)	r,   r-   r.   r/   r*   markersrw   actual_labelsactual_markerss	            r2   &test_reverse_legend_handles_and_labelsr  +  s!   lnnGC	A	A;;;FooGGGAq'!*F1IG...GGAq'!*F1IG...GGAq'!*F1IG...
))D)
!
!C;;3==??;;;MAAc.@AAAND&!1!1222222T(7"3"344444444r4   png)
extensionsc                 r   |                                  }|                    dgdd           |                    dgdd           |                    d	           |                                 }|                    dgdd           |                    dgdd           |                                 d
S )z3Check that the rendered legend entries are reversedr   rofirstr=   rg   bxsecondTr  N)r   rB   r%   )fig_testfig_refr-   s      r2   test_reverse_legend_displayr!  =  s     
				BGGQCWG%%%GGQCXG&&&IIdI					BGGQCXG&&&GGQCWG%%%IIKKKKKr4   c                   P    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd ZdS )TestLegendFunctionc                    t          j        t          d          d          }t          j        d          5 }t          j                     d d d            n# 1 swxY w Y   |                    t          j                    |dg           d S )Nr   hello worldr=   matplotlib.legend.Legendr   rB   rk   r   r   r%   assert_called_withgcaselfr   rd   s      r2   test_legend_no_argsz&TestLegendFunction.test_legend_no_argsM  s    r-888Z233 	vJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!!#'))U]ODDDDDs   AAAc                    t          j        t          d                    }t          j        d          5 }t          j        |dg           d d d            n# 1 swxY w Y   |                    t          j                    |dg           d S )Nr   r&  r%  r'  r*  s      r2   %test_legend_positional_handles_labelsz8TestLegendFunction.test_legend_positional_handles_labelsS  s    r##Z233 	/vJu}o...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/!!#'))U]ODDDDDs   AA Ac                     t          j        t          d                    }t          j        t
          d          5  t          j        |           d d d            d S # 1 swxY w Y   d S )Nr   zbut found an Artistr   )r   rB   rk   r   raises	TypeErrorr%   )r+  r   s     r2   #test_legend_positional_handles_onlyz6TestLegendFunction.test_legend_positional_handles_onlyY  s    r##]9,ABBB 	 	 Ju	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AA#&A#c                     t          j        t          d          d          }t          j        d          5 }t          j        dg           d d d            n# 1 swxY w Y   |                    t          j                    |dg           d S )Nr   r%  r=   r&  foobarr'  r*  s      r2   "test_legend_positional_labels_onlyz5TestLegendFunction.test_legend_positional_labels_only`  s    r-888Z233 	#vJz"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#!!#'))UXJ?????s   AA!Ac                 *   t          j        t          d          d          }t          j        d          5 }t          j        |dgd           d d d            n# 1 swxY w Y   |                    t          j                    |dgd           d S )Nr   r%  r=   r&  r4  r   r@   r'  r*  s      r2   test_legend_three_argsz)TestLegendFunction.test_legend_three_argsf  s    r-888Z233 	7vJuxjg6666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7!!#'))UXJG!LLLLLs   AA!$A!c                 :   t          j        t          d          d          }t          j        d          5 }|dgf|_        t          j        ddi           d d d            n# 1 swxY w Y   |                    t          j                    gddi           d S )Nr   r%  r=   z,matplotlib.legend._get_legend_handles_labels1rg   )r   )	r   rB   rk   r   r   return_valuer%   r(  r)  )r+  r   handles_labelss      r2   test_legend_handler_mapz*TestLegendFunction.test_legend_handler_mapl  s    r-888Z 5 6 6 	-9G*/-*@N'JC8,,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	))3799+Qx@@@@@s   "A&&A*-A*c                    t          j                    \  }}t          j        ddd          }|                    ||d          \  }|                    |d|z  d          \  }|                    |d|z  d	          \  }t          j        d
          5 }|                    ||g           d d d            n# 1 swxY w Y   |                    |||gd	dg           d S )Nr   r      r.   r=   rg   2xr]   3xr&  r   	r   r   r   r   rB   r   r   r%   r(  )r+  r,   r-   r.   ln1ln2ln3rd   s           r2   test_legend_kwargs_handles_onlyz2TestLegendFunction.test_legend_kwargs_handles_onlyt  s   ,..RK1b!!wwq!3w''wwq!A#Tw**wwq!A#Tw**Z233 	*vIIsCjI)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*!!"sCj4,?????s   B::B>B>c                    t          j                    \  }}t          j        ddd          }|                    ||          \  }|                    |d|z            \  }t          j        d          5 }|                    ddg           d d d            n# 1 swxY w Y   |                    |||gddg           d S )	Nr   r   r>  rg   r&  r.   r?  r*   rA  )r+  r,   r-   r.   rB  rC  rd   s          r2   test_legend_kwargs_labels_onlyz1TestLegendFunction.test_legend_kwargs_labels_only~  s    ,..RK1b!!wwq!}}wwq!A#Z233 	*vIIc4[I)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*!!"sCj3+>>>>>s   4BB Bc                    t          j                    \  }}t          j        ddt          j        z  d          }|                    |t          j        |          d          \  }|                    |t          j        |          d          \  }t          j	        d          5 }|
                    d||f	           d d d            n# 1 swxY w Y   |                    |||fd           d S )
Nr   rg      sinr=   cosr&  r   r   )r*   r1   )r   r   r   r   pirB   rK  rL  r   r   r%   r(  )r+  r,   r-   thlnslncrd   s          r2   !test_legend_kwargs_handles_labelsz4TestLegendFunction.test_legend_kwargs_handles_labels  s   ,..R[AbeGT**wwr26"::Uw33wwr26"::Uw33Z233 	=vIIZ#sI<<<	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	!!"sCj*=====s   &CCCc                 &   t          j                    \  }}t          j        ddt          j        z  d          }|                    |t          j        |          d          \  }|                    |t          j        |          d          \  }t          j	        t                    5 }|                    ||fd           d d d            n# 1 swxY w Y   t          |          d	k    sJ t          |d         j                  d
k    sJ d S )Nr   rg   rJ  rK  r=   rL  rM  rG  r   MYou have mixed positional and keyword arguments, some input may be discarded.)r   r   r   r   rN  rB   rK  rL  r   r   UserWarningr%   r   strmessage)r+  r,   r-   rO  rP  rQ  records          r2   test_warn_mixed_args_and_kwargsz2TestLegendFunction.test_warn_mixed_args_and_kwargs  s4   ,..R[AbeGT**wwr26"::Uw33wwr26"::Uw33\+&& 	5&IIsCjI444	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	56{{a6!9$%%     s   +CCCc                 |   ddl m}  |d          }|                                }|                    g dg dd          \  }|                    g dg dd          \  }t	          j        d	          5 }t          j                     d d d            n# 1 swxY w Y   |                    |||gddg           d S )
Nr   )host_subploto   r   r   rg   Densityr=   )r   r]   rg   Temperaturer&  )	mpl_toolkits.axes_grid1r[  twinxrB   r   r   r   r%   r(  )r+  r[  hostparr   r   rd   s          r2   test_parasitez TestLegendFunction.test_parasite  s   888888|C  jjllii			999Ii>>hhyyy)))=hAAZ233 	vJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!!$R9m2LMMMMMs   6BBBN)__name__
__module____qualname__r,  r.  r2  r5  r7  r<  rE  rH  rR  rY  rd  r   r4   r2   r#  r#  K  s        E E EE E E  @ @ @M M MA A A@ @ @? ? ?> > >
 
 
N N N N Nr4   r#  c                   2    e Zd Zd Zd Zd Zd Zd Zd ZdS )TestLegendFigureFunctionc                 :   t          j                    \  }}|                    t          d                    }t	          j        d          5 }|                    |dg           d d d            n# 1 swxY w Y   |                    ||dg|j                   d S )Nr   r&  r%  bbox_transform	r   r   rB   rk   r   r   r%   r(  transFigurer+  r,   r-   r   rd   s        r2   test_legend_handle_labelz1TestLegendFigureFunction.test_legend_handle_label  s    ,..Rb		""Z233 	/vJJu}o...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/!!#u}o14 	" 	B 	B 	B 	B 	Bs   A11A58A5c                 8   t          j                    \  }}|                    t          d          d          }t	          j        d          5 }|                                 d d d            n# 1 swxY w Y   |                    ||dg|j                   d S )Nr   r%  r=   r&  rk  rm  ro  s        r2   r,  z,TestLegendFigureFunction.test_legend_no_args  s    ,..Rb		77Z233 	vJJLLL	 	 	 	 	 	 	 	 	 	 	 	 	 	 	!!#u}o14 	" 	B 	B 	B 	B 	Bs   A00A47A4c                 8   t          j                    \  }}|                    t          d                    }t	          j        d          5 }|                    dg           d d d            n# 1 swxY w Y   |                    ||dg|j                   d S )Nr   r&  r4  rk  rm  ro  s        r2   test_legend_label_argz.TestLegendFigureFunction.test_legend_label_arg  s    ,..Rb		""Z233 	#vJJz"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#!!#uxj14 	" 	B 	B 	B 	B 	Bs   A00A47A4c                    t          j                    \  }}|                    t          d                    }t	          j        t          d          5  |                    |dgd           d d d            n# 1 swxY w Y   t	          j        t          d          5  |                    |dgdd           d d d            d S # 1 swxY w Y   d S )Nr   z0-2r   r4  r   leftr@   )r   r   rB   rk   r   r0  r1  r%   )r+  r,   r-   r   s       r2   test_legend_label_three_argsz5TestLegendFigureFunction.test_legend_label_three_args  s?   ,..Rb		""]9E222 	3 	3JJuxj'222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3]9E222 	? 	?JJuxj'vJ>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s$   A99A= A=CCCc                    t          j        dd          \  }}|d                             t          d                    }|d                             t	          j        d          dz            }t          j        d          5 }|                    dd||f	           d d d            n# 1 swxY w Y   |	                    |||fdd|j
        
           d S )Nr   rg   r   r          @r&  r   rM  )r   r*   r1   )r   rl  )r   r   rB   rk   r   rA   r   r   r%   r(  rn  )r+  r,   rt   r   lines2rd   s         r2   test_legend_kw_argsz,TestLegendFigureFunction.test_legend_kw_args  s   <1%%SAE"II&&QRYr]]R/00Z233 	PvJJ7:vJOOO	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P 	P!!%*'? 	" 	, 	, 	, 	, 	,s   B,,B03B0c                    t          j        dd          \  }}|d                             t          d                    }|d                             t	          j        d          dz            }t          j        t                    5 }|	                    ||fd           d d d            n# 1 swxY w Y   t          |          dk    sJ t          |d         j                  dk    sJ d S )	Nr   rg   r   r   rx  rM  rG  rT  )r   r   rB   rk   r   rA   r   r   rU  r%   r   rV  rW  )r+  r,   rt   r   ry  rX  s         r2   test_warn_args_kwargsz.TestLegendFigureFunction.test_warn_args_kwargs  s   <1%%SAE"II&&QRYr]]R/00\+&& 	;&JJvzJ:::	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;6{{a6!9$%%     s   
B00B47B4N)	re  rf  rg  rp  r,  rs  rv  rz  r|  r   r4   r2   ri  ri    sw        B B BB B BB B B? ? ?, , ,	 	 	 	 	r4   ri  c                     d dD             } | d dD             z  } | d dD             z  } | d dD             z  } g d}g d}g d	}g d
}||||||||||||g}g dg dg dg dg dg dg dg dg dg dg dg dg}t          |           D ]\  }}t          |           t          j        dd          \  }	}
|
                    t          d          d           |	                    d|z             }|	                                 t          |
	                                j
        ||                    t          |	                                j
        ||                    d S )Nc                     g | ]}d |z   S )zupper r   r
  poss     r2   r  z.test_figure_legend_outside.<locals>.<listcomp>  s    CCCX^CCCr4   )ru  r{   r   c                     g | ]}d |z   S )zlower r   r  s     r2   r  z.test_figure_legend_outside.<locals>.<listcomp>  s    DDDhnDDDr4   c                     g | ]}d |z   S )zleft r   r  s     r2   r  z.test_figure_legend_outside.<locals>.<listcomp>  s    DDDgmDDDr4   )lowerr{   upperc                     g | ]}d |z   S )zright r   r  s     r2   r  z.test_figure_legend_outside.<locals>.<listcomp>  s    EEEhnEEEr4   )QnX4@Qn;@l@gE@)r  g Q@r  lf@)gLNb@r  r  r  )r  r  gE@r  )      $@     X@     `@     p@)     (u@r       |@r  )  r       @r  )r  r  r       F@)r  r  r  r  )     ؄@r  r  r  )r       q@r       s@)r  r  r  r  )r  r  r  r  )r  r  r  r  Tr9   )constrained_layoutdpir   Boo1r=   zoutside r@   )	enumerateprintr   r   rB   rk   r%   draw_without_renderingr   ro   extents)todosupperextlowerextleftextrightextaxbblegbbnntodor,   rt   rw   s               r2   test_figure_legend_outsider    s   CC'BCCCE	DD(CDDDDE	DD'CDDDDE	EE(DEEEEE888H888H777G888HhhWgh*D
 %$$'''%%%###&&&$$$"""&&&$$$"""'''%%%'E e$$ 
# 
#Dd<4SAAASr&)))jjZ$.j//""$$$--//7R	" 	" 	"--//7b		# 	# 	# 	#
# 
#r4   zlegend_stackplot.pngc                  @   t          j                    \  } }t          j        ddd          }d|z  }d|z  dz   }d|z  dz   }|                    ||||g d	           |                    d
           |                    d           |                    d           dS )z/Test legend for PolyCollection using stackplot.r   r   rX   rx  r   g      @rg   )y1y2y3rG  )r   r   )r   F   r?   r@   N)r   r   r   r   	stackplotrY   rZ   r%   )r,   r-   r.   r  r  r  s         r2   test_legend_stackplotr    s     lnnGC
Ar2A	qB	q1B	q1BLLBB'9'9'9L:::KKKKII&Ir4   c                      t          j                    \  } }t          j                    \  }}|                    t          d          t          d                    }|                    |d           d S )Nr]   foo)r   r   rL   rk   r%   )r,   r-   fig2ax2brss        r2   test_cross_figure_patch_legendr    sY    lnnGCID#
&&q588
$
$CKKUr4   c            
         t          j                    \  } }|                    t          j        gt          j        gdddd          }|                    |gdg           t          j                    \  } }dD ]e}d}t          j                            d|          \  }}d	t          j                            |          z  }|                    |||||d
d           f|                                 |                    d           d S )Nr;   r   r]   )marker	facecolorr   sr!   )redgreenbluei  rg   g      i@r   none)r   r  r   alpha
edgecolorsT)	r   r   r!   r   nanr%   r   randgrid)r,   r-   r  r0   nr.   r/   scales           r2   test_nanscatterr  #  s    lnnGC


BF8bfXc C1 	 	6 	6A IIqcI;lnnGC) 1 1y~~a##1	q)))


1a5E 	 	1 	1 	1 	1 IIKKKGGDMMMMMr4   c                  2   t          j                    \  } }|                    ddddd           |                    dddd	d           |                                 t	          j        |g          \  }}t          |          d
k    sJ t          j                    \  } }|                    ddddd           |                    dddd	d           |                                 t	          j        |g          \  }}t          |          d
k    sJ d S )NrW   rX   kr;   r   )r0   r  r   r   r   vrg   )r   r   r!   r%   mlegend_get_legend_handles_labelsr   )r,   r-   handlabs       r2   test_legend_repeatcheckokr  7  s    lnnGCJJsCs3fJ===JJsCs3fJ===IIKKK2B488ID#s88q====lnnGCJJsCs3fJ===JJsCs3fJ===IIKKK2B488ID#s88q======r4   znot_covering_scatter.pngc                  <   g d} t          d          D ]!}t          j        |g|g| |                    "t          j        g dd           t          j                                        dd           t          j                                        dd           d S )	N)r   r   r   r]   )r0   )r  r  r  r?   r@   g      皙@)rk   r   r!   r%   r)  rY   rZ   )r+   r  s     r2   test_not_covering_scatterr  F  s    __F1XX / /QC!F1I.....J$$$&1111GIItS!!!GIItS!!!!!r4   z"not_covering_scatter_transform.pngc                  >   t          j                                        dd          } t          j        ddd          }t          j        ||           t          j        dgdg| t          j                    j	        z              t          j
        dd	gd
           d S )Nir   r        r   )	transformr  rL   r?   r@   )mtransformsAffine2D	translater   r   r   rB   r!   r)  	transDatar%   )offsetr.   s     r2   #test_not_covering_scatter_transformr  R  s     !##--c266F
Ar4  AHQNNNKrdfswyy/B&BCCCCJu~6******r4   c                  V   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          }t          j        |d          }t          j        |dd	          }t          j                    \  }}|                    |           |                    |           |                    |           |                    |||gg d          }|j        \  }	}
}t          |||f|	|
|f          D ]*\  }}|                                d         |j	        k    sJ +d S )N)r   r   )r   r   )r   333333?)r}   r}   gffffff?r}   r|   r   r   r  rS   z--r]   )
linestylesr   z-.)r  :)line1line2zline 3r   )
mcollectionsLineCollectionr   r   add_collectionr%   r   r    get_linestyles_dash_pattern)lines1ry  lines3lc1lc2lc3r,   r-   rw   h1h2h3ohlhs                 r2   !test_linecollection_scaled_dashesr  ^  su    8X"67FRy2r(#r2hR%9:FRy2r(#r2hR%9:F

%f!
D
D
DC

%f
>
>
>C

%f
D
D
DClnnGCccc
))S#sO%A%A%A
B
BC#JBBsCoB|44 : :B  ""1%)999999: :r4   c                      t          j                    \  } }|                    t          d          d           |                    d           dS )z(Test legend handler with numpoints <= 1.r   r   r=   r   r   N)r   r   rB   rk   r%   r   s     r2   test_handler_numpointsr  r  sI     lnnGCGGE!HHFG###IIIr4   c                  T   t          j                    \  } }|                    dddd           t          j        t
                    5 }|                                 ddd           n# 1 swxY w Y   t          |          dk    sJ t          j                    \  }}|                    t          j
                            ddd                     t          j                    5  t          j        d           |                                 ddd           dS # 1 swxY w Y   dS )	z2Test that Text artists with labels raise a warningr   textr   )r.   r/   r  r   Nr   )r   r   error)r   r   r  r   r   rU  r%   r   
pcolormeshr   r   uniformwarningscatch_warningssimplefilterr"   )r,   r-   rX  fs       r2   test_text_nohandler_warningr  z  s~   lnnGCGGa1gG...	k	"	" f
		              v;;! LNNEArMM")##Aq(33444		 	"	" ' 'g&&&
$$&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's$   	A**A.1A.')DD!$D!c                  Z    t          j        g g d           t          j                     dS )z1Test legend when bar chart is empty with a label.r   r=   N)r   rL   r%   r   r4   r2    test_empty_bar_chart_with_legendr    s*     GB&!!!!JLLLLLr4   zshadow_argument_types.pngmpl20c            
         t          j                    \  } }|                    g dd           |                    dd          |                    dd          |                    d	d
dd          |                    dddd          |                    dddd          f}|D ]}|                    |           |                    d           d S )Nr   r   r=   r   Tr   r   upper rightFr   r  rS   )r0   r  center right)rS   r}   r   )r0   oyr   ztab:cyanr   )r0   oxlower rightr@   )r   r   rB   r%   r   )r,   r-   legsls       r2   test_shadow_argument_typesr	    s    lnnGCGGIIIVG$$$ II,tI44II-I66II-',s;;  = =II.'6bAA  C CII,'1<<  > >D   
aII-I     r4   c                      t          j                    \  } }|                    g dd           t          j        t
          d          5  |                    dd           d d d            d S # 1 swxY w Y   d S )	Nr   r   r=   zdict or boolr   r   aardvarkr   )r   r   rB   r   r0  
ValueErrorr%   r   s     r2   test_shadow_invalid_argumentr    s     lnnGCGGIIIVG$$$	z	8	8	8 7 7
		l:	6667 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7s   A00A47A4c                      t          j                    \  } }|                    t          d          d           |                    dd          }|                                                                dk    sJ d S )Nr9   r   r=   Tw)r   r  r   )r   r   rB   rk   r%   	get_frame	get_alphar   s      r2   test_shadow_framealphar    so     lnnGCGGE#JJfG%%%
))43)
/
/C==??$$&&!++++++r4   c                  F   t          j                    \  } }|                    t          d                     |                                }|                                                                dk    sJ |                                                                rJ d S )Nr    )r   r   rB   rk   r%   	get_titler	  get_visibler   s      r2   test_legend_title_emptyr    s     lnnGCGGE"II
))++C==??##%%++++}}**,,,,,,,r4   c                  F   t          j        d          \  } }|                    t          d          d           |                                }|                    | j                                                  j        }t          j        d          \  } }|                    t          d          d           |                                }|                    | j                                                  j        }t          j
        |dz  d          |k    sJ d S )	Nr9   r  r   Aardvarkr=      rg   rS   )r   r   rB   rk   r%   ro   rl   get_rendererx0r   approx)r,   r-   rw   x01x02s        r2    test_legend_proper_window_extentr!    s    ls###GCGGE"IIZG(((
))++C



 7 7 9 9
:
:
=Cls###GCGGE"IIZG(((
))++C



 7 7 9 9
:
:
=C=Q$$++++++r4   c                  P   t          j        d          \  } }|                    t          d          d           |                                }|                                 }| j                                         |                                 |                                 d S )Nr9   r  r   r  r=   )r   r   rB   rk   r%   rl   rm   ro   )r,   r-   rw   leg2s       r2   "test_window_extent_cached_rendererr$    s    ls###GCGGE"IIZG(((
))++C::<<DJOOr4   c                     t          j        t          d                     t          j        t
                    5  t          j        ddddd           d d d            n# 1 swxY w Y   t          j        dt          dd                    } |                                 	                                dk    sJ t          j
        dd	d
          \  }}|j        }|d                             t          d                     |d                             dd          }|                                                                dk    sJ |d                             t          d                     |d                             dddd          }|                                                                dk    sJ |d                             t          d                     d t          j        d<   |d                             dddi          }|                                                                t          j        d         k    sJ |d	                             t          d                     |d	                             d          }|                                                                t          j        d         k    sJ |d                             t          d                     dt          j        d<   |d                             dddi          }|                                                                dk    sJ |d                             t          d                     |d                             d          }|                                                                dk    sJ d S )Nr   r     serif)familysize)r   title_fontsizetitle_fontproperties)r   r+  rg   r]   )r   r   )r`   r   )r   r*  r   zlegend.title_fontsizer(  z	font.sizer   r   r   r   )r   rB   rk   r   r0  r  r%   r   r  get_sizer   rh   get_fontsizer   r   )	rw   r,   axesleg0leg1r#  leg3leg4leg5s	            r2   #test_legend_title_fontprop_fontsizer5    s   HU2YY	z	"	" I I
B3:B(G(G	I 	I 	I 	II I I I I I I I I I I I I I I *:N.5B=@ =@ =@ A A AC==??##%%++++Q7333IC9DGLLr7>>
2>>>D>>((**b0000GLLr7>>
:A2/N/N  P PD>>((**b0000GLLr,0CL()7>>
08'/B  D DD>>((**cl;.GGGGGGLLr7>>
>++D>>((**cl;.GGGGGGLLr,.CL()7>>
08'/B  D DD>>((**b0000GLLr7>>
>++D>>((**b000000s   A""A&)A&	alignment)r{   ru  r   c                 &   t          j                    \  }}|                    t          d          d           |                    d|           }|                                d         j        | k    sJ |                                | k    sJ d S )Nr   r   r=   r  )r   r6  r   )r   r   rB   rk   r%   get_childrenrH   get_alignmentr6  r,   r-   rw   s       r2   test_legend_alignmentr;    s    lnnGCGGE"IIVG$$$
))*	)
:
:Ca &)3333)++++++r4   r   rz   c                 *   t          j                    \  }}|                    t          d          d           |                                }|                    |            |                                t          j        j	        |          k    sJ d S )Nr   r   r=   )
r   r   rB   rk   r%   set_loc_get_locr  rd   codesr   r,   r-   rw   s       r2   test_ax_legend_set_locrA    su    lnnGCGGE"IIVG$$$
))++CKK<<>>W^1#6666666r4   )zoutside rightr   c                    t          j                    \  }}|                    t          d          d           |                                }|                    |            |                     d          r|                                 d         n| } |                                t          j
        j        |          k    sJ d S )Nr   r   r=   outsider   )r   r   rB   rk   r%   r=  
startswithsplitr>  r  rd   r?  r@  s       r2   test_fig_legend_set_locrF    s    lnnGCGGE"IIVG$$$
**,,CKKNN955
>#))++a..3C<<>>W^1#6666666r4   c                 J   t          j                    \  }}|                    t          d          d           |                                }|                    |            |                                d         j        | k    sJ |                                | k    sJ d S )Nr   r   r=   r   )	r   r   rB   rk   r%   set_alignmentr8  rH   r9  r:  s       r2   test_legend_set_alignmentrI  "  s    lnnGCGGE"IIVG$$$
))++Ci   a &)3333)++++++r4   r0   )r  r  )r   r   r   c                 n   t          j                    \  }}|                    t          j        d          t          j        d          dz  d           |                    t          j        d          t          j        d          dz  d           |                    t          j        d          t          j        d          dz  d           |                    | 	          }|                                D ]6}t          j        	                    |
                                |           sJ 7d S )
Nr   r   #1r=   rg   #2r]   #3
labelcolor)r   r   rB   r   rA   r%   r  r   r+   
same_color	get_colorr0   r,   r-   rw   r  s        r2   test_legend_labelcolor_singlerS  ,  s     lnnGCGGBIbMM29R==?$G777GGBIbMM29R==?$G777GGBIbMM29R==?$G777
))u)
%
%C > >z$$T^^%5%5u======> >r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          dz  d           |                    t          j        d          t          j        d          dz  d           |                    t          j        d          t          j        d          dz  d           |                    g d	
          }t          |                                g d	          D ]9\  }}t          j	        
                    |                                |          sJ :d S )Nr   r   rK  r=   rg   rL  r]   rM  r   r   r   rN  r   r   rB   r   rA   r%   r    r  r   r+   rP  rQ  r,   r-   rw   r  r0   s        r2   test_legend_labelcolor_listrX  9  s
   lnnGCGGBIbMM29R==?$G777GGBIbMM29R==?$G777GGBIbMM29R==?$G777
)))
/
/C3==??OOO<< > >ez$$T^^%5%5u======> >r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          d	z  d
d           |                    d          }t          |                                g d          D ]9\  }}t          j	        
                    |                                |          sJ :d S )Nr   r   rK  r   r   r0   rg   rL  r   r]   rM  r   	linecolorrN  rU  rV  rW  s        r2    test_legend_labelcolor_linecolorr\  E  s   lnnGCGGBIbMM29R==?$cGBBBGGBIbMM29R==?$cGBBBGGBIbMM29R==?$cGBBB
)){)
+
+C3==??OOO<< > >ez$$T^^%5%5u======> >r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          d	z  d
d           |                    d          }t          |                                g d          D ]9\  }}t          j	        
                    |                                |          sJ :d S )Nr   r   rK  r   r   rg   rL  r   r]   rM  r   r[  rN  rU  r   r   r!   r   rA   r%   r    r  r   r+   rP  rQ  rW  s        r2   /test_legend_pathcollection_labelcolor_linecolorr_  Q  s   lnnGCJJry}}bimmAoTSJAAAJJry}}bimmAoTSJAAAJJry}}bimmAoTSJAAA
)){)
+
+C3==??OOO<< > >ez$$T^^%5%5u======> >r4   c                     t          j                    \  } }t          j                                                            g dd          }|                    t          j        d          t          j        d          dz  d|           |                    d          }|	                                \  }t          j                            |                                d          sJ d S )	NrU  r   r   rK  r   r[  rN  black)r   r   r   r   default_rngchoicer!   rA   r%   r  r   r+   rP  rQ  )r,   r-   r+   rw   r  s        r2   8test_legend_pathcollection_labelcolor_linecolor_iterablerd  ]  s     lnnGCY""$$++OOOR@@FJJry}}bimmAoTVJDDD
)){)
+
+CMMOOED:  !1!17;;;;;;;r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          t          j        d          d           |                    d          }|                                \  }t          j        	                    |
                                d          sJ d S )Nr   rK  )r   r   r[  rN  ra  )r   r   r!   r   rA   r%   r  r   r+   rP  rQ  )r,   r-   rw   r  s       r2   4test_legend_pathcollection_labelcolor_linecolor_cmaprf  i  s     lnnGCJJry}}bimmry}}DJIII
)){)
+
+CMMOOED:  !1!17;;;;;;;r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          d	z  d
d           |                    d          }t          |                                g d          D ]9\  }}t          j	        
                    |                                |          sJ :d S )Nr   r   rK  r   r   markeredgecolorrg   rL  r   r]   rM  r   ri  rN  rU  rV  rW  s        r2   &test_legend_labelcolor_markeredgecolorrj  t     lnnGCGGBIbMM29R==?$GLLLGGBIbMM29R==?$GLLLGGBIbMM29R==?$GLLL
))0)
1
1C3==??OOO<< > >ez$$T^^%5%5u======> >r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          d	z  d
d           |                    d          }t          |                                g d          D ]9\  }}t          j	        
                    |                                |          sJ :d S )Nr   r   rK  r   r   r   rg   rL  r   r]   rM  r   ri  rN  rU  r^  rW  s        r2   5test_legend_pathcollection_labelcolor_markeredgecolorrn       lnnGCJJry}}bimmAoTSJIIIJJry}}bimmAoTSJIIIJJry}}bimmAoTSJIII
))0)
1
1C3==??OOO<< > >ez$$T^^%5%5u======> >r4   c                      t          j                    \  } }t          j                                                            g dd          }|                    t          j        d          t          j        d          dz  d|           |                    d          }t          |
                                dg          D ]9\  }}t          j                            |                                |          sJ :d S )	NrU  r   r   rK  rm  ri  rN  r  r   r   r   r   rb  rc  r!   rA   r%   r    r  r   r+   rP  rQ  r,   r-   r+   rw   r  r0   s         r2   >test_legend_pathcollection_labelcolor_markeredgecolor_iterablers         lnnGCY""$$++OOOR@@FJJry}}bimmAoTVJLLL
))0)
1
1C3==??SE22 > >ez$$T^^%5%5u======> >r4   c                  2   t          j                    \  } }t          j                            t
          j                            d                    }|                    t          j	        d          t          j	        d          dt          j	        d          |d           |
                    d          }t          |                                dg          D ]9\  }}t          j                            |                                |          sJ :d S )Nr   rK  Reds)r   r   r   cmapri  rN  r  r   r   r   cmviridisr   r   r  r!   rA   r%   r    r  r+   rP  rQ  )r,   r-   r  rw   r  r0   s         r2   :test_legend_pathcollection_labelcolor_markeredgecolor_cmapr{    s     lnnGC	r 2 233JJJ
	"
	"
)B--     ))0)
1
1C3==??SE22 > >ez$$T^^%5%5u======> >r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          d	z  d
d           |                    d          }t          |                                g d          D ]9\  }}t          j	        
                    |                                |          sJ :d S )Nr   r   rK  r   r   markerfacecolorrg   rL  r   r]   rM  r   r~  rN  rU  rV  rW  s        r2   &test_legend_labelcolor_markerfacecolorr    rk  r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          d	z  d
d           |                    d          }t          |                                g d          D ]9\  }}t          j	        
                    |                                |          sJ :d S )Nr   r   rK  r   r   r  rg   rL  r   r]   rM  r   r~  rN  rU  r^  rW  s        r2   5test_legend_pathcollection_labelcolor_markerfacecolorr    ro  r4   c                      t          j                    \  } }t          j                                                            g dd          }|                    t          j        d          t          j        d          dz  d|           |                    d          }t          |
                                dg          D ]9\  }}t          j                            |                                |          sJ :d S )	NrU  r   r   rK  r  r~  rN  r  rq  rr  s         r2   >test_legend_pathcollection_labelcolor_markerfacecolor_iterabler    rt  r4   c                  0   t          j                    \  } }t          j                            t
          j                            d                    }|                    t          j	        d          t          j	        d          dt          j	        d          |           |
                    d          }t          |                                dg          D ]9\  }}t          j                            |                                |          sJ :d S )Nr   rK  )r   r   r  r~  rN  r  rx  )r,   r-   
facecolorsrw   r  r0   s         r2   8test_legend_pathcollection_labelcolor_markfacecolor_cmapr    s     lnnGC	r 2 233JJJ
	"
	"
)B--     ))0)
1
1C3==??SE22 > >ez$$T^^%5%5u======> >r4   c                    t          j                    \  }}|                    t          j        d          t          j        d          dz  d           |                    t          j        d          t          j        d          dz  d           |                    t          j        d          t          j        d          dz  d           | t
          j        d	<   |                                }|                                D ]6}t
          j	        
                    |                                |           sJ 7d S )
Nr   r   rK  r=   rg   rL  r]   rM  legend.labelcolor)r   r   rB   r   rA   r   r   r%   r  r+   rP  rQ  rR  s        r2   %test_legend_labelcolor_rcparam_singler    s     lnnGCGGBIbMM29R==?$G777GGBIbMM29R==?$G777GGBIbMM29R==?$G777(-CL$%
))++C > >z$$T^^%5%5u======> >r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          d	z  d
d           dt
          j        d<   |                                }t          |	                                g d          D ]9\  }}t
          j
                            |                                |          sJ :d S )Nr   r   rK  r   rZ  rg   rL  r   r]   rM  r   r[  r  rU  r   r   rB   r   rA   r   r   r%   r    r  r+   rP  rQ  rW  s        r2   (test_legend_labelcolor_rcparam_linecolorr    s   lnnGCGGBIbMM29R==?$cGBBBGGBIbMM29R==?$cGBBBGGBIbMM29R==?$cGBBB(3CL$%
))++C3==??OOO<< > >ez$$T^^%5%5u======> >r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          d	z  d
d           dt
          j        d<   |                                }t          |	                                g d          D ]9\  }}t
          j
                            |                                |          sJ :d S )Nr   r   rK  r   rh  rg   rL  r   r]   rM  r   ri  r  rU  r  rW  s        r2   .test_legend_labelcolor_rcparam_markeredgecolorr       lnnGCGGBIbMM29R==?$GLLLGGBIbMM29R==?$GLLLGGBIbMM29R==?$GLLL(9CL$%
))++C3==??OOO<< > >ez$$T^^%5%5u======> >r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          d	z  d
d           dt
          j        d<   |                                }t          |	                                g d          D ]9\  }}t
          j
                            |                                |          sJ :d S )Nr   r   rK  r   rh  rg   rL  r   r]   rM  r   mecr  rU  r  rW  s        r2   4test_legend_labelcolor_rcparam_markeredgecolor_shortr  	     lnnGCGGBIbMM29R==?$GLLLGGBIbMM29R==?$GLLLGGBIbMM29R==?$GLLL(-CL$%
))++C3==??OOO<< > >ez$$T^^%5%5u======> >r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          d	z  d
d           dt
          j        d<   |                                }t          |	                                g d          D ]9\  }}t
          j
                            |                                |          sJ :d S )Nr   r   rK  r   r}  rg   rL  r   r]   rM  r   r~  r  rU  r  rW  s        r2   .test_legend_labelcolor_rcparam_markerfacecolorr    r  r4   c                     t          j                    \  } }|                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          dz  dd           |                    t          j        d          t          j        d          d	z  d
d           dt
          j        d<   |                                }t          |	                                g d          D ]9\  }}t
          j
                            |                                |          sJ :d S )Nr   r   rK  r   r}  rg   rL  r   r]   rM  r   mfcr  rU  r  rW  s        r2   4test_legend_labelcolor_rcparam_markerfacecolor_shortr  #  r  r4   c                     t          j                    } |                                 rJ |                     d           |                                 sJ |                     d           |                                 rJ d S )NTF)r   r%   get_draggableset_draggabler%   s    r2   test_get_set_draggabler  0  s    Z\\F##%%%%%
!!!!!
##%%%%%%%r4   	draggable)TFc                     t          j                    \  }}|                    t          d          d           |                    |           }|                                | u sJ d S )Nr   shabnamsr=   )r  )r   r   rB   rk   r%   r  )r  r,   r-   rw   s       r2   test_legend_draggabler  9  sc    lnnGCGGE"IIZG(((
))i)
(
(C)++++++r4   c                     t          j        g dddd          \  } }}t          j                    }|j        D ]}|                    d           |                                d d         |d                                         d d         k    sJ |                                d d         |d                                         d d         k    sJ d S )	Nr   g      ?datar  )r  r   r0   rX   rI   r   )r   rj   r%   r   	set_alphaget_facecolorget_edgecolor)r.   r  hhr%   r  s        r2   test_alpha_handlesr  A  s    x			V5IIIHAq"Z\\F#  
Scrc"be&9&9&;&;CRC&@@@@@crc"be&9&9&;&;CRC&@@@@@@@r4   c                 0   dt           j        d<   dt           j        d<   dt           j        d<   t          j                    \  }}|                    ddd	           |                    d
           |j                                         d| j        vsJ d S )Nr'  zfont.familyzComputer Modernz
font.serifTztext.usetexr   inputr=   r   r,  z Font family ['serif'] not found.)	r   r   r   r   rB   r%   rl   rm   r  )caplogr,   r-   s      r2   test_usetex_no_warnr  J  s    ")CL!2CL"&CLlnnGCGGAqG   IIKI   JOO-V[@@@@@@r4   c                  H   t          j                    \  } }| j                                         t	          d          D ]+}|                    t          j        d          |           ,t          ddi          5  |	                                }d d d            n# 1 swxY w Y   t          j        t                    5 }|                     |           d d d            n# 1 swxY w Y   t          |          dk    sJ |D ]}t          |j                  dk    sJ d S )Nr    r=   z
legend.locr?   rg   zGCreating legend with loc="best" can be slow with large amounts of data.)r   r   rl   rm   rk   rB   r   rA   r
   r%   r   r   rU  draw_artistr   rV  rW  )r,   r-   idxr%   recordsrX  s         r2   test_warn_big_data_best_locr  X  s   lnnGCJOOT{{ , ,
	$s++++	\6*	+	+                	k	"	"  g                              w<<1    6>""            s$   <BB!$B!C##C'*C'c                  .   t          j                    \  } }| j                                         t	          d          D ]+}|                    t          j        d          |           ,|                    d          }| 	                    |           d S )Nr  r  r=   r?   )
r   r   rl   rm   rk   rB   r   rA   r%   r  )r,   r-   r  r%   s       r2   (test_no_warn_big_data_when_loc_specifiedr  j  s    lnnGCJOOT{{ , ,
	$s++++YYvFOOFr4   label_arraylowhigh)r  r  c                     g d}ddgddgddgg}t          j                    \  }}|                    |||            |                                }d |                                D             }|d	d
gk    sJ d S )Nr   r   rg   r   r   rc   r=   c                 6    g | ]}|                                 S r   r  r
  entrys     r2   r  z;test_plot_multiple_input_multiple_label.<locals>.<listcomp>  "    BBBENN$$BBBr4   r  r  )r   r   rB   r%   r  )r  r.   r/   r,   r-   rw   legend_textss          r2   'test_plot_multiple_input_multiple_labelr  s  s     			A
Q
Q
Q	A lnnGCGGAqG$$$
))++CBB#--//BBBLE6?******r4   r   r   r   c                    g d}ddgddgddgg}t          j                    \  }}|                    |||            |                                }d |                                D             }|t          |           gdz  k    sJ d S )	Nr   r   rg   r   r   rc   r=   c                 6    g | ]}|                                 S r   r  r  s     r2   r  z9test_plot_multiple_input_single_label.<locals>.<listcomp>  r  r4   )r   r   rB   r%   r  rV  )r   r.   r/   r,   r-   rw   r  s          r2   %test_plot_multiple_input_single_labelr    s     			A
Q
Q
Q	A lnnGCGGAqG
))++CBB#--//BBBLCJJ<!+++++++r4   c                 f   g d}g d}t          j                    \  }}|                    |||            |                                }t	          |                                          dk    sJ |                                d                                         t          |           k    sJ d S )Nr   )rg   r   r   r=   r   r   )r   r   rB   r%   r   r  r	  rV  )r  r.   r/   r,   r-   rw   s         r2   %test_plot_single_input_multiple_labelr    s     			A		AlnnGCGGAqG$$$
))++Cs}}1$$$$==??1&&((C,<,<<<<<<<r4   c                      t          j        t                    5  g d} ddgddgddgg}g d}t          j                    \  }}|                    | ||           d d d            d S # 1 swxY w Y   d S )	Nr   r   rg   r   r   rc   )r  r  mediumr=   )r   r0  r  r   r   rB   )r.   r/   r   r,   r-   s        r2   3test_plot_multiple_label_incorrect_length_exceptionr    s     
z	"	" # #IIVVV *)),..R
1E"""# # # # # # # # # # # # # # # # # #s   AA))A-0A-c                      t          j                    \  } }|                    g dg dg dddd           |                                 d S )Nr]  r   r   r   faceFill)r  r   r   )r   r   r   r%   r   s     r2   test_legend_face_edgecolorr    sY    lnnGCOOIIIyyy)))!V6  C C CIIKKKKKr4   c                      t          j                    \  } }|                    ddgddgd           |                                }|j        |u sJ |                                d         j        |u sJ d S )Nr   rg   r]   r   rV   r=   r   )r   r   rB   r%   r/  r  r   s      r2   test_legend_text_axesr    st    lnnGCGGQFQF&G)))
))++C8r>>>>==??1"b((((((r4   c                  J   t          j                    \  } }|                    ddgddgd           t          j        dgdgd          g}|                    |dgd          }|d                                         |j        d                                         k    sJ d S )Nr   r   r  )r  r  r  )r   r   r!   mlinesLine2Dr%   r  r   )r,   r-   r1   rw   s       r2   test_handlerline2dr    s    lnnGCJJ1v1vcJ***}aS1#c2223G
))Gj\Q)
7
7C1:  ""c&8&;&F&F&H&HHHHHHHr4   c                      t          j                                                    } |                                 }|                    ddgddgd           |                                 }|j        | u sJ d S )Nr   r   rV   r=   )r   r   
subfiguresr   rB   r%   )subfigr-   rw   s      r2   test_subfigure_legendr    sn    Z\\$$&&F			BGGQFQF&G)))
--//C:r4   c                     t          j        ddgddgdd          } t          j                                                    d         }|                    d           |                                d d         t          |                                 d         d d                   k    sJ |                                d d         t          |                                 d         d d                   k    sJ d S )	Nr   r   rg   r]   z#123456r   )r0   r   r   )r   r   r%   get_patchesr  r  tupler  )pcr   s     r2   -test_setting_alpha_keeps_polycollection_colorr    s    		1a&1a&		I	I	IBJLL$$&&q)E	OOC  !$b.>.>.@.@.CBQB.G(H(HHHHH  !$b.>.>.@.@.CBQB.G(H(HHHHHHHr4   c                  H   g d} t          j                    \  }}d | D             }g d}d |D             }|                    ||          }d |                                D             }d |                                D             }||cxk    r| k    sn J ||k    sJ d S )N)r  *r  c                 B    g | ]}t          j        d gd gd|          S )r   None)lsr  )r  r  )r
  marks     r2   r  z3test_legend_markers_from_line2d.<locals>.<listcomp>  s?     # # # ]A3t<<< # # #r4   )r  rL   xyzzyc                 6    g | ]}|                                 S r   r  r
  rV   s     r2   r  z3test_legend_markers_from_line2d.<locals>.<listcomp>  s"    333Tt  333r4   c                 6    g | ]}|                                 S r   r  r  s     r2   r  z3test_legend_markers_from_line2d.<locals>.<listcomp>  s"    DDD4??$$DDDr4   c                 6    g | ]}|                                 S r   r  )r
  r  s     r2   r  z3test_legend_markers_from_line2d.<locals>.<listcomp>  s     AAAd$--//AAAr4   )r   r   r%   	get_linesr  )	_markersr,   r-   r   r*   r  r%   new_markers
new_labelss	            r2   test_legend_markers_from_line2dr    s    HlnnGC# #!# # #E$$$F33U333GYYuf%%FDD1A1A1C1CDDDKAAf.>.>.@.@AAAJk----X------Zr4   c                 n    g d}d}|                      ||           |                     ||           d S )N)r   r   r   r   er  r]   )ncol)r_   r  )r  r   stringsr_   s       r2   test_ncol_ncolsr    sF     -,,GEOOG%O(((NN7%N(((((r4   c                     t          j                    \  } }t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )	NzFloc must be string, coordinate tuple, or an integer 0-10, not \(1.1,\)r   )r   r@   zWloc must be string, coordinate tuple, or an integer 0-10, not \(0.481, 0.4227, 0.4523\))bX9?g:M?gm{?zRloc must be string, coordinate tuple, or an integer 0-10, not \(0.481, 'go blue'\))r  zgo bluer   r   r   r0  r  r%   r   s     r2    test_loc_invalid_tuple_exceptionr    s    lnnGC	z +C 
E 
E 
E  
		g	               
z +T 
V 
V 
V / /
		-	.../ / / / / / / / / / / / / / / 
z +Q 
S 
S 
S * *
		(	)))* * * * * * * * * * * * * * * * * *s5   AAA;BB"%B"C((C,/C,c                      t          j                    \  } }|                    d           |                    d           d S )N)r  }?5^I?r@   )r   rg   r   r   r%   r   s     r2   test_loc_valid_tupler    s?    lnnGCII.I!!!II&Ir4   c                      t          j                    \  } }|                    ddg           |                    ddg           d S )Nr  r  r@   r   rg   r  r   s     r2   test_loc_valid_listr    sG    lnnGCII5%.I!!!II1a&Ir4   c                      t          j                    \  } }t          j        t          d          5  |                    g d           d d d            d S # 1 swxY w Y   d S )NzOloc must be string, coordinate tuple, or an integer 0-10, not \[1.1, 2.2, 3.3\]r   )r   r  gffffff
@r@   r  r   s     r2   test_loc_invalid_list_exceptionr    s    lnnGC	z +L 
N 
N 
N ' '
		ooo	&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '   AAAc                      t          j                    \  } }t          j        t          d          5  |                    ddi           d d d            d S # 1 swxY w Y   d S )NzKloc must be string, coordinate tuple, or an integer 0-10, not {'not': True}r   notTr@   r  r   s     r2   test_loc_invalid_typer    s    lnnGC	z +F 
H 
H 
H % %
		udm	$$$% % % % % % % % % % % % % % % % % %r  c                     t          j                    \  } }|                    d           |                    d           |                    d           |                    d           t          j        t
          d          5  |                    d           d d d            n# 1 swxY w Y   t          j        t
          d	          5  |                    d
           d d d            d S # 1 swxY w Y   d S )Nr   r@   r   r   r   z@loc must be string, coordinate tuple, or an integer 0-10, not 11r   r>  z@loc must be string, coordinate tuple, or an integer 0-10, not -1rI   r   r   r%   r   r0  r  r   s     r2   !test_loc_validation_numeric_valuer  !  s   lnnGCII!III!III!III"I	z +; 
= 
= 
=  
		b	               
z +; 
= 
= 
=  
		b	                 s$   
B--B14B1C77C;>C;c                     t          j                    \  } }|                    d           |                    d           |                    d           |                    d           |                    d           |                    d           |                    d           |                    d           |                    d           |                    d	           |                    d
           |                    d           t          j        t
          d          5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr?   r@   r  r   r   r  r   r   r  zlower centerzupper centerz 'wrong' is not a valid value forr   wrongr  r   s     r2    test_loc_validation_string_valuer  0  s   lnnGCII&III-I   II&III-I   II,III,III-I   II'III-I   II.I!!!II.I!!!II.I!!!	z)K	L	L	L  
		g	                 s   :EE"%E")r#   platformunittestr   r  numpyr   numpy.testingr   r   matplotlib.testing.decoratorsr   r   matplotlib.testing._markersr   matplotlib.pyplotpyplotr   
matplotlibr   matplotlib.patchespatchesr   matplotlib.transforms
transformsr  matplotlib.collectionsr  matplotlib.linesr   r  matplotlib.legend_handlerr   matplotlib.legendr%   r  r	   r
   matplotlib.font_managerr   r3   rC   rO   r[   rx   r   r   r   r   r   machiner   r   r   r   r   r   r   r  r  r!  r#  ri  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r!  r$  r5  r  parametrizer;  rA  rF  rI  rS  rX  r\  r_  rd  rf  rj  rn  rs  r{  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  intr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r4   r2   <module>r     sG                   ) ) ) ) ) )  O O O O O O O O 4 4 4 4 4 4           % % % % % % + + + + + + - - - - - - ! ! ! ! ! ! 2 2 2 2 2 2 # # # # # # ' ' ' ' ' ' ' ' 2 2 2 2 2 29 9 9$ >"555  65 >"555: : 65: >"##  $#@ @ @,@ @ @@ *+>>>' ' ?>'
+ 
+ 
+ ,-4@@@- - A@- -.DAAA	I 	I BA	I #$$+8+--99aatE E E2 2E E2 &'T+8+--99aatE E E	6 	6E E	6 7)4888
E 
E 98
E <.d+8+--99aatE E E E E =-0dCCC! ! DC!  ?#6668 8 768 :,D	BBB. . CB.B# # #5 5 5$ (((
 
 )(
]N ]N ]N ]N ]N ]N ]N ]N@5 5 5 5 5 5 5 5p&# &# &#R )*++  ,+    (   -.//" " 0/" 7899+ + :9+: : :(  ' ' '    ./T! ! !! !! !!*7 7 7, , ,- - -, , ,  #1 #1 #1L &ABB, , CB,  3447 7 547  ;<<7 7 =<7 &ABB, , CB, "?@@	> 	> A@	>	> 	> 	>	> 	> 	>	> 	> 	>	< 	< 	<< < <	> 	> 	>	> 	> 	>	> 	> 	>> > >&	> 	> 	>	> 	> 	>	> 	> 	>> > >$ "?@@
> 
> A@
>
> 
> 
>
> 
> 
>
> 
> 
>
> 
> 
>
> 
> 
>& & & m44, , 54,A A A 
A 
A 
A     $   %)8)15&/)B)B)D E E+ +E E+ 5!S/22, , 32, %)8)15&/)B)B)D E E	= 	=E E	=
# 
# 
#  ) ) )I I I     I I I     " ) ) )* * *"    ' ' '% % %      r4   