
    
3j             	       z	   S SK r S SKrS SKrS SKrS SKrS SKrS SKJr  S SKrS SK	r
S SKJr  S SKrS SKJrJr  S SKJr  S SKJr  S SKrS SKJr  S SKJr  S SKJ r  S SK J!r"  S SK#J$r$  S SK%J&r'  S SKJ(r(  S SK)J*r*  S	 r+S
 r,\" S/SSS9S 5       r-\" S/SSS9S 5       r.\" S/SS9S 5       r/S r0S r1\" S/SSS9S 5       r2\" S/SS\Rf                  " 5       S:X  a  S OSS9S 5       r4\" S/SS\Rf                  " 5       S:X  a  S OSS9S  5       r5\" S!/SS\Rf                  " 5       S:X  a  S OS"S9S# 5       r6\" S$/SS\Rf                  " 5       S:X  a  S OS"S9S% 5       r7\" S&/SS\R                  S':X  a  S(OS S9S) 5       r8\" S*/SS\Rf                  " 5       S:X  a  S OS+S9S, 5       r9\" S-S./SSS9S/ 5       r:\" S0/SSS9S1 5       r;\" S2/SS3S9S4 5       r<S5 r=S6 r>\" 5       S7 5       r? " S8 S95      r@ " S: S;5      rAS< rB\" S=/SS9S> 5       rCS? rDS@ rESA rF\" SB/SS9SC 5       rG\" SD/SS9SE 5       rHSF rISG rJSH rKSI rL\" SJ/SS\R                  S':X  a  SKOS S9SL 5       rMSM rNSN rOSO rPSP rQSQ rRSR rS\R                  R                  SSST5      SU 5       rV\R                  R                  SVSW5      SX 5       rW\R                  R                  SVSY5      SZ 5       rX\R                  R                  SSST5      S[ 5       rY\R                  R                  S\S]5      S^ 5       rZS_ r[S` r\Sa r]Sb r^Sc r_Sd r`Se raSf rbSg rcSh rdSi reSj rfSk rg\R                  R                  S\S]5      Sl 5       rhSm riSn rjSo rkSp rlSq rm SSr jrnSs ro  SSt jrpSu rq SSv jrrSw rs\R                  R                  Sx5      Sy 5       ru\R                  R                  SzS{5      S| 5       rvS} rw\S~ 5       rxS ryS rz\R                  R                  SSS/S\
R                  " SS/5      /5      S 5       r|\R                  R                  SSS\}/5      S 5       r~S rS rS rS rS rS rS rS rS r\" 5       S 5       rS rS rS rS rS rS rS rS rS rS r\R                  R                  Sx5      S 5       rS rS rS rS rS rS rS rg)    N)mock)assert_allclose)check_figures_equalimage_comparison)needs_usetex)HandlerTuple)
rc_context)FontPropertiesc                     [         R                  R                  S5      n [         R                  R                  S5      nS/S-  S/S-  -   nS/S-  S/S-  -   n[        R                  " 5       u  pE[        XX#5       H  u  pgpUR                  XgXS9  M     UR                  5       u  p[        R                  " [        X*5      5      nUR                  UR                  5       UR                  5       SS	S
9  g )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               V/home/wildlama/miniconda3/lib/python3.13/site-packages/matplotlib/tests/test_legend.pytest_legend_ordereddictr2      s     			A
		AUQY#"FUQY#"FllnGC!!7e


1u
. 8 224OG$$S%9:FIIfmmov{{}  9    c                      [         R                  " 5       u  pUR                  SS/5        UR                  SS/5        S UR                  5        5       nS S 5       nUR	                  X#SS9  g )	Nr   r      c              3   $   #    U  H  ov   M     g 7fN ).0lines     r1   	<genexpr>(test_legend_generator.<locals>.<genexpr>4   s     /t   c              3   $   #    U  H  ov   M     g 7fr7   r8   )r9   r   s     r1   r;   r<   5   s     2!1e!1r=   )spameggs
upper leftr   )r   r   plot	get_linesr$   )r+   r,   r0   r)   s       r1   test_legend_generatorrE   .   sX    llnGCGGQFOGGQFO//G2!12FIIg<I0r3   zlegend_auto1.pngTmpl20)remove_textstylec                      [         R                  " 5       u  p[        R                  " S5      nUR	                  USU-
  SSS9  UR	                  X"S-
  SSS9  UR                  SS9  g	)
Test automatic legend placementd   2   oy=1r   y=-1bestrB   N)r   r   r   arangerC   r$   )r+   r,   r-   s      r1   test_legend_auto1rS   :   sZ     llnGC
		#AGGArAvs%G(GGA2vs&G)II&Ir3   zlegend_auto2.pngc                      [         R                  " 5       u  p[        R                  " S5      nUR	                  X"SSS9nUR	                  X"SSS2   SSS9nUR                  US   US   /S	S
/SS9  g)rJ   rK   edgem)alignr/   Nr   r   updownrQ   rB   )r   r   r   rR   barr$   )r+   r,   r-   b1b2s        r1   test_legend_auto2r^   D   sp     llnGC
		#A	F#	.B	TrT7&	4BIIr!ubentVn&I9r3   zlegend_auto3.png)rH   c                      [         R                  " 5       u  p/ SQn/ SQnUR                  X#SSS9  UR                  SS5        UR	                  SS5        UR                  SS	9  g
)rJ   ?皙?rb   ra   ra   r   ffffff?rd   皙?re   r   r   o-r:   rO                 ?rQ   rB   N)r   r   rC   set_xlimset_ylimr$   )r+   r,   r-   r.   s       r1   test_legend_auto3rk   N   sW     llnGC&A*AGGA$fG%KKSKKSII&Ir3   c                  R   [         R                  " SSS9u  p/ n[        UR                  S5       H  u  p4UR	                  U5        UR                  S/SS/-  -   [        S5      S	US
9  UR                  SS9nU R                  R                  5         UR                  UR                  5       R                  UR                  R                  5       5      5        M     [        US   R                   US   R                   5        [        US   R                   US   R                   5        g)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)r[   step
stepfilledr   r   	   r   Legend)binsr   histtyperQ   rB   r   r5   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         r1   test_legend_auto4r   Z   s     ||!Z8HCJchh =>
R
ae%)8bIiiFi#

!!#//0E0E0GH	J ? JqM((*Q-*>*>?JqM((*Q-*>*>?r3   c                     [         R                  " SSS9u  p/ n[        UR                  S5       GH  u  p4[        R
                  " SSSSS	9[        R                  " [        R                  " S
S/S
S
/SS
/SS/SS/SS/SS/SS/SS//	5      SS9[        R                  " SSS
SSSS94 H  nUR                  U5        M     UR                  SS/SS/SS9  UR                  US9nU R                  R                  5         UR                  UR!                  5       R#                  UR$                  R'                  5       5      5        GM     [)        US   R*                  US
   R*                  5        g)zu
Check that the automatic placement handle a rather complex
case with non rectangular patch. Related to issue #9580.
r5   )g333333#@g333333@rn   centerrQ   )r   ra   皙?皙?C1)xywidthheightfcr   r   ra   rh   rb   )r   )r   r   r   ih  re   C0)r   r   z	A segmentrO   rB   N)r   r   r   rw   mpatchesEllipsePolygonr   arrayWedge	add_patchrC   r$   r{   r|   r}   r~   r   r   r   r   r   )r+   r   r   r,   r   _patchr   s          r1   test_legend_auto5r   p   sf   
 ||!Z8HCJsxx!34
   !STC  FQFQFQFS#Jc
#Jc
S#J+8 "9=AC z33dtLF LL  	c
S#Jk:iiCi 

!!#//0E0E0GH	J% 5* JqM((*Q-*>*>?r3   zlegend_various_labels.pngc                  T   [         R                  " 5       n U R                  S5      nUR                  [        R
                  " S5      SSS9  UR                  [        R                  " SS5      SSS9  UR                  [        R
                  " SSS5      SS	S9  UR                  SS
S9  g )Ny      rM   r   rO   gffffff@u   DéveloppésrX   __nolegend__rQ   )	numpointsr   )r   figureadd_subplotrC   r   rR   linspacer$   r+   r,   s     r1   test_various_labelsr      s     **,C		BGGBIIaL#QG'GGBKK3NG;GGBIIaBNG;IIvI&r3   zlegend_labels_first.pngx86_64gQ?)rG   rH   tolc                  :   [         R                  " 5       u  pUR                  [        R                  " S5      SSS9  UR                  [        R
                  " S5      S-  SSS9  UR                  [        R                  " SSS	5      S
SS9  UR                  SSS9  g )Nr   -or   rO   r   z:xr-      rX   ddiamondrQ   F)r   markerfirst)r   r   rC   r   rR   onesr$   r   s     r1   test_labels_firstr      sx     llnGCGGBIIbM4qG)GGBGGBKM4sG+GGBIIb"b!3iG8II&eI,r3   zlegend_multiple_keys.pnggL7A`?c                     [         R                  " 5       u  pUR                  / SQS5      u  nUR                  / SQS5      u  nUR                  / SQS5      u  nUR                  X#4X24U// SQSX#4[	        S S	9X24[	        S S
S90S9  g )Nr   r5   rm   r   r5   rm   r   z-xrm   r   r   z-d)ztwo keyszpad=0zone keyr   )ndivider   )r   pad)r   handler_map)r   r   rC   r$   r   )r+   r,   p1p2p3s        r1   test_multiple_keysr      s     llnGC
'')T
"CB
'')T
"CB
'')T
"CBIIx"2&(H8\$%?8\$A%FH  Ir3   zrgba_alpha.pnggQ?c                      S [         R                  S'   [         R                  " 5       u  pUR                  [	        S5      SS9  [         R
                  " S/SS9nUR                  R                  / SQ5        g )	Nlegend.framealphar   r   lwLonglabel that will go awayr   rB   r   r   r   r   )r   rcParamsr   rC   rz   r$   legendPatchset_facecolorr+   r,   r   s      r1   test_alpha_rgbar      sZ     )-CLL$%llnGCGGE"I!G
**34(
CCOO!!.1r3   zrcparam_alpha.pngc                  *   [         R                  " 5       u  pUR                  [        S5      SS9  [        R
                  " SS0S9   [         R                  " S/SS	9nUR                  R                  / S
Q5        S S S 5        g ! , (       d  f       g = f)Nr   r   r   r   g      ?)rcr   r   rB   r   )	r   r   rC   rz   mplr	   r$   r   r   r   s      r1   test_alpha_rcparamr      sk     llnGCGGE"I!G	/5	6jj78hG
 	%%n5 
7	6	6s   4B
Bz	fancy.pngdarwing{Gz?c            	         [         R                  " S5        [         R                  " S/S-  SSS9  [         R                  " [        R
                  " S5      [        R
                  " SSS5      S	S9  [         R                  " [        R
                  " S5      [        R
                  " S5      S
S
SS9  [         R                  " SSS
/SSSSS9  g )Nr   r   r   zo--XXrO   r   rX   zXX
XXr   )xerryerrr   r   rh   r5   T	My legendr   )r   r   ro   shadowtitler   )r   subplotrC   r    r   rR   errorbarr$   r8   r3   r1   
test_fancyr      s     KKHHaS2XuD)KK		"ryyQ38DLL2		"C'JJ=#st;!Er3   
framealphag/$?c                      [         R                  " SSS5      n U n[        R                  " XSSS9  [        R                  " SSS9  g )	Nr   rK   mylabelr   )r   r   r   upper right)r   r   )r   r   r   rC   r$   )r-   r.   s     r1   test_framealphar      s9     	AsC A	AHHQr*JJ#=1r3   zscatter_rc3.pngzscatter_rc1.pngc                  4   S[         R                  S'   [        R                  " 5         [        R                  " S5      n U R                  [        R                  " S5      [        R                  " SSS5      SS9  U R                  S	S
S/SS9  S[         R                  S'   [        R                  " 5         [        R                  " S5      n U R                  [        R                  " S5      [        R                  " SSS5      SS9  U R                  S	S
S/SS9  g )Nrm   zlegend.scatterpointsr   r   r   rX   threerO   r   rh   r   r   )r   r   r   r   one)	r   r   r   r   r   r    r   rR   r$   )r,   s    r1   test_rcr      s     ,-CLL'(JJL	S	BJJryy}biiAr2'JBII-c
  ! ,-CLL'(JJL	S	BJJryy}biiAr2%J@II-c
  !r3   zlegend_expand.pngc                     SS/n [         R                  " [        U 5      S5      u  p[        R                  " S5      n[        X 5       H  u  pEUR                  USU-
  SSS9  UR                  S	US
9nUR                  U5        UR                  X3S-
  SSS9  UR                  SUS
9nUR                  U5        UR                  SUSS9  M     g)zTest expand modeNexpandr   rK   rL   rM   rN   rO   rA   )r   moderP   right
lower leftr5   )r   r   ro   )	r   r   lenr   rR   r   rC   r$   
add_artist)legend_modesr+   r   r-   r,   r   l1l2s           r1   test_legend_expandr      s     (#L||C-q1HC
		#A*
263e,YY<dY3
b
r63f-YY7Y.
b
		lQ	7 +r3   hatchingdefaultc            
      P   [         R                  " 5       u  p[         R                  " SSSSSS9nUR                  U5        [         R                  " SSSSSS	S
9nUR                  U5        [         R                  " SSSSSSS9nUR                  U5        [         R                  " SSSSSSSS9nUR                  U5        UR	                  / SQ/ SQ/ SQSSS9  UR	                  / SQ/ SQ/ SQSSSS
9  UR                  SS5        UR                  SS5        UR                  SSS9  g )N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   )ra   rh   ra   +zPath
default color)r   gQ?g)\(?C2zPath
explicit colorg{Gz皙?r   )handlelengthhandleheight)r   r   	Rectangler   fill_betweenri   rj   r$   )r+   r,   patchs      r1   test_hatchingr     s#    llnGC MM&#s$ >@ELLMM)S#TT ?AELLMM(CDu @BELLMM+sCt%$( ACE LL OOL,%:  <OOO\=5K  M KKsKKsII11I-r3   c                  8   [         R                  " 5       u  pUR                  [        S5      5      nU R	                  US/5      nUR                  5         U R                  / :X  d   eUR	                  S5      nUR                  5         UR                  5       b   eg )Nr   test)r   r   rC   rz   r$   removelegends
get_legend)r+   r,   linesr   s       r1   test_legend_remover  %  sw    llnGCGGE"IE
**UVH
%CJJL;;"
))F
CJJL==?"""r3   c                     [         R                  " 5       u  pSnSn/ SQn/ SQnUR                  X#US   US   S9  UR                  X#US   US   S9  UR                  X#US   US   S9  UR                  SS9nUR	                  5        Vs/ s H  owR                  5       PM     nnUR                   V	s/ s H  oR                  5       PM     n
n	U[        [        U5      5      :X  d   eU
[        [        U5      5      :X  d   eg	s  snf s  sn	f )
z6Check that the legend handles and labels are reversed.r   )zFirst labelzSecond labelzThird label).,rM   r   rO   r5   TreverseN)
r   r   rC   r$   	get_textsget_textlegend_handles
get_markerlistreversed)r+   r,   r-   r.   r)   markersr   tactual_labelshactual_markerss              r1   &test_reverse_legend_handles_and_labelsr  0  s    llnGC	A	A;FGGGA'!*F1IG.GGA'!*F1IG.GGA'!*F1IG.
))D)
!C+.==?;?aZZ\?M;.1.@.@A.@lln.@NAD&!12222T(7"34444 <As   
D3Dc                    U R                  5       nUR                  S/SSS9  UR                  S/SSS9  UR                  SS	9  UR                  5       nUR                  S/SSS9  UR                  S/SSS9  UR                  5         g
)z3Check that the rendered legend entries are reversedr   rofirstrO   r5   bxsecondTr  N)r   rC   r$   )fig_testfig_refr,   s      r1   test_reverse_legend_displayr  B  s     
			BGGQCWG%GGQCXG&IIdI				BGGQCXG&GGQCWG%IIKr3   c                   \    \ rS rSrS rS rS rS rS rS r	S r
S	 rS
 rS rS rS rSrg)TestLegendFunctioniP  c                    [         R                  " [        S5      SS9n[        R                  " S5       n[         R
                  " 5         S S S 5        WR                  [         R                  " 5       US/5        g ! , (       d  f       N6= f)Nr   hello worldrO   matplotlib.legend.Legendr   rC   rz   r   r   r$   assert_called_withgcaselfr  rt   s      r1   test_legend_no_args&TestLegendFunction.test_legend_no_argsR  sV    r-8ZZ23vJJL 4!!#'')U]OD 43s   A;;
B	c                     [         R                  " [        S5      5      n[        R                  " S5       n[         R
                  " US/5        S S S 5        WR                  [         R                  " 5       US/5        g ! , (       d  f       N6= f)Nr   r   r  r!  r$  s      r1   %test_legend_positional_handles_labels8TestLegendFunction.test_legend_positional_handles_labelsX  s[    r#ZZ23vJJu}o. 4!!#'')U]OD 43s   A??
Bc                     [         R                  " [        S5      5      n[        R                  " [
        SS9   [         R                  " U5        S S S 5        g ! , (       d  f       g = f)Nr   zbut found an Artistmatch)r   rC   rz   pytestraises	TypeErrorr$   )r%  r  s     r1   #test_legend_positional_handles_only6TestLegendFunction.test_legend_positional_handles_only^  s>    r#]]9,AB JJu CBBs   A
A'c                    [         R                  " [        S5      SS9n[        R                  " S5       n[         R
                  " S/5        S S S 5        WR                  [         R                  " 5       US/5        g ! , (       d  f       N6= f)Nr   r  rO   r   foobarr!  r$  s      r1   "test_legend_positional_labels_only5TestLegendFunction.test_legend_positional_labels_onlye  s[    r-8ZZ23vJJz" 4!!#'')UXJ? 43s   A==
Bc                    [         R                  " [        S5      SS9n[        R                  " S5       n[         R
                  " US/SS9  S S S 5        WR                  [         R                  " 5       US/SS9  g ! , (       d  f       N5= f)Nr   r  rO   r   r4  r   rB   r!  r$  s      r1   test_legend_three_args)TestLegendFunction.test_legend_three_argsk  sd    r-8ZZ23vJJuxjg6 4!!#'')UXJG!L 43s   A<<
B
c                 0   [         R                  " [        S5      SS9n[        R                  " S5       nUS/4Ul        [         R                  " SS0S9  S S S 5        WR                  [         R                  " 5       /SS05        g ! , (       d  f       N7= f)Nr   r  rO   z,matplotlib.legend._get_legend_handles_labels1r5   )r   )	r   rC   rz   r   r   return_valuer$   r"  r#  )r%  r  handles_labelss      r1   test_legend_handler_map*TestLegendFunction.test_legend_handler_mapq  sw    r-8ZZ 5 69G*/-*@N'JJC8,6 	))3779+Qx@	6 6s   !B
Bc                    [         R                  " 5       u  p[        R                  " SSS5      nUR	                  X3SS9u  nUR	                  USU-  SS9u  nUR	                  USU-  S	S9u  n[
        R                  " S
5       nUR                  Xe/S9  S S S 5        WR                  X&U/S	S/5        g ! , (       d  f       N%= f)Nr   r      r-   rO   r5   2xrm   3xr   )r0   	r   r   r   r   rC   r   r   r$   r"  )r%  r+   r,   r-   ln1ln2ln3rt   s           r1   test_legend_kwargs_handles_only2TestLegendFunction.test_legend_kwargs_handles_onlyy  s    ,,.KK1b!wwq3w'wwq!A#Tw*wwq!A#Tw*ZZ23vIIsjI) 4!!"Cj4,? 43s   B44
Cc                 d   [         R                  " 5       u  p[        R                  " SSS5      nUR	                  X35      u  nUR	                  USU-  5      u  n[
        R                  " S5       nUR                  SS/S9  S S S 5        WR                  X$U/SS/5        g ! , (       d  f       N%= f)	Nr   r   rA  r5   r   r-   rB  r)   rD  )r%  r+   r,   r-   rE  rF  rt   s          r1   test_legend_kwargs_labels_only1TestLegendFunction.test_legend_kwargs_labels_only  s    ,,.KK1b!wwq}wwq!A#ZZ23vIIc4[I) 4!!"Cj3+> 43s   0B!!
B/c                    [         R                  " 5       u  p[        R                  " SS[        R                  -  S5      nUR                  U[        R                  " U5      SS9u  nUR                  U[        R                  " U5      SS9u  n[        R                  " S5       nUR                  SXT4S	9  S S S 5        WR                  X%U4S5        g ! , (       d  f       N#= f)
Nr   r5      sinrO   cosr   r   r   )r)   r0   )r   r   r   r   pirC   rP  rQ  r   r   r$   r"  )r%  r+   r,   thlnslncrt   s          r1   !test_legend_kwargs_handles_labels4TestLegendFunction.test_legend_kwargs_handles_labels  s    ,,.[[AbeeGT*wwr266":Uw3wwr266":Uw3ZZ23vIIZ#I< 4 	!!"Cj*= 43s   %C
C"c                    [         R                  " 5       u  p[        R                  " SS[        R                  -  S5      nUR                  U[        R                  " U5      SS9u  nUR                  U[        R                  " U5      SS9u  nSn[        R                  " [        US9   UR                  XT4S	S
9  S S S 5        g ! , (       d  f       g = f)Nr   r5   rO  rP  rO   rQ  4must both be passed positionally or both as keywordsr,  rR  rK  )r   r   r   r   rS  rC   rP  rQ  r.  r/  r0  r$   )r%  r+   r,   rT  rU  rV  msgs          r1    test_error_mixed_args_and_kwargs3TestLegendFunction.test_error_mixed_args_and_kwargs  s    ,,.[[AbeeGT*wwr266":Uw3wwr266":Uw3D]]9C0IIsjI4 100s   *C
Cc                 R   SSK Jn  U" S5      nUR                  5       nUR                  / SQ/ SQSS9u  nUR                  / SQ/ SQSS9u  n[        R
                  " S	5       n[        R                  " 5         S S S 5        WR                  X$U/SS/5        g ! , (       d  f       N%= f)
Nr   )host_subploto   r   r   r5   DensityrO   )r   rm   r5   Temperaturer   )	mpl_toolkits.axes_grid1r_  twinxrC   r   r   r   r$   r"  )r%  r_  hostparr   r   rt   s          r1   test_parasite TestLegendFunction.test_parasite  s    8C jjlii	9Ii>hhy)=hAZZ23vJJL 4!!$R9m2LM 43s   #B
B&c                    [         R                  " 5       u  pUR                  SS/5      u  nUR                  SS/5      u  n[        R                  " [
        SS9   UR                  X4/S/5        S S S 5        [        R                  " [
        SS9   UR                  U/SS	/5        S S S 5        g ! , (       d  f       NF= f! , (       d  f       g = f)
Nr   r5   rm   r   z'Mismatched number of handles and labelsr,  only_onelabel_alabel_b)r   r   rC   r.  warnsUserWarningr$   )r%  r+   r,   line1line2s        r1   9test_legend_warns_on_unequal_number_of_handles_and_labelsLTestLegendFunction.test_legend_warns_on_unequal_number_of_handles_and_labels  s    ,,.!Q!Q\\+-VWIIunzl3 X\\+-VWIIug	956 XW XWWWs   B0C0
B>
Cr8   N)__name__
__module____qualname____firstlineno__r&  r)  r1  r5  r8  r>  rH  rL  rW  r\  rh  rr  __static_attributes__r8   r3   r1   r  r  P  sE    EE@MA@?>5N7r3   r  c                   8    \ rS rSrS rS rS rS rS rS r	Sr
g	)
TestLegendFigureFunctioni  c                 $   [         R                  " 5       u  pUR                  [        S5      5      n[        R
                  " S5       nUR                  US/5        S S S 5        WR                  XS/UR                  S9  g ! , (       d  f       N+= f)Nr   r   r  bbox_transform	r   r   rC   rz   r   r   r$   r"  transFigurer%  r+   r,   r  rt   s        r1   test_legend_handle_label1TestLegendFigureFunction.test_legend_handle_label  so    ,,.b	"ZZ23vJJu}o. 4!!#}o14 	" 	B 43s   B
Bc                    [         R                  " 5       u  pUR                  [        S5      SS9n[        R
                  " S5       nUR                  5         S S S 5        WR                  XS/UR                  S9  g ! , (       d  f       N+= f)Nr   r  rO   r   r|  r~  r  s        r1   r&  ,TestLegendFigureFunction.test_legend_no_args  sl    ,,.b	7ZZ23vJJL 4!!#}o14 	" 	B 43s   A==
Bc                 "   [         R                  " 5       u  pUR                  [        S5      5      n[        R
                  " S5       nUR                  S/5        S S S 5        WR                  XS/UR                  S9  g ! , (       d  f       N+= f)Nr   r   r4  r|  r~  r  s        r1   test_legend_label_arg.TestLegendFigureFunction.test_legend_label_arg  sm    ,,.b	"ZZ23vJJz" 4!!#xj14 	" 	B 43s   B  
Bc                    [         R                  " 5       u  pUR                  [        S5      5      n[        R
                  " [        SS9   UR                  US/S5        S S S 5        [        R
                  " [        SS9   UR                  US/SSS9  S S S 5        g ! , (       d  f       ND= f! , (       d  f       g = f)Nr   z0-2r,  r4  r   leftrB   )r   r   rC   rz   r.  r/  r0  r$   )r%  r+   r,   r  s       r1   test_legend_label_three_args5TestLegendFigureFunction.test_legend_label_three_args  s    ,,.b	"]]9E2JJuxj'2 3]]9E2JJuxj'vJ> 32 3222s   BB/
B,/
B=c                    [         R                  " SS5      u  pUS   R                  [        S5      5      nUS   R                  [        R
                  " S5      S-  5      n[        R                  " S5       nUR                  SSX44S	9  S S S 5        WR                  XU4SSUR                  S
9  g ! , (       d  f       N-= f)Nr   r5   r   r          @r   r   rR  )r   r)   r0   )r   r}  )r   r   rC   rz   r   rR   r   r   r$   r"  r  )r%  r+   r   r  lines2rt   s         r1   test_legend_kw_args,TestLegendFigureFunction.test_legend_kw_args  s    <<1%AE"I&QRYYr]R/0ZZ23vJJ7:JO 4!!*'?? 	" 	, 43s   8B22
C c                 R   [         R                  " SS5      u  pUS   R                  [        S5      5      nUS   R                  [        R
                  " S5      S-  5      nSn[        R                  " [        US9   UR                  X44SS	9  S S S 5        g ! , (       d  f       g = f)
Nr   r5   r   r   r  rZ  r,  rR  rK  )
r   r   rC   rz   r   rR   r.  r/  r0  r$   )r%  r+   r   r  r  r[  s         r1   test_error_args_kwargs/TestLegendFigureFunction.test_error_args_kwargs  sz    <<1%AE"I&QRYYr]R/0D]]9C0JJzJ: 100s   =B
B&r8   N)rt  ru  rv  rw  r  r&  r  r  r  r  rx  r8   r3   r1   rz  rz    s#    BBB?,;r3   rz  c                     S V s/ s H  n SU -   PM
     nn US V s/ s H  n SU -   PM
     sn -  nUS V s/ s H  n SU -   PM
     sn -  nUS V s/ s H  n SU -   PM
     sn -  n/ SQn/ SQn/ S	Qn/ S
QnX"UX3UXDUXUU/n/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/ SQ/n[        U5       H  u  p[        U	5        [        R                  " SSS9u  pUR	                  [        S5      SS9  U
R                  SU	-   S9nU
R                  5         [        UR                  5       R                  Xh   SS9  [        UR                  5       R                  Xx   SS9  M     g s  sn f s  sn f s  sn f s  sn f )N)r  r   r   zupper zlower )lowerr   upperzleft zright )Qn4@;c:@l@g?'IW	@)r  goDIQ@r  (XQl@)gLNc@r  r  r  )r  r  gE@r  )      $@     P@     `@     p@)     (u@r       |@r  )  r       @r  )r  r  r        G@)r  r  r  r  )     ؄@r  r  r  )r       q@r       s@)r  r  r  r  )r  r  r  r  )r  r  r  r  TrK   )constrained_layoutdpir   Boo1rO   zoutside rB   g-C6?)rtol)	enumerateprintr   r   rC   rz   r$   draw_without_renderingr   r~   extents)postodosupperextlowerextleftextrightextaxbblegbbnntodor+   r   r   s                r1   test_figure_legend_outsider    s   'BC'BX^'BEC	(CD(Chn(CDDE	'CD'Cgm'CDDE	(DE(Dhn(DEEE9H9H9G9Hg*D
 %'%#&$"$$"%%'E e$d<<4SAr&)jjZ$.j/""$--/77!	#--/77!	# %7 DDDEs   EE"E'E,zlegend_stackplot.pngc                     [         R                  " 5       u  p[        R                  " SSS5      nSU-  nSU-  S-   nSU-  S-   nUR	                  X#XE/ SQS	9  UR                  SS5        UR                  SS
5        UR                  SS9  g)z/Test legend for PolyCollection using stackplot.r   r   rh   r  r         @r5   )y1y2y3rK  F   rQ   rB   N)r   r   r   r   	stackplotri   rj   r$   )r+   r,   r-   r  r  r  s         r1   test_legend_stackplotr    s     llnGC
Ar2A	qB	q1B	q1BLL'9L:KK2KK2II&Ir3   c                      [         R                  " 5       u  p[         R                  " 5       u  p#UR                  [        S5      [        S5      5      nUR	                  US5        g )Nrm   foo)r   r   r[   rz   r$   )r+   r,   fig2ax2brss        r1   test_cross_figure_patch_legendr  #  sB    llnGCID
&&q58
$CKKUr3   c                     [         R                  " 5       u  pUR                  [        R                  /[        R                  /SSSSS9nUR                  U/S/5        [         R                  " 5       u  pS H\  nSn[        R                  R                  SU5      u  pVS	[        R                  R                  U5      -  nUR                  XVX7US
SS9  M^     UR                  5         UR                  S5        g )NrM   r   rm   )marker	facecolorr   sr    )redgreenbluei  r5   g      i@r   none)r   r  r   alpha
edgecolorsT)	r   r   r    r   nanr$   r   randgrid)r+   r,   r  r/   nr-   r.   scales           r1   test_nanscatterr  +  s    llnGC


BFF8bffXc C1 	 	6A IIqcI;llnGC)yy~~a#		q))


15 	 	1	 * IIKGGDMr3   c                     [         R                  " 5       u  pUR                  SSSSSS9  UR                  SSSS	SS9  UR                  5         [        R
                  " U/5      u  p#[        U5      S
:X  d   e[         R                  " 5       u  pUR                  SSSSSS9  UR                  SSSS	SS9  UR                  5         [        R
                  " U/5      u  p#[        U5      S
:X  d   eg )Nrg   rh   krM   r   )r/   r  r   r   r   vr5   )r   r   r    r$   mlegend_get_legend_handles_labelsr   )r+   r,   handlabs       r1   test_legend_repeatcheckokr  ?  s    llnGCJJsCs3fJ=JJsCs3fJ=IIK22B48IDs8q==llnGCJJsCs3fJ=JJsCs3fJ=IIK22B48IDs8q==r3   znot_covering_scatter.pngc                  &   / SQn [        S5       H  n[        R                  " U/U/X   S9  M     [        R                  " / SQSS9  [        R                  " 5       R                  SS5        [        R                  " 5       R                  SS5        g )	N)r   r   r   rm   r/   )r  r  r  rQ   rB   g      皙@)rz   r   r    r$   r#  ri   rj   )r*   r  s     r1   test_not_covering_scatterr  N  sh    F1XQC!FI.  JJ$&1GGItS!GGItS!r3   z"not_covering_scatter_transform.pngc                  H   [         R                  " 5       R                  SS5      n [        R                  " SSS5      n[
        R                  " X5        [
        R                  " S/S/U [
        R                  " 5       R                  -   S9  [
        R                  " SS	/S
S9  g )Nir   r      i  r   )	transformr  r[   rQ   rB   )mtransformsAffine2D	translater   r   r   rC   r    r#  	transDatar$   )offsetr-   s     r1   #test_not_covering_scatter_transformr  Z  ss     !!#--c26F
Ar4 AHHQNKKrdfswwy/B/B&BCJJu~6*r3   c                  ,   SS/SS//n SS/SS//S	S/S
S///nS
S/SS//S	S/SS///n[         R                  " U SSS9n[         R                  " USS9n[         R                  " USS	S9n[        R                  " 5       u  pgUR	                  U5        UR	                  U5        UR	                  U5        UR                  X4U// SQ5      nUR                  u  pn[        X4U4XU45       H(  u  pUR                  5       S   UR                  :X  a  M(   e   g )N)r   r   )r   r   )r   333333?)r   r   gffffff?r   r   r   r   r  rb   --rm   )
linestylesr   z-.)r  :)rp  rq  zline 3r   )
mcollectionsLineCollectionr   r   add_collectionr$   r
  r   get_linestyles_dash_pattern)lines1r  lines3lc1lc2lc3r+   r,   r   h1h2h3ohlhs                 r1   !test_linecollection_scaled_dashesr  f  s0    8X"67FRy2r(#r2hR%9:FRy2r(#r2hR%9:F

%
%f!
DC

%
%f
>C

%
%f
DCllnGCccc
))SsO%A
BC##JBBso|4  "1%)9)9999 5r3   c                      [         R                  " 5       u  pUR                  [        S5      SS9  UR	                  SS9  g)z(Test legend handler with numpoints <= 1.r   r   rO   r   r   N)r   r   rC   rz   r$   r   s     r1   test_handler_numpointsr  z  s3     llnGCGGE!HFG#IIIr3   c                  Z   [         R                  " 5       u  pUR                  S/SS9  UR                  SSSSS9  [        R
                  " [        5       nUR                  5         SSS5        [        W5      S:X  d   e[         R                  " 5       u  p1UR                  [        R                  R                  SSS	5      5        [        R                  " 5          [        R                  " S
5        UR!                  5         SSS5        g! , (       d  f       N= f! , (       d  f       g= f)z2Test that Text artists with labels raise a warningr   	mock datarO   textr   )r-   r.   r  r   Nr   )r   r   error)r   r   rC   r  r.  rn  ro  r$   r   
pcolormeshr   r   uniformwarningscatch_warningssimplefilterr!   )r+   r,   recordfs       r1   test_text_nohandler_warningr    s    llnGCGGQC{G#GGa1gG.	k	"f
		 
#v;! LLNEAMM"))##Aq(34		 	 	"g&
$$& 
#	" 
#	" 
#	"s   D'D
D
D*c                  Z    [         R                  " / / SS9  [         R                  " 5         g)z1Test legend when bar chart is empty with a label.r   rO   N)r   r[   r$   r8   r3   r1    test_empty_bar_chart_with_legendr    s     GGB&!JJLr3   zshadow_argument_types.pnggy&1?c            
      T   [         R                  " 5       u  pUR                  / SQSS9  UR                  SSS9UR                  SSS9UR                  S	S
SS.S9UR                  SSSS.S9UR                  SSSS.S94nU H  nUR	                  U5        M     UR                  SS9  g )Nr   r   rO   rA   Tr   r   r   Fr   r  rb   )r/   r  center right)rb   r   r   )r/   oyr   ztab:cyanr   )r/   oxlower rightrB   )r   r   rC   r$   r   )r+   r,   legsls       r1   test_shadow_argument_typesr    s     llnGCGGIVG$ II,tI4II-I6II-',s;  =II.'6bA  CII,'1<  >D 
a II-I r3   c                      [         R                  " 5       u  pUR                  / SQSS9  [        R                  " [
        SS9   UR                  SSS9  S S S 5        g ! , (       d  f       g = f)	Nr   r   rO   zdict or boolr,  rA   aardvarkr  )r   r   rC   r.  r/  
ValueErrorr$   r   s     r1   test_shadow_invalid_argumentr     sK     llnGCGGIVG$	z	8
		l:	6 
9	8	8s   A
A+c                      [         R                  " 5       u  pUR                  [        S5      SS9  UR	                  SSS9nUR                  5       R                  5       S:X  d   eg )NrK   r   rO   Tw)r   r  r   )r   r   rC   rz   r$   	get_frame	get_alphar   s      r1   test_shadow_framealphar%    sT     llnGCGGE#JfG%
))43)
/C==?$$&!+++r3   c                     [         R                  " 5       u  pUR                  [        S5      SS9  UR	                  5       nUR                  5       R                  5       S:X  d   eUR                  5       R                  5       (       a   eg )Nr   r  rO    )r   r   rC   rz   r$   	get_titler	  get_visibler   s      r1   test_legend_title_emptyr*    sk     llnGCGGE"I[G)
))+C==?##%+++}}**,,,,,r3   c                     [         R                  " SS9u  pUR                  [        S5      SS9  UR	                  5       nUR                  U R                  R                  5       5      R                  n[         R                  " SS9u  pUR                  [        S5      SS9  UR	                  5       nUR                  U R                  R                  5       5      R                  n[        R                  " US-  S5      U:X  d   eg )	NrK   r  r   AardvarkrO      r5   rb   )r   r   rC   rz   r$   r~   r{   get_rendererx0r.  approx)r+   r,   r   x01x02s        r1    test_legend_proper_window_extentr4    s    lls#GCGGE"IZG(
))+C




 7 7 9
:
=
=Clls#GCGGE"IZG(
))+C




 7 7 9
:
=
=C==Q$+++r3   c                     [         R                  " SS9u  pUR                  [        S5      SS9  UR	                  5       nU R	                  5       nU R
                  R                  5         UR                  5         UR                  5         g )NrK   r,  r   r-  rO   )r   r   rC   rz   r$   r{   r|   r~   )r+   r,   r   leg2s       r1   "test_window_extent_cached_rendererr7    sb    lls#GCGGE"IZG(
))+C::<DJJOOr3   c                  $   [         R                  " [        S5      SS9  [        R                  " [
        5         [         R                  " SSSSS.S9  S S S 5        [         R                  " S[        SSS9S	9n U R                  5       R                  5       S:X  d   e[         R                  " S
SSS9u  pUR                  nUS   R                  [        S5      SS9  US   R                  SSS9nUR                  5       R                  5       S:X  d   eUS   R                  [        S5      SS9  US   R                  SSSS.S	9nUR                  5       R                  5       S:X  d   eUS
   R                  [        S5      SS9  S [        R                  S'   US
   R                  SSS0S	9nUR                  5       R                  5       [        R                  S   :X  d   eUS   R                  [        S5      SS9  US   R                  SS9nUR                  5       R                  5       [        R                  S   :X  d   eUS   R                  [        S5      SS9  S[        R                  S'   US   R                  SSS0S	9nUR                  5       R                  5       S:X  d   eUS   R                  [        S5      SS9  US   R                  SS9nUR                  5       R                  5       S:X  d   eg ! , (       d  f       GN= f)Nr   r  rO   r-     serif)familysize)r   title_fontsizetitle_fontproperties)r   r>  r5   rm   )r      )rp   r   )r   r=  r   zlegend.title_fontsizer;  z	font.sizer   r   r   r   )r   rC   rz   r.  r/  r  r$   r
   r(  get_sizer   rw   get_fontsizer   r   )	r   r+   axesleg0leg1r6  leg3leg4leg5s	            r1   #test_legend_title_fontprop_fontsizerI    s   HHU2Yk*	z	"

B3:B(G	I 
# **:N.5B=@ AC==?##%+++Q73IC99DGLLr+L.7>>
2>>D>>((*b000GLLr+L.7>>
:A2/N  PD>>((*b000GLLr+L.,0CLL()7>>
08'/B  DD>>((*cll;.GGGGGLLr+L.7>>
>+D>>((*cll;.GGGGGLLr+L.,.CLL()7>>
08'/B  DD>>((*b000GLLr+L.7>>
>+D>>((*b000A 
#	"s   L  
L	alignment)r   r  r   c                     [         R                  " 5       u  pUR                  [        S5      SS9  UR	                  SU S9nUR                  5       S   R                  U :X  d   eUR                  5       U :X  d   eg )Nr   r   rO   r-  )r   rJ  r   )r   r   rC   rz   r$   get_childrenrW   get_alignmentrJ  r+   r,   r   s       r1   test_legend_alignmentrO    sn    llnGCGGE"IVG$
))*	)
:Ca &&)333)+++r3   r   r   c                    [         R                  " 5       u  pUR                  [        S5      SS9  UR	                  5       nUR                  U 5        UR                  5       [        R                  R                  U    :X  d   eg )Nr   r   rO   )
r   r   rC   rz   r$   set_loc_get_locr  rt   codesr   r+   r,   r   s       r1   test_ax_legend_set_locrU    s]    llnGCGGE"IVG$
))+CKK<<>W^^11#6666r3   )zoutside rightr   c                 ^   [         R                  " 5       u  pUR                  [        S5      SS9  UR	                  5       nUR                  U 5        U R                  S5      (       a  U R                  5       S   OU n UR                  5       [        R                  R                  U    :X  d   eg )Nr   r   rO   outsider   )r   r   rC   rz   r$   rQ  
startswithsplitrR  r  rt   rS  rT  s       r1   test_fig_legend_set_locrZ     s|    llnGCGGE"IVG$
**,CKKNN955#))+a.3C<<>W^^11#6666r3   c                    [         R                  " 5       u  pUR                  [        S5      SS9  UR	                  5       nUR                  U 5        UR                  5       S   R                  U :X  d   eUR                  5       U :X  d   eg )Nr   r   rO   r   )	r   r   rC   rz   r$   set_alignmentrL  rW   rM  rN  s       r1   test_legend_set_alignmentr]  +  su    llnGCGGE"IVG$
))+Ci a &&)333)+++r3   r/   )r  r  )r   r   r   c                 P   [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SS9  UR                  [        R                  " S5      [        R                  " S5      S-  SS9  UR                  [        R                  " S5      [        R                  " S5      S-  SS9  UR                  U S	9nUR                  5        H8  n[        R                  R                  UR                  5       U 5      (       a  M8   e   g )
Nr   r   #1rO   r5   #2rm   #3
labelcolor)r   r   rC   r   rR   r$   r  r   r*   
same_color	get_colorr/   r+   r,   r   r  s        r1   test_legend_labelcolor_singlerg  5  s     llnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7
))u)
%Czz$$T^^%5u====  r3   c                  p   [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SS9  UR                  [        R                  " S5      [        R                  " S5      S-  SS9  UR                  [        R                  " S5      [        R                  " S5      S-  SS9  UR                  / S	QS
9n[        UR                  5       / S	Q5       H:  u  p4[        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr   r   r_  rO   r5   r`  rm   ra  r   r   r   rb  r   r   rC   r   rR   r$   r   r  r   r*   rd  re  r+   r,   r   r  r/   s        r1   test_legend_labelcolor_listrl  B  s    llnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7
)))
/C3==?O<zz$$T^^%5u==== =r3   c                  r   [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S	-  S
SS9  UR                  SS9n[        UR                  5       / SQ5       H:  u  p4[        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr   r   r_  r   r   r/   r5   r`  r   rm   ra  r   	linecolorrb  ri  rj  rk  s        r1    test_legend_labelcolor_linecolorrp  N  s    llnGCGGBIIbM299R=?$cGBGGBIIbM299R=?$cGBGGBIIbM299R=?$cGB
)){)
+C3==?O<zz$$T^^%5u==== =r3   c                  r   [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S	-  S
SS9  UR                  SS9n[        UR                  5       / SQ5       H:  u  p4[        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr   r   r_  r   r   r5   r`  r   rm   ra  r   ro  rb  ri  r   r   r    r   rR   r$   r   r  r   r*   rd  re  rk  s        r1   /test_legend_pathcollection_labelcolor_linecolorrs  Z  s    llnGCJJryy}biimAoTSJAJJryy}biimAoTSJAJJryy}biimAoTSJA
)){)
+C3==?O<zz$$T^^%5u==== =r3   c                     [         R                  " 5       u  p[        R                  " / SQS-  5      nUR	                  [        R
                  " S5      [        R
                  " S5      SUS9  UR                  SS9nUR                  5       u  n[        R                  R                  UR                  5       S5      (       d   eg )	Nr   r   r   r   rV   r5   r   r_  r   ro  rb  black)r   r   r   r   r    rR   r$   r  r   r*   rd  re  )r+   r,   r*   r   r  s        r1   8test_legend_pathcollection_labelcolor_linecolor_iterablerw  f  s     llnGCXX/!34FJJryy}biim46JB
)){)
+CMMOED::  !17;;;;r3   c                  z   [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      [        R                  " S5      SS9  UR                  SS9nUR                  5       u  n[        R                  R                  UR                  5       S5      (       d   eg )Nr   r_  r   r   ro  rb  rv  )r   r   r    r   rR   r$   r  r   r*   rd  re  )r+   r,   r   r  s       r1   4test_legend_pathcollection_labelcolor_linecolor_cmaprz  r  s~     llnGCJJryy}biimryy}DJI
)){)
+CMMOED::  !17;;;;r3   c                  r   [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S	-  S
SS9  UR                  SS9n[        UR                  5       / SQ5       H:  u  p4[        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr   r   r_  r   r   markeredgecolorr5   r`  r   rm   ra  r   r}  rb  ri  rj  rk  s        r1   &test_legend_labelcolor_markeredgecolorr~  }      llnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL
))0)
1C3==?O<zz$$T^^%5u==== =r3   c                  r   [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S	-  S
SS9  UR                  SS9n[        UR                  5       / SQ5       H:  u  p4[        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr   r   r_  r   r   r   r5   r`  r   rm   ra  r   r}  rb  ri  rr  rk  s        r1   5test_legend_pathcollection_labelcolor_markeredgecolorr        llnGCJJryy}biimAoTSJIJJryy}biimAoTSJIJJryy}biimAoTSJI
))0)
1C3==?O<zz$$T^^%5u==== =r3   c                     [         R                  " 5       u  p[        R                  " / SQS-  5      nUR	                  [        R
                  " S5      [        R
                  " S5      SUS9  UR                  SS9n[        UR                  5       S/5       H:  u  pE[        R                  R                  UR                  5       U5      (       a  M:   e   g )	Nru  r5   r   r_  r  r}  rb  r  r   r   r   r   r    rR   r$   r   r  r   r*   rd  re  r+   r,   r*   r   r  r/   s         r1   >test_legend_pathcollection_labelcolor_markeredgecolor_iterabler         llnGCXX/!34FJJryy}biim46JJ
))0)
1C3==?SE2zz$$T^^%5u==== 3r3   c            	         [         R                  " 5       u  p[        R                  S   " [        R
                  R                  S5      5      nUR                  [        R                  " S5      [        R                  " S5      S[        R                  " S5      USS9  UR                  SS9n[        UR                  5       S/5       H:  u  pE[        R                  R                  UR                  5       U5      (       a  M:   e   g )	Nviridisr   r_  Reds)r   r   r   cmapr}  rb  r  r   r   r   	colormapsr   r   r  r    rR   r$   r   r  r*   rd  re  )r+   r,   r  r   r  r/   s         r1   :test_legend_pathcollection_labelcolor_markeredgecolor_cmapr    s     llnGCy)"))..*<=JJJ
		"
		"
))B-   ))0)
1C3==?SE2zz$$T^^%5u==== 3r3   c                  r   [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S	-  S
SS9  UR                  SS9n[        UR                  5       / SQ5       H:  u  p4[        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr   r   r_  r   r   markerfacecolorr5   r`  r   rm   ra  r   r  rb  ri  rj  rk  s        r1   &test_legend_labelcolor_markerfacecolorr    r  r3   c                  r   [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S	-  S
SS9  UR                  SS9n[        UR                  5       / SQ5       H:  u  p4[        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr   r   r_  r   r   r  r5   r`  r   rm   ra  r   r  rb  ri  rr  rk  s        r1   5test_legend_pathcollection_labelcolor_markerfacecolorr    r  r3   c                     [         R                  " 5       u  p[        R                  " / SQS-  5      nUR	                  [        R
                  " S5      [        R
                  " S5      SUS9  UR                  SS9n[        UR                  5       S/5       H:  u  pE[        R                  R                  UR                  5       U5      (       a  M:   e   g )	Nru  r5   r   r_  r  r  rb  r  r  r  s         r1   >test_legend_pathcollection_labelcolor_markerfacecolor_iterabler    r  r3   c                     [         R                  " 5       u  p[        R                  S   " [        R
                  R                  S5      5      nUR                  [        R                  " S5      [        R                  " S5      SUS9  UR                  SS9n[        UR                  5       S/5       H:  u  pE[        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr  r   r_  r   r  rb  r  r  r  s         r1   8test_legend_pathcollection_labelcolor_markfacecolor_cmapr    s     llnGC]]9%biinnR&89FJJ
		"
		"
	   ))0)
1C3==?SE2zz$$T^^%5u==== 3r3   c                 x   [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SS9  UR                  [        R                  " S5      [        R                  " S5      S-  SS9  UR                  [        R                  " S5      [        R                  " S5      S-  SS9  U [
        R                  S	'   UR                  5       nUR                  5        H8  n[
        R                  R                  UR                  5       U 5      (       a  M8   e   g )
Nr   r   r_  rO   r5   r`  rm   ra  legend.labelcolor)r   r   rC   r   rR   r   r   r$   r  r*   rd  re  rf  s        r1   %test_legend_labelcolor_rcparam_singler    s     llnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7(-CLL$%
))+Czz$$T^^%5u====  r3   c                     [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S	-  S
SS9  S[
        R                  S'   UR                  5       n[        UR                  5       / SQ5       H:  u  p4[
        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr   r   r_  r   rn  r5   r`  r   rm   ra  r   ro  r  ri  r   r   rC   r   rR   r   r   r$   r   r  r*   rd  re  rk  s        r1   (test_legend_labelcolor_rcparam_linecolorr    s    llnGCGGBIIbM299R=?$cGBGGBIIbM299R=?$cGBGGBIIbM299R=?$cGB(3CLL$%
))+C3==?O<zz$$T^^%5u==== =r3   c                     [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S	-  S
SS9  S[
        R                  S'   UR                  5       n[        UR                  5       / SQ5       H:  u  p4[
        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr   r   r_  r   r|  r5   r`  r   rm   ra  r   r}  r  ri  r  rk  s        r1   .test_legend_labelcolor_rcparam_markeredgecolorr        llnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL(9CLL$%
))+C3==?O<zz$$T^^%5u==== =r3   c                     [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S	-  S
SS9  S[
        R                  S'   UR                  5       n[        UR                  5       / SQ5       H:  u  p4[
        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr   r   r_  r   r|  r5   r`  r   rm   ra  r   mecr  ri  r  rk  s        r1   4test_legend_labelcolor_rcparam_markeredgecolor_shortr        llnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL(-CLL$%
))+C3==?O<zz$$T^^%5u==== =r3   c                     [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S	-  S
SS9  S[
        R                  S'   UR                  5       n[        UR                  5       / SQ5       H:  u  p4[
        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr   r   r_  r   r  r5   r`  r   rm   ra  r   r  r  ri  r  rk  s        r1   .test_legend_labelcolor_rcparam_markerfacecolorr    r  r3   c                     [         R                  " 5       u  pUR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S-  SSS9  UR                  [        R                  " S5      [        R                  " S5      S	-  S
SS9  S[
        R                  S'   UR                  5       n[        UR                  5       / SQ5       H:  u  p4[
        R                  R                  UR                  5       U5      (       a  M:   e   g )Nr   r   r_  r   r  r5   r`  r   rm   ra  r   mfcr  ri  r  rk  s        r1   4test_legend_labelcolor_rcparam_markerfacecolor_shortr  +  r  r3   c                 ~   UR                   S   R                  5       nUR                  5       S   nU S   S   n [        R                  R                  XR5      (       d   eU(       ah  [        R                  R                  XVR                  5       5      (       d   e[        R                  R                  XPR                  5       5      (       d   eU(       ai  [        R                  R                  XVR                  5       5      (       d   e[        R                  R                  XPR                  5       5      (       d   egg)z
Check that histogram color, legend handle color, and legend label color all
match the expected input. Provide facecolor and edgecolor flags to clarify
which feature to match.
rX   r   N)textsre  get_patchesr   r*   rd  get_facecolorget_edgecolor)	histogramr   expected_colorr  r   label_colorr   s          r1   assert_last_legend_patch_colorr  8  s     ))B-))+KOOb!E"a I::  ====zz$$[2E2E2GHHHHzz$$[2I2I2KLLLLzz$$[2E2E2GHHHHzz$$[2I2I2KLLLL r3   c                     [         R                  " S5      n [        R                  " 5       u  pUR	                  U SSSS9nUR                  SS9n[        X4SSS	9  UR	                  U S
SSS9nUR                  SS9n[        X4SSS9  UR	                  U SSSS9nUR                  SS9n[        X4SSS	9  UR	                  U SSSSS9nUR                  SS9n[        X4SSS	9  UR	                  U SSSSS9nUR                  SS9n[        X4SSS	9  UR	                  U SSSSS9nUR                  SS9n[        X4SSS9  UR	                  U S
SSSS9nUR                  SS9n[        X4SSS9  UR	                  U S
SSS9nUR                  SS9n[        X4SSS9  UR	                  U SSSSS9nUR                  SS9n[        X4SSS	9  UR	                  U SSSSS9nUR                  SS9n[        X4SSS	9  UR	                  U SSSSS9nUR                  SS9n[        X4SSS9  UR	                  U SSSSS9nUR                  SS9n[        X4SSS	9  g )Nr   r[   r   zred bar hist with a red label)rv   r/   r   ro  rb  Tr  rq   r   zgreen step hist, green labelr   rr   r   z&blue stepfilled hist with a blue labelz,red bar hist with blue edges and a red label)rv   r/   ecr   )rv   r   r  r   r  z(unfilled blue bar hist with a blue labelz blue step hist with a blue label)rv   r  r   z*red stepfilled hist, blue edges, red labelz)unfilled blue stepfilled hist, blue labelz-edgeless red stepfilled hist with a red label)r   rR   r   r   ry   r$   r  )r-   r+   r,   r  r   s        r1   +test_legend_labelcolor_linecolor_histogramsr  K  s   
		"A llnGC
E4STA
)){)
+C"13$?
F#5STA
)){)
+C"13$?
L> 	 	@A
)){)
+C"13$? 	ED 	 	FA
)){)
+C"13$?
EccD 	 	FA
)){)
+C"13$?
Ef@ 	 	BA
)){)
+C"13$? 	F##8 	 	:A
)){)
+C"13$?
Fs8 	 	:A
)){)
+C"13$? 	LB 	 	DA
)){)
+C"13$?
LSSB 	 	DA
)){)
+C"13$?
LVA 	 	CA
)){)
+C"13$?
LSVE 	 	GA
)){)
+C"13$?r3   c                 L   UR                   S   R                  5       nUR                  5       S   n[        R                  R                  Xb5      (       d   eU(       ah  [        R                  R                  XgR                  5       5      (       d   e[        R                  R                  X`R                  5       5      (       d   eU(       ah  [        R                  R                  XgR                  5       5      (       d   e[        R                  R                  X`R                  5       5      (       d   eU(       ai  [        R                  R                  XgR                  5       5      (       d   e[        R                  R                  X`R                  5       5      (       d   egg)z
Check that line marker color, legend handle color, and legend label color all
match the expected input. Provide color, facecolor and edgecolor flags to clarify
which feature to match.
rX   N)r  re  rD   r   r*   rd  get_markerfacecolorget_markeredgecolor)line_markerr   r  r/   r  r   r  
leg_markers           r1   #assert_last_legend_linemarker_colorr    s+    ))B-))+K$J::  ====zz$$[2F2F2HIIIIzz$$[2G2G2IJJJJzz$$[2P2P2RSSSSzz$$[2Q2Q2STTTTzz$$[2P2P2RSSSSzz$$[2Q2Q2STTTT r3   c                     [         R                  " S5      n [        R                  " 5       u  pUR	                  U SSS9u  nUR                  SS9n[        X4SSS9  UR	                  U S	SS
S9u  nUR                  SS9n[        X4SSS9  UR	                  U S	SSSS9u  nUR                  SS9n[        X4SSS9  UR	                  U S	SSSS9u  nUR                  SS9n[        X4SSS9  UR	                  U S	SSSS9u  nUR                  SS9n[        X4SSS9  UR	                  U S	SSSS9u  nUR                  SS9n[        X4SSS9  UR	                  U S	SSSS9u  nUR                  SS9n[        X4S5        g )Nr   r   zred line with a red labelry  ro  rb  Tr  rM   red circles with a red labelr   "red circles, blue edges, red label)r   r  r   )r  r  r   r  r  !blue unfilled circles, blue labelr  red edgeless circles, red label7black label despite invisible circles for dummy entriesr  )r   rR   r   r   rC   r$   r  )r-   r+   r,   r  r   s        r1   %test_legend_labelcolor_linecolor_plotr    s   
		!A llnGC	c!<	=BA
)){)
+C'4@ 
C3&D	EBA
)){)
+C'4@	C3C/S	TBA
)){)
+C'4@	CSc1U	VBA
)){)
+C'tD 
CV: 
 
<BA
)){)
+C'tD	CSf4U	VBA
)){)
+C'tD	C6vP 
 
RBA
)){)
+C'4r3   c                 f   UR                   S   R                  5       nUR                  S   n[        R                  R                  XR5      (       d   eU(       ah  [        R                  R                  XVR                  5       5      (       d   e[        R                  R                  XPR                  5       5      (       d   eU(       ai  [        R                  R                  XVR                  5       5      (       d   e[        R                  R                  XPR                  5       5      (       d   egg)z
Check that scatter marker color, legend handle color, and legend label color all
match the expected input. Provide facecolor and edgecolor flags to clarify
which feature to match.
rX   N)r  re  r
  r   r*   rd  r  r  )scatter_markerr   r  r  r   r  
leg_handles          r1   &assert_last_legend_scattermarker_colorr    s     ))B-))+K##B'J::  ====zz$$[2J2J2LMMMMzz$$[2N2N2PQQQQzz$$[2J2J2LMMMMzz$$[2N2N2PQQQQ r3   c                  n   [         R                  " S5      n [        R                  " 5       u  pUR	                  X SSS9nUR                  SS9n[        X4SSS9  UR	                  X SS	S
S9nUR                  SS9n[        X4SSS9  UR	                  X SS	S
S9nUR                  SS9n[        X4SSS9  UR	                  X SS	SS9nUR                  SS9n[        X4S	SS9  UR	                  X SSSS9nUR                  SS9n[        X4SSS9  UR	                  X SSSS9nUR                  SS9n[        X4S5        g )Nr   r   r  ry  ro  rb  Tr  r   r  )r   r  r   )r   r  r   r  r  r  r  r  r  )r   rR   r   r   r    r$   r  )r-   r+   r,   r  r   s        r1   (test_legend_labelcolor_linecolor_scatterr    sT   
		!A llnGC


13&D
EA
)){)
+C*13$G


133.R
SA
)){)
+C*13$G


1CC/S
TA
)){)
+C*13$G 	

1Fs2U
VA
)){)
+C*13$G


1CF2S
TA
)){)
+C*13$G


16fR 	 	TA
)){)
+C*137r3   z4ignore:No artists with labels found to put in legendc                      [         R                  " 5       n U R                  5       (       a   eU R                  S5        U R                  5       (       d   eU R                  S5        U R                  5       (       a   eg )NTF)r   r$   get_draggableset_draggabler$   s    r1   test_get_set_draggabler    sk    ZZ\F##%%%%
!!!!
##%%%%%r3   	draggable)TFc                     [         R                  " 5       u  pUR                  [        S5      SS9  UR	                  U S9nUR                  5       U L d   eg )Nr   shabnamsrO   )r  )r   r   rC   rz   r$   r  )r  r+   r,   r   s       r1   test_legend_draggabler    sJ    llnGCGGE"IZG(
))i)
(C)+++r3   c                  b   [         R                  " / SQSSSS9u  pn[         R                  " 5       nUR                   H  nUR	                  S5        M     WR                  5       S S US   R                  5       S S :X  d   eUR                  5       S S US   R                  5       S S :X  d   eg )	Nr   g      ?datar  )r  r   r/   rh   rX   r   )r   ry   r$   r
  	set_alphar  r  )r-   r  hhr$   r   s        r1   test_alpha_handlesr    s    xx	V5IHA"ZZ\F##
S $cr"be&9&9&;CR&@@@@cr"be&9&9&;CR&@@@@r3   c                 <   S[         R                  S'   S[         R                  S'   S[         R                  S'   [        R                  " 5       u  pUR	                  SSSS	9  UR                  S
S9  UR                  R                  5         SU R                  ;  d   eg )Nr:  zfont.familyzComputer Modernz
font.serifTztext.usetexr   inputrO   r   r@  z Font family ['serif'] not found.)	r   r   r   r   rC   r$   r{   r|   r  )caplogr+   r,   s      r1   test_usetex_no_warnr    sy    ")CLL!2CLL"&CLLllnGCGGAqG IIKI JJOO-V[[@@@r3   c                   ^ [         R                  " SSS9mU R                  [        SU4S j5        [        R
                  " 5       u  pUR                  R                  5         / SQn/ SQnUR                  X4SS	S
9  [        SS05         UR                  5       nS S S 5        [        R                  " [        SS9 nUR                  W5        S S S 5        [        W5      S:X  d   eg ! , (       d  f       NS= f! , (       d  f       N1= f)Nr         ?rq   perf_counterc                     > [        T 5      $ r7   nextcounters   r1   <lambda>-test_warn_big_data_best_loc.<locals>.<lambda>'  	    d7mr3   r`   rc   rf   r:   rO   z
legend.locrQ   zGCreating legend with loc="best" can be slow with large amounts of data.r,  r5   )	itertoolscountsetattrtimer   r   r{   r|   rC   r	   r$   r.  rn  ro  draw_artistr   )monkeypatchr+   r,   r-   r.   r$   recordsr  s          @r1   test_warn_big_data_best_locr  $  s    ooac*Gn.CDllnGCJJOO 	'A*AGGA$fG%	\6*	+ 
,	k)
*-4
* w<1 
,	+
* 
*s   	C';C8'
C58
Dc                 >  ^ [         R                  " SSS9mU R                  [        SU4S j5        [        R
                  " 5       u  pUR                  R                  5         / SQn/ SQnUR                  X4SS	S
9  UR                  S5      nUR                  U5        g )Nr   r  r  r  c                     > [        T 5      $ r7   r  r  s   r1   r  :test_no_warn_big_data_when_loc_specified.<locals>.<lambda>?  r  r3   r`   rc   rf   r:   rO   rQ   )r  r  r  r  r   r   r{   r|   rC   r$   r  )r  r+   r,   r-   r.   r$   r  s         @r1   (test_no_warn_big_data_when_loc_specifiedr  <  sy    ooac*Gn.CDllnGCJJOO 	'A*AGGA$fG%YYvFOOFr3   label_arraylowhigh)r  r  c                    / SQnSS/SS/SS//n[         R                  " 5       u  p4UR                  XU S9  UR                  5       nUR	                  5        Vs/ s H  ofR                  5       PM     nnUSS	/:X  d   eg s  snf )
Nr   r   r5   r   r   rs   rO   r  r  )r   r   rC   r$   r  r	  )r  r-   r.   r+   r,   r   entrylegend_textss           r1   'test_plot_multiple_input_multiple_labelr  M  s     	A
Q
Q
Q	A llnGCGGAG$
))+C25--/B/NN$/LBE6?*** Cs   A?r   r   r   c                    / SQnSS/SS/SS//n[         R                  " 5       u  p4UR                  XU S9  UR                  5       nUR	                  5        Vs/ s H  ofR                  5       PM     nnU[        U 5      /S-  :X  d   eg s  snf )Nr   r   r5   r   r   rs   rO   )r   r   rC   r$   r  r	  str)r   r-   r.   r+   r,   r   r  r  s           r1   %test_plot_multiple_input_single_labelr  _  s     	A
Q
Q
Q	A llnGCGGAG
))+C25--/B/NN$/LBCJ<!++++ Cs   B
c                      / SQn / SQn[         R                  " 5       u  p#[        R                  " [        SS9   UR                  XSS/S9  S S S 5        g ! , (       d  f       g = f)Nr   )r5   r   r?  z,label must be scalar or have the same lengthr,  r  r  rO   )r   r   r.  r/  r  rC   )r-   r.   r+   r,   s       r1   %test_plot_single_input_multiple_labelr  o  sT     	AAllnGC	zK
M
UFO,
M 
M 
Ms   A
A#c                      [         R                  " 5       u  pUR                  S/S//S/S9u  nUR                  5       S:X  d   eg )Nr   r   ArO   )r   r   rC   	get_label)r+   r,   r:   s      r1   !test_plot_single_input_list_labelr  z  sB    llnGCGGaS1#JseG,ED>>s"""r3   c                      [         R                  " [        5         / SQn SS/SS/SS//n/ SQn[        R                  " 5       u  p4UR                  XUS9  S S S 5        g ! , (       d  f       g = f)	Nr   r   r5   r   r   rs   )r  r  mediumrO   )r.  r/  r  r   r   rC   )r-   r.   r   r+   r,   s        r1   3test_plot_multiple_label_incorrect_length_exceptionr
    sa     
z	"VVV *,,.
E" 
#	"	"s   ;A
A-c            	          [         R                  " 5       u  pUR                  / SQ/ SQ/ SQSSSS9  UR                  5         g )Nra  r   r   r   faceFill)r  r   r   )r   r   r   r$   r   s     r1   test_legend_face_edgecolorr    s7    llnGCOOIy)!V6  CIIKr3   c                      [         R                  " 5       u  pUR                  SS/SS/SS9  UR                  5       nUR                  UL d   eUR                  5       S   R                  UL d   eg )Nr   r5   rm   r   r:   rO   r   )r   r   rC   r$   rC  r  r   s      r1   test_legend_text_axesr    sc    llnGCGGQFQF&G)
))+C88r>>==?1""b(((r3   c                     [         R                  " 5       u  pUR                  SS/SS/SS9  [        R                  " S/S/SS9/nUR                  US/SS9nUS   R                  5       UR                  S   R                  5       :X  d   eg )Nr   r   r  )r  r-  r  )r   r   r    mlinesLine2Dr$   r  r
  )r+   r,   r0   r   s       r1   test_handlerline2dr    s    llnGCJJ1v1vcJ*}}aS1#c23G
))Gj\Q)
7C1:  "c&8&8&;&F&F&HHHHr3   c                      [         R                  " 5       R                  5       n U R                  5       nUR	                  SS/SS/SS9  U R                  5       nUR                  SS9U L d   eg )Nr   r   r:   rO   F)root)r   r   
subfiguresr   rC   r$   
get_figure)subfigr,   r   s      r1   test_subfigure_legendr    s`    ZZ\$$&F		BGGQFQF&G)
--/C>>u>%///r3   c                     [         R                  " SS/SS/SSS9n [         R                  " 5       R                  5       S   nUR	                  S5        UR                  5       S S [        U R                  5       S   S S 5      :X  d   eUR                  5       S S [        U R                  5       S   S S 5      :X  d   eg )	Nr   r   r5   rm   z#123456r   )r/   r   r   )r   r   r$   r  r  r  tupler  )pcr   s     r1   -test_setting_alpha_keeps_polycollection_colorr    s    			1a&1a&		IBJJL$$&q)E	OOC !$b.>.>.@.CBQ.G(HHHH !$b.>.>.@.CBQ.G(HHHHr3   c            
          / SQn [         R                  " 5       u  pU  Vs/ s H  n[        R                  " S/S/SUS9PM     nn/ SQnU Vs/ s H  ofR	                  5       PM     nnUR                  XE5      nUR                  5        Vs/ s H  ofR	                  5       PM     n	nUR                  5        V
s/ s H  oR                  5       PM     nn
Xys=:X  a  U :X  d   e   eX[:X  d   eg s  snf s  snf s  snf s  sn
f )N)r  *r  r   None)lsr  )r  r[   xyzzy)	r   r   r  r  r  r$   rD   r  r	  )_markersr+   r,   markr  r)   r:   r  r$   new_markersr  
new_labelss               r1   test_legend_markers_from_line2dr(    s    HllnGC!#! ]]A3t<! 
 #$F-23UT UG3YYu%F171A1A1CD1C??$1CKD.4.>.>.@A.@d--/.@JA-X-----# 4 EAs   #C,C1C68C;c                 L    / SQnSnU R                  X#S9  UR                  X#S9  g )N)r   r   r   r   er  rm   )ncol)ro   r  )r  r  stringsro   s       r1   test_ncol_ncolsr-    s*     -GEOOGO(NN7N(r3   c                     [         R                  " 5       u  p[        R                  " [        SS9   UR                  SS/S9  S S S 5        [        R                  " [        SS9   UR                  SS/S9  S S S 5        [        R                  " [        SS9   UR                  S	S/S9  S S S 5        g ! , (       d  f       Nu= f! , (       d  f       NS= f! , (       d  f       g = f)
NzFloc must be string, coordinate tuple, or an integer 0-10, not \(1.1,\)r,  )r   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'\))r0  zgo bluer   r   r.  r/  r  r$   r   s     r1    test_loc_invalid_tuple_exceptionr2    s     llnGC	z +C 
E
		g{m	4
E 
z +T 
V
		-{m	D
V 
z +Q 
S
		(+	?
S 
S
E 
E
V 
V
S 
Ss#   B2$CC2
C 
C
C"c                  v    [         R                  " 5       u  pUR                  SS/S9  UR                  SS/S9  g )N)r0  }?5^I?r  r/  )r   r5   r   r   r$   r   s     r1   test_loc_valid_tupler6    s3    llnGCII.+I7II&+I/r3   c                  ~    [         R                  " 5       u  pUR                  SS/S/S9  UR                  SS/S/S9  g )Nr0  r4  r  r/  r   r5   r5  r   s     r1   test_loc_valid_listr8    s;    llnGCII5%.+I7II1a&+I/r3   c                      [         R                  " 5       u  p[        R                  " [        SS9   UR                  / SQS/S9  S S S 5        g ! , (       d  f       g = f)NzOloc must be string, coordinate tuple, or an integer 0-10, not \[1.1, 2.2, 3.3\]r,  )r   r  gffffff
@r  r/  r1  r   s     r1   test_loc_invalid_list_exceptionr:    sI    llnGC	z +L 
N
		o{m	<
N 
N 
N   A
Ac                      [         R                  " 5       u  p[        R                  " [        SS9   UR                  SS0S/S9  S S S 5        g ! , (       d  f       g = f)NzKloc must be string, coordinate tuple, or an integer 0-10, not {'not': True}r,  notTr  r/  r1  r   s     r1   test_loc_invalid_typer>    sM    llnGC	z +F 
H
		udm[M	:
H 
H 
Hr;  c                     [         R                  " 5       u  pUR                  SS/S9  UR                  SS/S9  UR                  SS/S9  UR                  SS/S9  [        R                  " [
        SS9   UR                  S	S/S9  S S S 5        [        R                  " [
        S
S9   UR                  SS/S9  S S S 5        g ! , (       d  f       NB= f! , (       d  f       g = f)Nr   r  r/  r   r   r   z@loc must be string, coordinate tuple, or an integer 0-10, not 11r,  rA  z@loc must be string, coordinate tuple, or an integer 0-10, not -1rX   r   r   r$   r.  r/  r  r   s     r1   !test_loc_validation_numeric_valuerA    s    llnGCII![MI*II![MI*II![MI*II"k]I+	z +; 
=
		b+	/
= 
z +; 
=
		b+	/
= 
=	
= 
=
= 
=s   5C(C
C
C"c                  >   [         R                  " 5       u  pS/nUR                  SUS9  UR                  SUS9  UR                  SUS9  UR                  SUS9  UR                  SUS9  UR                  SUS9  UR                  SUS9  UR                  SUS9  UR                  S	US9  UR                  S
US9  UR                  SUS9  UR                  SUS9  [        R                  " [
        SS9   UR                  SUS9  S S S 5        g ! , (       d  f       g = f)Nr  rQ   r/  r   rA   r   r  r   r   r  zlower centerzupper centerz 'wrong' is not a valid value forr,  wrongr@  )r+   r,   r)   s      r1    test_loc_validation_string_valuerD    s   llnGC]FII&I(II-I/II&I(II-I/II,vI.II,vI.II-I/II'&I)II-I/II.I0II.I0II.I0	z)K	L
		gf	- 
M	L	Ls   4D
Dc                     [         R                  " [        S5      5      u  n [         R                  " [        S5      5      u  n[        R                  " [
        SS9   [         R                  " X// SQS9n[        UR                  5      S:X  d   e[        UR                  5       5      S:X  d   e S S S 5        g ! , (       d  f       g = f)Nr   znumber of handles and labelsr,  pl1pl2pl3r0   r)   r5   )
r   rC   rz   r.  rn  ro  r$   r   r
  r  rG  rH  r$   s      r1   !test_legend_handle_label_mismatchrL    s    88E"IDC88E"IDC	k)G	HSJ7LM6(()Q...6##%&!+++ 
I	H	Hs   AB99
Cc                  P   [         R                  " [        S5      5      u  n [         R                  " [        S5      5      u  n[         R                  " [	        X/5      [	        / SQ5      S9n[        UR                  5      S:X  d   e[        UR                  5       5      S:X  d   eg )Nr   rF  rJ  r5   )r   rC   rz   r$   iterr   r
  r  rK  s      r1   (test_legend_handle_label_mismatch_no_lenrO  (  s    88E"IDC88E"IDCZZcZ 0#$9:<Fv$$%***v!"a'''r3   c                      [         R                  " / SQ5        [        R                  " [        SS9   [         R
                  " 5         S S S 5        g ! , (       d  f       g = f)Nr   zNo artists with labels foundr,  )r   rC   r.  r/  ro  r$   r8   r3   r1   test_legend_nolabels_warningrQ  1  s3    HHY	{*H	I

 
J	I	Is   A
Ac                      [         R                  " / SQ5        [         R                  " 5         [         R                  " 5       R	                  5       c   eg )Nr   )r   rC   r$   r#  r   r8   r3   r1   test_legend_nolabels_drawrS  7  s2    HHYJJL779!---r3   c            
      $   / SQn / SQn/ SQn/ n[         R                  " SSS9u  pE[        UR                  S5       H  u  pgUR	                  XUSS	S
S9  UR                  SS5        UR                  SS5        UR                  US9nUR                  R                  5         UR                  UR                  5       R                  UR                  R                  5       5      5        M     [        US   R                   US   R                   5        g )Nr   )r   r   r   )r   r   r   r5   r   r   rn   rQ   r   grayr   zShaded Area)r/   r  r   r   r?  rX   r   rB   r   )r   r   r   rw   r   ri   rj   r$   r{   r|   r}   r~   r   r   r   r   r   )	r-   r  r  r   r+   r   r,   r   r   s	            r1   test_legend_loc_polycollectionrX  >  s     	A	B	BJ||!W5HCsxx!78
rs-P
Aq
BiiCi 

!!#//0E0E0GH	J 9 JqM((*Q-*>*>?r3   c                     [         R                  " SSS9u  p/ n[        UR                  S5       H  u  p4SS/nSS/nUR	                  XVSS9  UR                  SSS	S
S9  UR                  US9nU R                  R                  5         UR                  UR                  5       R                  UR                  R                  5       5      5        M     [        US   R                  US   R                  5        g )Nr5   rU  rn   rV  r   z	plot namerO   r  zsome text blahblahtop)verticalalignmentrB   r   )r   r   r   rw   rC   r  r$   r{   r|   r}   r~   r   r   r   r   r   )r+   r   r   r,   r   r-   r.   r   s           r1   test_legend_textr\  Q  s     ||!W5HCJsxx!78FF
K(
Q,FiiCi 

!!#//0E0E0GH	J 9 JqM((*Q-*>*>?r3   c                     [         R                  " 5       u  pUR                  / SQSS9  UR                  SSS9  UR	                  SS9  [
        R                  R                  U S	U R                  S
9 nU R                  [        R                  " 5       5        S S S 5        WR                  5         g ! , (       d  f       N= f)Nr   LinerO   r   )r   r   )r   r   rB   _get_renderer)wraps)r   r   rC   annotater$   r   r   objectr_  savefigioBytesIOassert_not_called)r+   r,   mocked_get_renderers      r1   test_legend_annotaterh  b  s    llnGCGGIVG$KKKII!I			(9(9 
 
;>QBJJL!
;
 ))+
; 
;s   2%B00
B>c                     [         R                  R                  S5        [         R                  R                  S5      n [        R                  " SSS9u  p/ SQnUS   R                  U SUS	9nUS
    Vs/ s H  oUR                  5       PM     snU:X  d   eUS   R                  5       u  pgXs:X  d   e[        S U 5       5      (       d   eUS   R                  XSS9nUS    Vs/ s H  oUR                  5       PM     snU:X  d   eUS   R                  5       u  pgXs:X  d   e[        S U 5       5      (       d   e[        R                  " [        SS9   US   R                  XS S S9n	S S S 5        US   R                  U SS9n
U
S   S   R                  5       S:X  d   e[        S U
S   SS   5       5      (       d   eg s  snf s  snf ! , (       d  f       Ng= f)Ni!N,)r   r   r   r   )nrowsro   )box Azbox Bzbox Czbox Dr   T)patch_artistr   boxesc              3   j   #    U  H)  n[        U[        R                  R                  5      v   M+     g 7fr7   )
isinstancer   patches	PathPatchr9   r  s     r1   r;   -test_boxplot_legend_labels.<locals>.<genexpr>}  s$     EWz!S[[2233W   13F)r   showboxmediansc              3   j   #    U  H)  n[        U[        R                  R                  5      v   M+     g 7fr7   )ro  r   r  r  rr  s     r1   r;   rs    s$     @1z!SYY--..rt  z values must have same the lengthr,  r5   rX   rO   rm   rk  c              3   ^   #    U  H#  oR                  5       R                  S 5      v   M%     g7f)_N)r  rX  )r9   r-   s     r1   r;   rs    s$     I6H{{}'',,6Hs   +-)r   r   seedr   r   boxplotr  r!   allr.  r/  r  )r  r+   r   legend_labelsbp1r  r0   r)   bp2bp3bp4s              r1   test_boxplot_legend_labelsr  q  s   IINN899G$D||!1-HC8M a&..D.
FC#&w<0<aKKM<0MAAA!f668OG"""EWEEEEE a&..E.
BC#&y>2>aKKM>2mCCC!f668OG"""@@@@@@ 
z)K	L!fnnTs);n< 
M a&..W.
-Cy>!&&(G333Ic)nQR6HIIIII) 1 3 
M	Ls   5G&GG
Gc                     [         R                  " 5       u  pUR                  / SQSS9  UR                  SS9nUR                  R                  5       S:X  d   e[        R                  " SS05         [         R                  " 5       u  pUR                  / SQSS9  UR                  5       nUR                  R                  5       S:X  d   e SSS5        [        R                  " SS	S
.5         [         R                  " 5       u  pUR                  / SQSS9  UR                  5       nUR                  R                  5       S	:X  d   e SSS5        [        R                  " SS05         [         R                  " 5       u  pUR                  / SQSS9  UR                  SS9nUR                  R                  5       S:X  d   e SSS5        g! , (       d  f       GN= f! , (       d  f       N= f! , (       d  f       g= f)z,Test legend.linewidth parameter and rcParam.r   r  rO   g      @)	linewidthlegend.linewidthr  Nr  )r  zpatch.linewidthrh   g      @)r   r   rC   r$   r   get_linewidthr   r	   r   s      r1   test_legend_linewidthr    s   llnGCGGIVG$ ))c)
"C??((*c111 
+S1	2,,.
	(iik,,.#555	 
3 
TcJ	K,,.
	(iik,,.#555	 
L 
+S1	2,,.
	(ii#i&,,.#555	 
3	2 
3	2 
L	K 
3	2s'   1AG-AG(AG.
G
G+.
G<c            	         [         R                  " 5       u  p[        R                  " [        R
                  " SS5      [        R
                  " SS5      /SSSSSS	9nUR                  U5        UR                  5         UR                  5       n[        UR                  5       5      S:X  d   eUR                  5       S
   R                  5       S:X  d   e[        UR                  5      S:X  d   eUR                  S
   n[        R                  R                  UR!                  5       UR!                  5       S
   5      (       d   e[        R                  R                  UR#                  5       UR#                  5       S
   5      (       d   eUR%                  5       UR'                  5       S
   :X  d   eUR)                  5       UR+                  5       S
   :X  d   eg )Nr   r   )r5   r   zpatch collectionr  r  rm   r  )r   r  r   
linewidths	linestyler   )r   r   r  PatchCollectionr   Circler  autoscale_viewr$   r   r  r	  r
  r   r*   rd  r  r  r  get_linewidthsget_linestyler  )r+   r,   r  r   legend_patchs        r1   test_patchcollection_legendr    s    llnGC		%	%		#X__VQ%?@ 
B b
))+C s}}1$$$==?1&&(,>>>> s!!"a'''%%a(L::  !;!;!="$"2"2"4Q"79 9 9 9::  !;!;!="$"2"2"4Q"79 9 9 9%%'2+<+<+>q+AAAA%%'2+<+<+>q+AAAAr3   c                  `   [         R                  " 5       u  p[        R                  " / SS9nUR	                  U5        UR                  5       n[        UR                  5       5      S:X  d   eUR                  5       S   R                  5       S:X  d   e[        UR                  5      S:X  d   eg )Nzempty collectionrO   r   r   )
r   r   r  r  r  r$   r   r  r	  r
  )r+   r,   r  r   s       r1   !test_patchcollection_legend_emptyr    s    llnGC 
	%	%b0B	CBb ))+C s}}1$$$==?1&&(,>>>> s!!"a'''r3   )FF)FFF)r"   rd  r  platformsysr  unittestr   r  numpyr   numpy.testingr   r.  matplotlib.testing.decoratorsr   r   matplotlib.testing._markersr   matplotlib.pyplotpyplotr   
matplotlibr   matplotlib.patchesrp  r   matplotlib.transforms
transformsr  matplotlib.collectionsr  matplotlib.linesr  r  matplotlib.legend_handlerr   matplotlib.legendr$   r  r	   matplotlib.font_managerr
   r2   rE   rS   r^   rk   r   r   r   machiner   r   r   r   r   r   r   r   r   r  r  r  r  rz  r  r  r  r  r  r  r  r  r  r  r  r  r   r%  r*  r4  r7  rI  r%  parametrizerO  rU  rZ  r]  rg  rl  rp  rs  rw  rz  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r  r  r  r   r  intr  r  r  r
  r  r  r  r  r  r(  r-  r2  r6  r8  r:  r>  rA  rD  rL  rO  rQ  rS  rX  r\  rh  r  r  r  r  r8   r3   r1   <module>r     s    	   
     )  O 4   % + - ! 2 # ! 29$	1 %&DH I %&DH: I: %&g6 7@,@@ ./TQ' R' ,-4w#++-9auF-F- -.D#++-9auF	IF	I #$$g#++-9atE2E2 &'T#++-9atE	6E	6 ;-T!llh6dA?E?E <.d'#++-9auF2F2 $&78d!!!!" &'TI8 J8 :,D	B. C.<#5$ 
 
c7 c7L2; 2;j&#R )*': ;( -.g>" ?" 78H+ I+:('" ./T"||x7eQ@!@!*7,-,#1L &AB, C,  347 57  ;<7 =7 &AB, C, "?@	> A	>	>	>	>	<<	>	>	>>&	>	>	>>" "?@
> A
>
>
>
>
>
> ?DM&@@F QVCHU*#5N GLR$8@ RS& T& m4, 5,A 
A 
A0" %)8)+5&/)B)D E+E+ 5!S/2, 3,-#
#)I0I " ) )@"00=;0.&,( RS. T.@&@",J@6>BB(r3   