
    %WhR              	       	   d dl Z d dlZd dlZd dlZd dlZd dlmZ d dlZd dlZ	d dl
mZ d dlZd dlmZmZ d dlmZ d dlmZ d dlZd dlmZ d dlmZ d dlm Z d dlm Z! d dl"m#Z# d dl$m%Z& d dlm'Z' d dl(m)Z) d	 Z*d
 Z+ edgd      d        Z, edgd      d        Z- edg      d        Z.d Z/d Z0 edgd      d        Z1 edgd ejd                         dk(  rd nd      d        Z3 edgd ejd                         dk(  rd nd      d        Z4 edgd ejd                         dk(  rd nd      d         Z5 ed!gd ejd                         dk(  rd nd      d"        Z6 ed#gdd$      d%        Z7 ed&gd ejd                         dk(  rd nd'      d(        Z8 ed)d*gd      d+        Z9 ed,gd      d-        Z: ed.gdd/0      d1        Z;d2 Z<d3 Z= ed4g5      d6        Z> G d7 d8      Z? G d9 d:      Z@d; ZA ed<g ejd                         dk(  rd nd=>      d?        ZBd@ ZCdA ZDdB ZE edCg      dD        ZF edEg      dF        ZGdG ZHdH ZIdI ZJdJ ZK edKgddL ejd                         dk(  rd ndMN      dO        ZLdP ZMdQ ZNdR ZOdS ZPdT ZQdU ZRej                  j                  dVdW      dX        ZUej                  j                  dYdZ      d[        ZVej                  j                  dYd\      d]        ZWej                  j                  dVdW      d^        ZXej                  j                  d_d`      da        ZYdb ZZdc Z[dd Z\de Z]df Z^dg Z_dh Z`di Zadj Zbdk Zcdl Zddm Zedn Zfej                  j                  d_d`      do        Zgdp Zhdq Zidr Zjds Zkdt Zlej                  j                  du      dv        Znej                  j                  dwdx      dy        Zodz Zped{        Zqd| Zrd} Zsej                  j                  d~ddgd e	j                  ddg      g      d        Zuej                  j                  dddevg      d        Zwej                  j                  d~ddgd e	j                  ddg      g      d        Zxd Zyd Zzd Z{d Z|d Z}d Z~d Zd Z ed4g5      d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                  j                  du      d        Zd Zd Zd Zd Zy)    N)mock)assert_allclose)check_figures_equalimage_comparison)needs_usetex)HandlerTuple)
rc_context)FontPropertiesc                     t         j                  j                  d      } t         j                  j                  d      }dgdz  dgdz  z   }dgdz  dgdz  z   }t        j                         \  }}t        | |||      D ]  \  }}}}	|j                  ||||	        |j                         \  }
}t        j                  t        ||
            }|j                  |j                         |j                         dd	
       y )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/var/www/html/jupyter_env/lib/python3.12/site-packages/matplotlib/tests/test_legend.pytest_legend_ordereddictr2      s     			A
		AUQY#"FUQY#"FllnGC!!Q7 /1eU


1au
./ 224OGV$$S%9:FIIfmmov{{}  9    c                      t        j                         \  } }|j                  ddg       |j                  ddg       d |j                         D        }d dD        }|j	                  ||d       y )	Nr   r      c              3       K   | ]  }|  y wN ).0lines     r1   	<genexpr>z(test_legend_generator.<locals>.<genexpr>3   s     /t/   c              3       K   | ]  }|  y wr7   r8   )r9   r   s     r1   r;   z(test_legend_generator.<locals>.<genexpr>4   s     2e2r<   )spameggs
upper leftr   )r   r   plot	get_linesr$   )r+   r,   r0   r)   s       r1   test_legend_generatorrD   -   s\    llnGCGGQFOGGQFO//G2!12FIIgv<I0r3   zlegend_auto1.pngT)remove_textc                      t        j                         \  } }t        j                  d      }|j	                  |d|z
  dd       |j	                  ||dz
  dd       |j                  d       y	)
Test automatic legend placementd   2   oy=1r   y=-1bestrA   N)r   r   r   arangerB   r$   )r+   r,   r-   s      r1   test_legend_auto1rP   9   s^     llnGC
		#AGGArAvs%G(GGAq2vs&G)II&Ir3   zlegend_auto2.pngc                      t        j                         \  } }t        j                  d      }|j	                  ||dd      }|j	                  ||ddd   dd      }|j                  |d   |d   gd	d
gd       y)rG   rH   edgem)alignr/   Nr   r   updownrN   rA   )r   r   r   rO   barr$   )r+   r,   r-   b1b2s        r1   test_legend_auto2r[   C   sv     llnGC
		#A	1F#	.B	1TrT7&	4BIIr!ubentVn&I9r3   zlegend_auto3.pngc                      t        j                         \  } }g d}g d}|j                  ||dd       |j                  dd       |j	                  dd       |j                  d	       y
)rG   ?皙?r_   r^   r^   r   ffffff?ra   皙?rb   r   r   o-r:   rL                 ?rN   rA   N)r   r   rB   set_xlimset_ylimr$   )r+   r,   r-   r.   s       r1   test_legend_auto3rh   M   s[     llnGC&A*AGGAq$fG%KKSKKSII&Ir3   c                  b   t        j                  dd      \  } }g }t        |j                  d      D ]  \  }}|j	                  |       |j                  dgddgz  z   t        d      d	|
       |j                  d      }| j                  j                          |j                  |j                         j                  |j                  j                                       t        |d   j                   |d   j                          t        |d   j                   |d   j                          y)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)rX   step
stepfilledr   r   	   r   Legend)binsr   histtyperN   rA   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   Y   s     ||!Z8HCJchh => JB
R
ae%)8bIiiFi#

!!#//0E0E0GH	JJ JqM((*Q-*>*>?JqM((*Q-*>*>?r3   c                     t        j                  dd      \  } }g }t        |j                  d      D ]  \  }}t	        j
                  dddd	      t	        j                  t        j                  d
dgd
d
gdd
gddgddgddgddgddgddgg	      d      t	        j                  ddd
ddd      fD ]  }|j                  |        |j                  ddgddgd       |j                  |      }| j                  j                          |j                  |j!                         j#                  |j$                  j'                                      ! t)        |d   j*                  |d
   j*                         y)z
    Check that the automatic placement handle a rather complex
    case with non rectangular patch. Related to issue #9580.
    r5   )g333333#@g333333@rk   centerrN   )r   r^   皙?皙?C1)xywidthheightfcr   r   r^   re   r_   )r   )r   r   r   ih  rb   C0)r   r   z	A segmentrL   rA   N)r   r   r   rt   mpatchesEllipsePolygonr   arrayWedge	add_patchrB   r$   rx   ry   rz   r{   r|   r}   r~   r   r   )r+   r   r   r,   r   _patchr   s          r1   test_legend_auto5r   o   sv   
 ||!Z8HCJsxx!34 JC
   !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%J* JqM((*Q-*>*>?r3   zlegend_various_labels.pngc                  d   t        j                         } | j                  d      }|j                  t	        j
                  d      dd       |j                  t	        j                  dd      dd       |j                  t	        j
                  ddd      dd	       |j                  dd
       y )Ny      rJ   r   rL   gffffff@u   DéveloppésrU   __nolegend__rN   )	numpointsr   )r   figureadd_subplotrB   r   rO   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_64g9v?)rE   tolc                  L   t        j                         \  } }|j                  t        j                  d      dd       |j                  t        j
                  d      dz  dd       |j                  t        j                  ddd	      d
d       |j                  dd       y )Nr   -or   rL   r   z:xr-      rU   ddiamondrN   F)r   markerfirst)r   r   rB   r   rO   onesr$   r   s     r1   test_labels_firstr      sz     llnGCGGBIIbM4qG)GGBGGBKM4sG+GGBIIb"b!3iG8II&eI,r3   zlegend_multiple_keys.pngc                  ,   t        j                         \  } }|j                  g dd      \  }|j                  g dd      \  }|j                  g dd      \  }|j                  ||f||f|gg dd||ft	        d 	      ||ft	        d d
      i       y )Nr   r5   rj   r   r5   rj   r   z-xrj   r   r   z-d)ztwo keyszpad=0zone keyr   )ndivider   )r   pad)r   handler_map)r   r   rB   r$   r   )r+   r,   p1p2p3s        r1   test_multiple_keysr      s     llnGC
'')T
"CB
'')T
"CB
'')T
"CBIIBx"b2&(H8\$%?8\$A%FH  Ir3   zrgba_alpha.pnggQ?c                      t        j                         \  } }|j                  t        d      d       t        j                  dgd      }|j
                  j                  g d       y )Nr   r   lwLonglabel that will go awayr   rA   r   r   r   r   )r   r   rB   rw   r$   legendPatchset_facecolorr+   r,   r   s      r1   test_alpha_rgbar      sM     llnGCGGE"I!G
**34(
CCOO!!.1r3   zrcparam_alpha.pngc                  .   t        j                         \  } }|j                  t        d      d       t	        j
                  ddi      5  t        j                  dgd	      }|j                  j                  g d
       d d d        y # 1 sw Y   y xY w)Nr   r   r   zlegend.framealphag      ?)rcr   r   rA   r   )	r   r   rB   rw   mplr	   r$   r   r   r   s      r1   test_alpha_rcparamr      sv     llnGCGGE"I!G	/5	6 6jj78hG
 	%%n56 6 6s   6BBz	fancy.pngrb   c                     t        j                  d       t        j                  dgdz  dd       t        j                  t	        j
                  d      t	        j
                  ddd      d	       t        j                  t	        j
                  d      t	        j
                  d      d
d
d       t        j                  ddd
gdddd       y )Nr   r   r   zo--XXrL   r   rU   zXX
XXr   )xerryerrr   r   re   r5   T	My legendr   )r   r   rl   shadowtitler   )r   subplotrB   r    r   rO   errorbarr$   r8   r3   r1   
test_fancyr      s    
 KKHHaS2XuD)KK		"ryyQ38DLL2		"C'JJ=#st;!Er3   
framealphag~jt?c                      t        j                  ddd      } | }t        j                  | |dd       t        j                  d       y )Nr   rH   mylabelr   )r   r   r   )r   )r   r   r   rB   r$   )r-   r.   s     r1   test_framealphar      s9     	AsC A	AHHQr*JJ#r3   zscatter_rc3.pngzscatter_rc1.pngc                     t        j                          t        j                  d      } | j                  t	        j
                  d      t	        j
                  ddd      d       | j                  ddd	gd
       dt        j                  d<   t        j                          t        j                  d      } | j                  t	        j
                  d      t	        j
                  ddd      d       | j                  ddd	gd
       y )Nr   r   r   rU   threerL   r   re   r   r   )r   r   r   r   zlegend.scatterpointsone)	r   r   r   r    r   rO   r$   r   rcParams)r,   s    r1   test_rcr      s     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                     ddg} t        j                  t        |       d      \  }}t        j                  d      }t        ||       D ]  \  }}|j                  |d|z
  dd       |j                  d	|
      }|j                  |       |j                  ||dz
  dd       |j                  d|
      }|j                  |       |j                  d|d        y)zTest expand modeNexpandr   rH   rI   rJ   rK   rL   r@   )r   moderM   right
lower leftr5   )r   r   rl   )	r   r   lenr   rO   r   rB   r$   
add_artist)legend_modesr+   r   r-   r,   r   l1l2s           r1   test_legend_expandr      s     (#L||C-q1HC
		#A\* 8D
263e,YY<dY3
b
1r63f-YY7Y.
b
		lQ	78r3   hatchingdefault)rE   stylec            	         dt         j                  d<   t        j                         \  } }t        j                  ddddd      }|j	                  |       t        j                  dddd	d
d      }|j	                  |       t        j                  dddddd      }|j	                  |       t        j                  dddd	dd
d      }|j	                  |       |j                  g dg dg ddd       |j                  g dg dg dddd       |j                  dd       |j                  dd       |j                  dd       y ) N   ztext.kerning_factor)r   r   333333?xxzPatch
default color
filled)hatchr   )Q?r   z||r   zPatch
explicit color
filled)r   	edgecolorr   )r   皙?FzPatch
default color
unfilled)r   fillr   )r   r   zPatch
explicit color
unfilled)r   r   r   r   )r   g333333?r   )r   r   r   )r^   re   r^   +zPath
default color)r   gQ?g)\(?C2zPath
explicit colorg{Gz皙?r   )handlelengthhandleheight)	r   r   r   	Rectangler   fill_betweenrf   rg   r$   )r+   r,   patchs      r1   test_hatchingr     s4    +,CLL&'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                  2   t        j                         \  } }|j                  t        d            }| j	                  |d      }|j                          | j                  g k(  sJ |j	                  d      }|j                          |j                         J y )Nr   test)r   r   rB   rw   r$   removelegends
get_legend)r+   r,   linesr   s       r1   test_legend_remover   $  sw    llnGCGGE"IE
**UF
#CJJL;;"
))F
CJJL==?"""r3   c                  ,   t        j                         \  } }d}d}g d}g d}|j                  |||d   |d          |j                  |||d   |d          |j                  |||d   |d          |j                  d      }|j	                         D cg c]  }|j                          }}|j                  D 	cg c]  }	|	j                          }
}	|t        t        |            k(  sJ |
t        t        |            k(  sJ y	c c}w c c}	w )
z6Check that the legend handles and labels are reversed.r   )zFirst labelzSecond labelzThird label).,rJ   r   rL   r5   TreverseN)
r   r   rB   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  /  s    llnGC	A	A;FGGGAq'!*F1IG.GGAq'!*F1IG.GGAq'!*F1IG.
))D)
!C+.==?;aQZZ\;M;.1.@.@AallnANAD&!12222T(7"34444 <As   D Dpng)
extensionsc                 0   | j                         }|j                  dgdd       |j                  dgdd       |j                  d	       |j                         }|j                  dgdd       |j                  dgdd       |j                          y
)z3Check that the rendered legend entries are reversedr   rofirstrL   r5   bxsecondTr  N)r   rB   r$   )fig_testfig_refr,   s      r1   test_reverse_legend_displayr  A  s     
			BGGQCWG%GGQCXG&IIdI				BGGQCXG&GGQCWG%IIKr3   c                   N    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zy)TestLegendFunctionc                    t        j                  t        d      d      }t        j                  d      5 }t        j
                          d d d        j                  t        j                         |dg       y # 1 sw Y   0xY w)Nr   hello worldrL   matplotlib.legend.Legendr   rB   rw   r   r   r$   assert_called_withgcaselfr   rq   s      r1   test_legend_no_argsz&TestLegendFunction.test_legend_no_argsQ  s]    r-8ZZ23 	vJJL	!!#'')U]OD	 	s   A::Bc                    t        j                  t        d            }t        j                  d      5 }t        j
                  |dg       d d d        j                  t        j                         |dg       y # 1 sw Y   0xY w)Nr   r  r  r  r!  s      r1   %test_legend_positional_handles_labelsz8TestLegendFunction.test_legend_positional_handles_labelsW  sb    r#ZZ23 	/vJJu}o.	/!!#'')U]OD	/ 	/s   A;;Bc                     t        j                  t        d            }t        j                  t
        d      5  t        j                  |       d d d        y # 1 sw Y   y xY w)Nr   zbut found an Artistmatch)r   rB   rw   pytestraises	TypeErrorr$   )r"  r   s     r1   #test_legend_positional_handles_onlyz6TestLegendFunction.test_legend_positional_handles_only]  sF    r#]]9,AB 	 JJu	 	 	s   AA"c                    t        j                  t        d      d      }t        j                  d      5 }t        j
                  dg       d d d        j                  t        j                         |dg       y # 1 sw Y   0xY w)Nr   r  rL   r  foobarr  r!  s      r1   "test_legend_positional_labels_onlyz5TestLegendFunction.test_legend_positional_labels_onlyd  sb    r-8ZZ23 	#vJJz"	#!!#'')UXJ?	# 	#s   A<<Bc                    t        j                  t        d      d      }t        j                  d      5 }t        j
                  |dgd       d d d        j                  t        j                         |dgd       y # 1 sw Y   2xY w)Nr   r  rL   r  r.  r   rA   r  r!  s      r1   test_legend_three_argsz)TestLegendFunction.test_legend_three_argsj  sk    r-8ZZ23 	7vJJuxjg6	7!!#'')UXJG!L	7 	7s   BB
c                 *   t        j                  t        d      d      }t        j                  d      5 }|dgf|_        t        j                  ddi       d d d        j                  t        j                         gddi       y # 1 sw Y   1xY w)Nr   r  rL   z,matplotlib.legend._get_legend_handles_labels1r5   )r   )	r   rB   rw   r   r   return_valuer$   r  r   )r"  r   handles_labelss      r1   test_legend_handler_mapz*TestLegendFunction.test_legend_handler_mapp  s|    r-8ZZ 5 6 	-9G*/-*@N'JJC8,	- 	))3779+Qx@		- 	-s   #B		Bc                    t        j                         \  }}t        j                  ddd      }|j	                  ||d      \  }|j	                  |d|z  d      \  }|j	                  |d|z  d	      \  }t        j                  d
      5 }|j                  ||g       d d d        j                  |||gd	dg       y # 1 sw Y   !xY w)Nr   r      r-   rL   r5   2xrj   3xr  )r0   	r   r   r   r   rB   r   r   r$   r  )r"  r+   r,   r-   ln1ln2ln3rq   s           r1   test_legend_kwargs_handles_onlyz2TestLegendFunction.test_legend_kwargs_handles_onlyx  s    ,,.RKK1b!wwq!3w'wwq!A#Tw*wwq!A#Tw*ZZ23 	*vIIsCjI)	*!!"sCj4,?	* 	*s   CC
c                 `   t        j                         \  }}t        j                  ddd      }|j	                  ||      \  }|j	                  |d|z        \  }t        j                  d      5 }|j                  ddg       d d d        j                  |||gddg       y # 1 sw Y   !xY w)	Nr   r   r8  r5   r  r-   r9  r)   r;  )r"  r+   r,   r-   r<  r=  rq   s          r1   test_legend_kwargs_labels_onlyz1TestLegendFunction.test_legend_kwargs_labels_only  s    ,,.RKK1b!wwq!}wwq!A#ZZ23 	*vIIc4[I)	*!!"sCj3+>	* 	*s   /B$$B-c                    t        j                         \  }}t        j                  ddt        j                  z  d      }|j                  |t        j                  |      d      \  }|j                  |t        j                  |      d      \  }t        j                  d      5 }|j                  d||f	       d d d        j                  |||fd       y # 1 sw Y   xY w)
Nr   r5      sinrL   cosr  r   r   )r)   r0   )r   r   r   r   pirB   rE  rF  r   r   r$   r  )r"  r+   r,   thlnslncrq   s          r1   !test_legend_kwargs_handles_labelsz4TestLegendFunction.test_legend_kwargs_handles_labels  s    ,,.R[[AbeeGT*wwr266":Uw3wwr266":Uw3ZZ23 	=vIIZ#sI<	= 	!!"sCj*=	= 	=s   'CC$c                    t        j                         \  }}t        j                  ddt        j                  z  d      }|j                  |t        j                  |      d      \  }|j                  |t        j                  |      d      \  }t        j                  t              5 }|j                  ||fd       d d d        t              d	k(  sJ t        |d   j                        j                  d
      sJ y # 1 sw Y   CxY w)Nr   r5   rD  rE  rL   rF  rG  rA  r   MYou have mixed positional and keyword arguments, some input may be discarded.)r   r   r   r   rH  rB   rE  rF  r)  warnsDeprecationWarningr$   r   strmessage
startswith)r"  r+   r,   rI  rJ  rK  records          r1   test_warn_mixed_args_and_kwargsz2TestLegendFunction.test_warn_mixed_args_and_kwargs  s    ,,.R[[AbeeGT*wwr266":Uw3wwr266":Uw3\\,- 	5IIsCjI4	56{a6!9$$%00 	 	5 	5s   +DDc                 R   ddl m}  |d      }|j                         }|j                  g dg dd      \  }|j                  g dg dd      \  }t	        j
                  d	      5 }t        j                          d d d        j                  |||gddg       y # 1 sw Y   !xY w)
Nr   )host_subploto   r   r   r5   DensityrL   )r   rj   r5   Temperaturer  )	mpl_toolkits.axes_grid1rW  twinxrB   r   r   r   r$   r  )r"  rW  hostparr   r   rq   s          r1   test_parasitez TestLegendFunction.test_parasite  s    8C jjlii	9Ii>hhy)=hAZZ23 	vJJL	!!$R9m2LM	 	s   (BB&N)__name__
__module____qualname__r#  r%  r,  r/  r1  r6  r?  rB  rL  rU  r`  r8   r3   r1   r  r  O  s@    EE@MA@?>
Nr3   r  c                   0    e Zd Zd Zd Zd Zd Zd Zd Zy)TestLegendFigureFunctionc                     t        j                         \  }}|j                  t        d            }t	        j
                  d      5 }|j                  |dg       d d d        j                  ||dg|j                         y # 1 sw Y   *xY w)Nr   r  r  bbox_transform	r   r   rB   rw   r   r   r$   r  transFigurer"  r+   r,   r   rq   s        r1   test_legend_handle_labelz1TestLegendFigureFunction.test_legend_handle_label  sz    ,,.Rb	"ZZ23 	/vJJu}o.	/!!#u}o14 	" 	B	/ 	/s   BBc                    t        j                         \  }}|j                  t        d      d      }t	        j
                  d      5 }|j                          d d d        j                  ||dg|j                         y # 1 sw Y   *xY w)Nr   r  rL   r  rg  ri  rk  s        r1   r#  z,TestLegendFigureFunction.test_legend_no_args  sw    ,,.Rb	7ZZ23 	vJJL	!!#u}o14 	" 	B	 	s   	BBc                    t        j                         \  }}|j                  t        d            }t	        j
                  d      5 }|j                  dg       d d d        j                  ||dg|j                         y # 1 sw Y   *xY w)Nr   r  r.  rg  ri  rk  s        r1   test_legend_label_argz.TestLegendFigureFunction.test_legend_label_arg  sx    ,,.Rb	"ZZ23 	#vJJz"	#!!#uxj14 	" 	B	# 	#s   BBc                 z   t        j                         \  }}|j                  t        d            }t	        j
                  t        d      5  |j                  |dgd       d d d        t	        j
                  t        d      5  |j                  |dgdd       d d d        y # 1 sw Y   DxY w# 1 sw Y   y xY w)Nr   z0-2r'  r.  r   leftrA   )r   r   rB   rw   r)  r*  r+  r$   )r"  r+   r,   r   s       r1   test_legend_label_three_argsz5TestLegendFigureFunction.test_legend_label_three_args  s    ,,.Rb	"]]9E2 	3JJuxj'2	3]]9E2 	?JJuxj'vJ>	? 	?	3 	3	? 	?s   B%B1%B.1B:c                    t        j                  dd      \  }}|d   j                  t        d            }|d   j                  t	        j
                  d      dz        }t        j                  d      5 }|j                  dd||f	       d d d        j                  |||fdd|j                  
       y # 1 sw Y   ,xY w)Nr   r5   r   r          @r  r   rG  )r   r)   r0   )r   rh  )r   r   rB   rw   r   rO   r   r   r$   r  rj  )r"  r+   r   r   lines2rq   s         r1   test_legend_kw_argsz,TestLegendFigureFunction.test_legend_kw_args  s    <<1%SAE"I&QRYYr]R/0ZZ23 	PvJJ7:vJO	P!!%*'?? 	" 	,	P 	Ps   6B88Cc                    t        j                  dd      \  }}|d   j                  t        d            }|d   j                  t	        j
                  d      dz        }t        j                  t              5 }|j                  ||fd       d d d        t              dk(  sJ t        |d   j                        j                  d      sJ y # 1 sw Y   CxY w)	Nr   r5   r   r   rt  rG  rA  rN  )r   r   rB   rw   r   rO   r)  rO  rP  r$   r   rQ  rR  rS  )r"  r+   r   r   ru  rT  s         r1   test_warn_args_kwargsz.TestLegendFigureFunction.test_warn_args_kwargs  s    <<1%SAE"I&QRYYr]R/0\\,- 	;JJvzJ:	;6{a6!9$$%00 	 	; 	;s   :CCN)	ra  rb  rc  rl  r#  ro  rr  rv  rx  r8   r3   r1   re  re    s#    BBB?,	r3   re  c                     dD  cg c]  } d| z   	 }} |dD  cg c]  } d| z   	 c} z  }|dD  cg c]  } d| z   	 c} z  }|dD  cg c]  } d| z   	 c} z  }g d}g d}g d	}g d
}||||||||||||g}g dg dg dg dg dg dg dg dg dg dg dg dg}t        |      D ]  \  }}	t        |	       t        j                  dd      \  }
}|j	                  t        d      d       |
j                  d|	z         }|
j                          t        |j                         j                  ||          t        |j                         j                  ||           y c c} w c c} w c c} w c c} w )N)rq  r   r   zupper zlower )lowerr   upperzleft zright )QnX4@Qn;@l@gE@)r|  g Q@r~  lf@)gLNb@r}  r~  r  )r|  r}  gE@r  )      $@     X@     `@     p@)     (u@r       |@r  )  r       @r  )r  r  r       F@)r  r  r  r  )     ؄@r  r  r  )r       q@r       s@)r  r  r  r  )r  r  r  r  )r  r  r  r  TrH   )constrained_layoutdpir   Boo1rL   zoutside rA   )	enumerateprintr   r   rB   rw   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X^CEC	(CDhnDDE	'CDgmDDE	(DEhnEEE8H8H7G8HhhWgh*D
 %'%#&$"&$"'%'E e$ 
#Dd<<4SASr&)jjZ$.j/""$--/77R	"--/77b		#
#7 DDDEs   E!E&E+E0zlegend_stackplot.pnggX9v?)r   c                  "   t        j                         \  } }t        j                  ddd      }d|z  }d|z  dz   }d|z  dz   }|j	                  ||||g d	       |j                  d
       |j                  d       |j                  d       y)z/Test legend for PolyCollection using stackplot.r   r   re   rt  r   g      @r5   )y1y2y3rA  )r   r   )r   F   rN   rA   N)r   r   r   r   	stackplotrf   rg   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BB'9L:KKKKII&Ir3   c                      t        j                         \  } }t        j                         \  }}|j                  t        d      t        d            }|j	                  |d       y )Nrj   foo)r   r   rX   rw   r$   )r+   r,   fig2ax2brss        r1   test_cross_figure_patch_legendr     sF    llnGCID#
&&q58
$CKKUr3   c            
          t        j                         \  } }|j                  t        j                  gt        j                  gdddd      }|j                  |gdg       t        j                         \  } }dD ]a  }d}t        j                  j                  d|      \  }}d	t        j                  j                  |      z  }|j                  |||||d
d       c |j                          |j                  d       y )NrJ   r   rj   )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) 1yy~~a#1		q))


1a5E 	 	1	1 IIKGGDMr3   c                     t        j                         \  } }|j                  ddddd       |j                  dddd	d       |j                          t	        j
                  |g      \  }}t        |      d
k(  sJ t        j                         \  } }|j                  ddddd       |j                  dddd	d       |j                          t	        j
                  |g      \  }}t        |      d
k(  sJ y )Nrd   re   krJ   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                  (   g d} t        d      D ]  }t        j                  |g|g| |          ! t        j                  g dd       t        j                         j                  dd       t        j                         j                  dd       y )	N)r   r   r   rj   )r/   )r  r  r  rN   rA   g      皙@)rw   r   r    r$   r   rf   rg   )r*   r  s     r1   test_not_covering_scatterr  K  so    F1X /QC!F1I./ JJ$&1GGItS!GGItS!r3   z"not_covering_scatter_transform.pngc                  J   t        j                         j                  dd      } t        j                  ddd      }t        j                  ||       t        j                  dgdg| t        j                         j                  z          t        j                  dd	gd
       y )Nir   r      i  r   )	transformr  rX   rN   rA   )mtransformsAffine2D	translater   r   r   rB   r    r   	transDatar$   )offsetr-   s     r1   #test_not_covering_scatter_transformr  W  su     !!#--c26F
Ar4 AHHQNKKrdfswwy/B/B&BCJJu~6*r3   c                  <   ddgddgg} ddgddggd	dgd
dggg}d
dgddggd	dgddggg}t        j                  | dd      }t        j                  |d      }t        j                  |dd	      }t        j                         \  }}|j	                  |       |j	                  |       |j	                  |       |j                  |||gg d      }|j                  \  }	}
}t        |||f|	|
|f      D ]'  \  }}|j                         d   |j                  k(  r'J  y )N)r   r   )r   r   )r   333333?)r   r   gffffff?r   r   r   r   r  r_   z--rj   )
linestylesr   z-.)r  :)line1line2zline 3r   )
mcollectionsLineCollectionr   r   add_collectionr$   r  r   get_linestyles_dash_pattern)lines1ru  lines3lc1lc2lc3r+   r,   r   h1h2h3ohlhs                 r1   !test_linecollection_scaled_dashesr  c  sA    8X"67FRy2r(#r2hR%9:FRy2r(#r2hR%9:F

%
%f!
DC

%
%f
>C

%
%f
DCllnGCccc
))S#sO%A
BC##JBBsCoB|4 :B  "1%)9)9999:r3   c                      t        j                         \  } }|j                  t        d      d       |j	                  d       y)z(Test legend handler with numpoints <= 1.r   r   rL   r   r   N)r   r   rB   rw   r$   r   s     r1   test_handler_numpointsr  w  s5     llnGCGGE!HFG#IIIr3   c                  J   t        j                         \  } }|j                  dgd       |j                  dddd       t	        j
                  t              5 }|j                          ddd       t              dk(  sJ t        j                         \  }}|j                  t        j                  j                  ddd	             t        j                         5  t        j                  d
       |j!                          ddd       y# 1 sw Y   xY w# 1 sw Y   yxY w)z2Test that Text artists with labels raise a warningr   	mock datarL   textr   )r-   r.   r  r   Nr   )r   r   error)r   r   rB   r  r)  rO  UserWarningr$   r   
pcolormeshr   r   uniformwarningscatch_warningssimplefilterr!   )r+   r,   rT  fs       r1   test_text_nohandler_warningr    s    llnGCGGQC{G#GGa1gG.	k	" f
		v;! LLNEArMM"))##Aq(34		 	 	" 'g&
$$&' ' ' 's   D&DDD"c                  \    t        j                  g g d       t        j                          y)z1Test legend when bar chart is empty with a label.r   rL   N)r   rX   r$   r8   r3   r1    test_empty_bar_chart_with_legendr    s     GGB&!JJLr3   zshadow_argument_types.pngmpl20gy&1?)rE   r   r   c            
      z   t        j                         \  } }|j                  g dd       |j                  dd      |j                  dd      |j                  d	d
dd      |j                  dddd      |j                  dddd      f}|D ]  }|j	                  |        |j                  d       y )Nr   r   rL   r@   Tr   r   upper rightFr   r  r_   )r/   r  center right)r_   r   r   )r/   oyr   ztab:cyanr   )r/   oxlower rightrA   )r   r   rB   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                      t        j                         \  } }|j                  g dd       t        j                  t
        d      5  |j                  dd       d d d        y # 1 sw Y   y xY w)	Nr   r   rL   zdict or boolr'  r@   aardvarkr  )r   r   rB   r)  r*  
ValueErrorr$   r   s     r1   test_shadow_invalid_argumentr    sV     llnGCGGIVG$	z	8 7
		l:	67 7 7s   A%%A.c                      t        j                         \  } }|j                  t        d      d       |j	                  dd      }|j                         j                         dk(  sJ y )NrH   r   rL   Tw)r   r  r   )r   r   rB   rw   r$   	get_frame	get_alphar   s      r1   test_shadow_framealphar
    sV     llnGCGGE#JfG%
))43)
/C==?$$&!+++r3   c                     t        j                         \  } }|j                  t        d      d       |j	                         }|j                         j                         dk(  sJ |j                         j                         rJ y )Nr   r  rL    )r   r   rB   rw   r$   	get_titler  get_visibler   s      r1   test_legend_title_emptyr    sj     llnGCGGE"I[G)
))+C==?##%+++}}**,,,,r3   c                      t        j                  d      \  } }|j                  t        d      d       |j	                         }|j                  | j                  j                               j                  }t        j                  d      \  } }|j                  t        d      d       |j	                         }|j                  | j                  j                               j                  }t        j                  |dz  d      |k(  sJ y )	NrH   r  r   AardvarkrL      r5   r_   )r   r   rB   rw   r$   r{   rx   get_rendererx0r)  approx)r+   r,   r   x01x02s        r1    test_legend_proper_window_extentr    s    lls#GCGGE"IZG(
))+C




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

 7 7 9
:
=
=C==Q$+++r3   c                  "   t        j                  d      \  } }|j                  t        d      d       |j	                         }| j	                         }| j
                  j                          |j                          |j                          y )NrH   r  r   r  rL   )r   r   rB   rw   r$   rx   ry   r{   )r+   r,   r   leg2s       r1   "test_window_extent_cached_rendererr    sd    lls#GCGGE"IZG(
))+C::<DJJOOr3   c                  j   t        j                  t        d      d       t        j                  t
              5  t        j                  ddddd       d d d        t        j                  dt        dd      	      } | j                         j                         dk(  sJ t        j                  d
dd      \  }}|j                  }|d   j                  t        d      d       |d   j                  dd      }|j                         j                         dk(  sJ |d   j                  t        d      d       |d   j                  dddd	      }|j                         j                         dk(  sJ |d
   j                  t        d      d       d t        j                  d<   |d
   j                  dddi	      }|j                         j                         t        j                  d   k(  sJ |d   j                  t        d      d       |d   j                  d      }|j                         j                         t        j                  d   k(  sJ |d   j                  t        d      d       dt        j                  d<   |d   j                  dddi	      }|j                         j                         dk(  sJ |d   j                  t        d      d       |d   j                  d      }|j                         j                         dk(  sJ y # 1 sw Y   xY w)Nr   r  rL   r     serif)familysize)r   title_fontsizetitle_fontproperties)r   r#  r5   rj   )r   r   )rm   r   )r   r"  r   zlegend.title_fontsizer   z	font.sizer   r   r   r   )r   rB   rw   r)  r*  r  r$   r
   r  get_sizer   rt   get_fontsizer   r   )	r   r+   axesleg0leg1r  leg3leg4leg5s	            r1   #test_legend_title_fontprop_fontsizer-    s   HHU2Yk*	z	" I

B3:B(G	I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I Is   L((L2	alignment)r   rq  r   c                     t        j                         \  }}|j                  t        d      d       |j	                  d|       }|j                         d   j                  | k(  sJ |j                         | k(  sJ y )Nr   r   rL   r  )r   r.  r   )r   r   rB   rw   r$   get_childrenrT   get_alignmentr.  r+   r,   r   s       r1   test_legend_alignmentr3    sp    llnGCGGE"IVG$
))*	)
:Ca &&)333)+++r3   r   r   c                    t        j                         \  }}|j                  t        d      d       |j	                         }|j                  |        |j                         t        j                  j                  |    k(  sJ y )Nr   r   rL   )
r   r   rB   rw   r$   set_loc_get_locr  rq   codesr   r+   r,   r   s       r1   test_ax_legend_set_locr9    s_    llnGCGGE"IVG$
))+CKK<<>W^^11#6666r3   )zoutside rightr   c                 X   t        j                         \  }}|j                  t        d      d       |j	                         }|j                  |        | j                  d      r| j                         d   n| } |j                         t        j                  j                  |    k(  sJ y )Nr   r   rL   outsider   )r   r   rB   rw   r$   r5  rS  splitr6  r  rq   r7  r8  s       r1   test_fig_legend_set_locr=    s{    llnGCGGE"IVG$
**,CKKNN95#))+a.3C<<>W^^11#6666r3   c                    t        j                         \  }}|j                  t        d      d       |j	                         }|j                  |        |j                         d   j                  | k(  sJ |j                         | k(  sJ y )Nr   r   rL   r   )	r   r   rB   rw   r$   set_alignmentr0  rT   r1  r2  s       r1   test_legend_set_alignmentr@  (  sw    llnGCGGE"IVG$
))+Ci a &&)333)+++r3   r/   )r  r  )r   r   r   c                 N   t        j                         \  }}|j                  t        j                  d      t        j                  d      dz  d       |j                  t        j                  d      t        j                  d      dz  d       |j                  t        j                  d      t        j                  d      dz  d       |j                  | 	      }|j                         D ]2  }t        j                  j                  |j                         |       r2J  y )
Nr   r   #1rL   r5   #2rj   #3
labelcolor)r   r   rB   r   rO   r$   r  r   r*   
same_color	get_colorr/   r+   r,   r   r  s        r1   test_legend_labelcolor_singlerJ  2  s     llnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7
))u)
%C >zz$$T^^%5u===>r3   c                  p   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  d       |j                  t        j                  d      t        j                  d      dz  d       |j                  t        j                  d      t        j                  d      dz  d       |j                  g d	
      }t        |j                         g d	      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   rB  rL   r5   rC  rj   rD  r   r   r   rE  r   r   rB   r   rO   r$   r   r  r   r*   rG  rH  r+   r,   r   r  r/   s        r1   test_legend_labelcolor_listrO  ?  s    llnGCGGBIIbM299R=?$G7GGBIIbM299R=?$G7GGBIIbM299R=?$G7
)))
/C3==?O< >ezz$$T^^%5u===>r3   c                  r   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       |j                  d      }t        |j                         g d      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   rB  r   r   r/   r5   rC  r   rj   rD  r   	linecolorrE  rL  rM  rN  s        r1    test_legend_labelcolor_linecolorrS  K  s    llnGCGGBIIbM299R=?$cGBGGBIIbM299R=?$cGBGGBIIbM299R=?$cGB
)){)
+C3==?O< >ezz$$T^^%5u===>r3   c                  r   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       |j                  d      }t        |j                         g d      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   rB  r   r   r5   rC  r   rj   rD  r   rR  rE  rL  r   r   r    r   rO   r$   r   r  r   r*   rG  rH  rN  s        r1   /test_legend_pathcollection_labelcolor_linecolorrV  W  s    llnGCJJryy}biimAoTSJAJJryy}biimAoTSJAJJryy}biimAoTSJA
)){)
+C3==?O< >ezz$$T^^%5u===>r3   c                     t        j                         \  } }t        j                  g ddz        }|j	                  t        j
                  d      t        j
                  d      d|       |j                  d      }|j                         \  }t        j                  j                  |j                         d      sJ y )	Nr   r   r   r   rS   r5   r   rB  r   rR  rE  black)r   r   r   r   r    rO   r$   r  r   r*   rG  rH  )r+   r,   r*   r   r  s        r1   8test_legend_pathcollection_labelcolor_linecolor_iterablerZ  c  s     llnGCXX/!34FJJryy}biim46JB
)){)
+CMMOED::  !17;;;r3   c                  v   t        j                         \  } }|j                  t        j                  d      t        j                  d      t        j                  d      d       |j                  d      }|j                         \  }t        j                  j                  |j                         d      sJ y )Nr   rB  )r   r   rR  rE  rY  )r   r   r    r   rO   r$   r  r   r*   rG  rH  )r+   r,   r   r  s       r1   4test_legend_pathcollection_labelcolor_linecolor_cmapr\  o  s}     llnGCJJryy}biimryy}DJI
)){)
+CMMOED::  !17;;;r3   c                  r   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       |j                  d      }t        |j                         g d      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   rB  r   r   markeredgecolorr5   rC  r   rj   rD  r   r_  rE  rL  rM  rN  s        r1   &test_legend_labelcolor_markeredgecolorr`  z      llnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL
))0)
1C3==?O< >ezz$$T^^%5u===>r3   c                  r   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       |j                  d      }t        |j                         g d      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   rB  r   r   r   r5   rC  r   rj   rD  r   r_  rE  rL  rU  rN  s        r1   5test_legend_pathcollection_labelcolor_markeredgecolorrd        llnGCJJryy}biimAoTSJIJJryy}biimAoTSJIJJryy}biimAoTSJI
))0)
1C3==?O< >ezz$$T^^%5u===>r3   c                     t        j                         \  } }t        j                  g ddz        }|j	                  t        j
                  d      t        j
                  d      d|       |j                  d      }t        |j                         dg      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )	NrX  r5   r   rB  rc  r_  rE  r  r   r   r   r   r    rO   r$   r   r  r   r*   rG  rH  r+   r,   r*   r   r  r/   s         r1   >test_legend_pathcollection_labelcolor_markeredgecolor_iterableri         llnGCXX/!34FJJryy}biim46JJ
))0)
1C3==?SE2 >ezz$$T^^%5u===>r3   c                     t        j                         \  } }t        j                  j	                  t
        j                  j                  d            }|j                  t        j                  d      t        j                  d      dt        j                  d      |d       |j                  d      }t        |j                         dg      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   rB  Reds)r   r   r   cmapr_  rE  r  r   r   r   cmviridisr   r   r  r    rO   r$   r   r  r*   rG  rH  )r+   r,   r  r   r  r/   s         r1   :test_legend_pathcollection_labelcolor_markeredgecolor_cmaprq    s     llnGC		r 23JJJ
		"
		"
))B-   ))0)
1C3==?SE2 >ezz$$T^^%5u===>r3   c                  r   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       |j                  d      }t        |j                         g d      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   rB  r   r   markerfacecolorr5   rC  r   rj   rD  r   rt  rE  rL  rM  rN  s        r1   &test_legend_labelcolor_markerfacecolorru    ra  r3   c                  r   t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       |j                  d      }t        |j                         g d      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   r   rB  r   r   r  r5   rC  r   rj   rD  r   rt  rE  rL  rU  rN  s        r1   5test_legend_pathcollection_labelcolor_markerfacecolorrx    re  r3   c                     t        j                         \  } }t        j                  g ddz        }|j	                  t        j
                  d      t        j
                  d      d|       |j                  d      }t        |j                         dg      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )	NrX  r5   r   rB  rw  rt  rE  r  rg  rh  s         r1   >test_legend_pathcollection_labelcolor_markerfacecolor_iterablerz    rj  r3   c                     t        j                         \  } }t        j                  j	                  t
        j                  j                  d            }|j                  t        j                  d      t        j                  d      d|       |j                  d      }t        |j                         dg      D ]5  \  }}t        j                  j                  |j                         |      r5J  y )Nr   rB  r   rt  rE  r  rn  rh  s         r1   8test_legend_pathcollection_labelcolor_markfacecolor_cmapr|    s     llnGCVV^^BIINN2./FJJ
		"
		"
	   ))0)
1C3==?SE2 >ezz$$T^^%5u===>r3   c                 p   t        j                         \  }}|j                  t        j                  d      t        j                  d      dz  d       |j                  t        j                  d      t        j                  d      dz  d       |j                  t        j                  d      t        j                  d      dz  d       | t
        j                  d	<   |j                         }|j                         D ]2  }t
        j                  j                  |j                         |       r2J  y )
Nr   r   rB  rL   r5   rC  rj   rD  legend.labelcolor)r   r   rB   r   rO   r   r   r$   r  r*   rG  rH  rI  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                     t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       dt
        j                  d<   |j                         }t        |j                         g d      D ]5  \  }}t
        j                  j                  |j                         |      r5J  y )Nr   r   rB  r   rQ  r5   rC  r   rj   rD  r   rR  r~  rL  r   r   rB   r   rO   r   r   r$   r   r  r*   rG  rH  rN  s        r1   (test_legend_labelcolor_rcparam_linecolorr    s    llnGCGGBIIbM299R=?$cGBGGBIIbM299R=?$cGBGGBIIbM299R=?$cGB(3CLL$%
))+C3==?O< >ezz$$T^^%5u===>r3   c                     t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       dt
        j                  d<   |j                         }t        |j                         g d      D ]5  \  }}t
        j                  j                  |j                         |      r5J  y )Nr   r   rB  r   r^  r5   rC  r   rj   rD  r   r_  r~  rL  r  rN  s        r1   .test_legend_labelcolor_rcparam_markeredgecolorr        llnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL(9CLL$%
))+C3==?O< >ezz$$T^^%5u===>r3   c                     t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       dt
        j                  d<   |j                         }t        |j                         g d      D ]5  \  }}t
        j                  j                  |j                         |      r5J  y )Nr   r   rB  r   r^  r5   rC  r   rj   rD  r   mecr~  rL  r  rN  s        r1   4test_legend_labelcolor_rcparam_markeredgecolor_shortr        llnGCGGBIIbM299R=?$GLGGBIIbM299R=?$GLGGBIIbM299R=?$GL(-CLL$%
))+C3==?O< >ezz$$T^^%5u===>r3   c                     t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       dt
        j                  d<   |j                         }t        |j                         g d      D ]5  \  }}t
        j                  j                  |j                         |      r5J  y )Nr   r   rB  r   rs  r5   rC  r   rj   rD  r   rt  r~  rL  r  rN  s        r1   .test_legend_labelcolor_rcparam_markerfacecolorr    r  r3   c                     t        j                         \  } }|j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      dz  dd       |j                  t        j                  d      t        j                  d      d	z  d
d       dt
        j                  d<   |j                         }t        |j                         g d      D ]5  \  }}t
        j                  j                  |j                         |      r5J  y )Nr   r   rB  r   rs  r5   rC  r   rj   rD  r   mfcr~  rL  r  rN  s        r1   4test_legend_labelcolor_rcparam_markerfacecolor_shortr  (  r  r3   z4ignore:No artists with labels found to put in legendc                      t        j                         } | j                         rJ | j                  d       | j                         sJ | j                  d       | j                         rJ y )NTF)r   r$   get_draggableset_draggabler$   s    r1   test_get_set_draggabler  5  sb    ZZ\F##%%%
!!!
##%%%%r3   	draggable)TFc                     t        j                         \  }}|j                  t        d      d       |j	                  |       }|j                         | u sJ y )Nr   shabnamsrL   )r  )r   r   rB   rw   r$   r  )r  r+   r,   r   s       r1   test_legend_draggabler  ?  sL    llnGCGGE"IZG(
))i)
(C)+++r3   c                  ^   t        j                  g dddd      \  } }}t        j                         }|j                  D ]  }|j	                  d        j                         d d |d   j                         d d k(  sJ |j                         d d |d   j                         d d k(  sJ y )	Nr   g      ?datar  )r  r   r/   re   rU   r   )r   rv   r$   r  	set_alphaget_facecolorget_edgecolor)r-   r  hhr$   r  s        r1   test_alpha_handlesr  G  s    xx	V5IHAq"ZZ\F## 
Scr"be&9&9&;CR&@@@@cr"be&9&9&;CR&@@@@r3   c                 D   dt         j                  d<   dt         j                  d<   dt         j                  d<   t        j                         \  }}|j	                  ddd	       |j                  d
       |j                  j                          d| j                  vsJ y )Nr  zfont.familyzComputer Modernz
font.serifTztext.usetexr   inputrL   r   r$  z Font family ['serif'] not found.)	r   r   r   r   rB   r$   rx   ry   r  )caplogr+   r,   s      r1   test_usetex_no_warnr  P  s{    ")CLL!2CLL"&CLLllnGCGGAqG IIKI JJOO-V[[@@@r3   c                 
   t        j                  dd      | j                  t        dfd       t	        j
                         \  }}|j                  j                          g d}g d}|j                  ||dd	
       t        ddi      5  |j                         }d d d        t        j                  t        d      5 }|j                         d d d        t              dk(  sJ y # 1 sw Y   OxY w# 1 sw Y   &xY w)Nr         ?rn   perf_counterc                      t               S r7   nextcounters   r1   <lambda>z-test_warn_big_data_best_loc.<locals>.<lambda>a      d7m r3   r]   r`   rc   r:   rL   z
legend.locrN   zGCreating legend with loc="best" can be slow with large amounts of data.r'  r5   )	itertoolscountsetattrtimer   r   rx   ry   rB   r	   r$   r)  rO  r  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GGAq$fG%	\6*	+ 	k)
*  -4  w<1    s   C-C9-C69Dc                 H   t        j                  dd      | j                  t        dfd       t	        j
                         \  }}|j                  j                          g d}g d}|j                  ||dd	
       |j                  d      }|j                  |       y )Nr   r  r  r  c                      t               S r7   r  r  s   r1   r  z:test_no_warn_big_data_when_loc_specified.<locals>.<lambda>y  r  r3   r]   r`   rc   r:   rL   rN   )r  r  r  r  r   r   rx   ry   rB   r$   r  )r  r+   r,   r-   r.   r$   r  s         @r1   (test_no_warn_big_data_when_loc_specifiedr  v  s}    ooac*Gn.CDllnGCJJOO 	'A*AGGAq$fG%YYvFOOFr3   label_arraylowhigh)r  r  c                 
   g d}ddgddgddgg}t        j                         \  }}|j                  |||        |j                         }|j	                         D cg c]  }|j                          }}|dd	gk(  sJ y c c}w )
Nr   r   r5   r   r   rp   rL   r  r  )r   r   rB   r$   r  r  )r  r-   r.   r+   r,   r   entrylegend_textss           r1   'test_plot_multiple_input_multiple_labelr    s     	A
Q
Q
Q	A llnGCGGAqG$
))+C25--/BENN$BLBE6?*** Cs   B r   r   r   c                     g d}ddgddgddgg}t        j                         \  }}|j                  |||        |j                         }|j	                         D cg c]  }|j                          }}|t        |       gdz  k(  sJ y c c}w )Nr   r   r5   r   r   rp   rL   )r   r   rB   r$   r  r  rQ  )r   r-   r.   r+   r,   r   r  r  s           r1   %test_plot_multiple_input_single_labelr    s     	A
Q
Q
Q	A llnGCGGAqG
))+C25--/BENN$BLBCJ<!++++ Cs   Bc                    g d}g d}t        j                         \  }}t        j                  t        j
                  d      5  |j                  |||        d d d        |j                         }t        |j                               dk(  sJ |j                         d   j                         t        |       k(  sJ y # 1 sw Y   gxY w)Nr   )r5   r   r   z$Passing label as a length 2 sequencer'  rL   r   r   )r   r   r)  rO  r   MatplotlibDeprecationWarningrB   r$   r   r  r  rQ  )r  r-   r.   r+   r,   r   s         r1   %test_plot_single_input_multiple_labelr    s     	AAllnGC	c66B
D )
1K() ))+Cs}}1$$$==?1&&(C,<<<<) )s   C  C	c                      t        j                         \  } }|j                  dgdggdg      \  }|j                         dk(  sJ y )Nr   r   ArL   )r   r   rB   	get_label)r+   r,   r:   s      r1   !test_plot_single_input_list_labelr    sD    llnGCGGaS1#JseG,ED>>s"""r3   c                      t        j                  t              5  g d} ddgddgddgg}g d}t        j                         \  }}|j                  | ||       d d d        y # 1 sw Y   y xY w)	Nr   r   r5   r   r   rp   )r  r  mediumrL   )r)  r*  r  r   r   rB   )r-   r.   r   r+   r,   s        r1   3test_plot_multiple_label_incorrect_length_exceptionr    sn     
z	" #VVV *,,.R
1E"# # #s   ?A""A+c                      t        j                         \  } }|j                  g dg dg dddd       |j                          y )NrY  r   r   r   faceFill)r  r   r   )r   r   r   r$   r   s     r1   test_legend_face_edgecolorr    s9    llnGCOOIy)!V6  CIIKr3   c                      t        j                         \  } }|j                  ddgddgd       |j                         }|j                  |u sJ |j                         d   j                  |u sJ y )Nr   r5   rj   r   r:   rL   r   )r   r   rB   r$   r'  r  r   s      r1   test_legend_text_axesr    se    llnGCGGQFQF&G)
))+C88r>>==?1""b(((r3   c                  (   t        j                         \  } }|j                  ddgddgd       t        j                  dgdgd      g}|j                  |dgd      }|d   j                         |j                  d   j                         k(  sJ y )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                      t        j                         j                         } | j                         }|j	                  ddgddgd       | j                         }|j                  d      | u sJ y )Nr   r   r:   rL   F)root)r   r   
subfiguresr   rB   r$   
get_figure)subfigr,   r   s      r1   test_subfigure_legendr    s`    ZZ\$$&F		BGGQFQF&G)
--/C>>u>%///r3   c                  ~   t        j                  ddgddgdd      } t        j                         j                         d   }|j	                  d       |j                         d d t        | j                         d   d d       k(  sJ |j                         d d t        | j                         d   d d       k(  sJ y )	Nr   r   r5   rj   z#123456r   )r/   r   r   )r   r   r$   get_patchesr  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            	         g d} t        j                         \  }}| D cg c]  }t        j                  dgdgd|       }}g d}|D cg c]  }|j	                          }}|j                  ||      }|j                         D cg c]  }|j	                          }	}|j                         D 
cg c]  }
|
j                          }}
||	cxk(  r| k(  sJ  J ||k(  sJ y c c}w c c}w c c}w c c}
w )N)r   *r  r   None)lsr  )r  rX   xyzzy)	r   r   r  r  r  r$   rC   r  r  )_markersr+   r,   markr   r)   r:   r	  r$   new_markersr  
new_labelss               r1   test_legend_markers_from_line2dr    s    HllnGC!# ]]A3t< #E #$F-23Tt 3G3YYuf%F171A1A1CD4??$DKD.4.>.>.@Ad$--/AJAk-X-----Z# 4 EAs   "C%C*	C/4C4c                 \    g d}d}| j                  ||       |j                  ||       y )N)r   r   r   r   er  rj   )ncol)rl   r  )r  r  stringsrl   s       r1   test_ncol_ncolsr  	  s.     -GEOOG%O(NN7%N(r3   c                     t        j                         \  } }t        j                  t        d      5  |j                  ddg       d d d        t        j                  t        d      5  |j                  ddg       d d d        t        j                  t        d      5  |j                  d	dg       d d d        y # 1 sw Y   zxY w# 1 sw Y   NxY w# 1 sw Y   y xY w)
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'\))r  zgo bluer   r   r)  r*  r  r$   r   s     r1    test_loc_invalid_tuple_exceptionr    s     llnGC	z +C 
E 5
		g{m	45 
z +T 
V E
		-{m	DE 
z +Q 
S @
		(+	?@ @5 5E E@ @s#   C+C#CC
CC"c                      t        j                         \  } }|j                  ddg       |j                  ddg       y )N)r  }?5^I?r  r  )r   r5   r   r   r$   r   s     r1   test_loc_valid_tupler  #  s5    llnGCII.+I7II&+I/r3   c                      t        j                         \  } }|j                  ddgdg       |j                  ddgdg       y )Nr  r  r  r  r   r5   r  r   s     r1   test_loc_valid_listr  )  s=    llnGCII5%.+I7II1a&+I/r3   c                      t        j                         \  } }t        j                  t        d      5  |j                  g ddg       d d d        y # 1 sw Y   y xY w)NzOloc must be string, coordinate tuple, or an integer 0-10, not \[1.1, 2.2, 3.3\]r'  )r   r  gffffff
@r  r  r  r   s     r1   test_loc_invalid_list_exceptionr  /  sM    llnGC	z +L 
N =
		o{m	<= = =   AAc                      t        j                         \  } }t        j                  t        d      5  |j                  ddidg       d d d        y # 1 sw Y   y xY w)NzKloc must be string, coordinate tuple, or an integer 0-10, not {'not': True}r'  notTr  r  r  r   s     r1   test_loc_invalid_typer   6  sQ    llnGC	z +F 
H ;
		udm[M	:; ; ;r  c                     t        j                         \  } }|j                  ddg       |j                  ddg       |j                  ddg       |j                  ddg       t        j                  t
        d      5  |j                  d	dg       d d d        t        j                  t
        d
      5  |j                  ddg       d d d        y # 1 sw Y   BxY w# 1 sw Y   y xY w)Nr   r  r  r   r   r   z@loc must be string, coordinate tuple, or an integer 0-10, not 11r'  r8  z@loc must be string, coordinate tuple, or an integer 0-10, not -1rU   r   r   r$   r)  r*  r  r   s     r1   !test_loc_validation_numeric_valuer  =  s    llnGCII![MI*II![MI*II![MI*II"k]I+	z +; 
= 0
		b+	/0 
z +; 
= 0
		b+	/0 0	0 00 0s   C;C%C"%C.c                     t        j                         \  } }dg}|j                  d|       |j                  d|       |j                  d|       |j                  d|       |j                  d|       |j                  d|       |j                  d|       |j                  d|       |j                  d	|       |j                  d
|       |j                  d|       |j                  d|       t        j                  t
        d      5  |j                  d|       d d d        y # 1 sw Y   y xY w)Nr  rN   r  r  r@   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_valuer  L  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	-. . .s   D77E c                     t        j                  t        d            \  } t        j                  t        d            \  }t        j                  t
        d      5  t        j                  | |gg d      }t        |j                        dk(  sJ t        |j                               dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   znumber of handles and labelsr'  pl1pl2pl3r0   r)   r5   )
r   rB   rw   r)  rO  r  r$   r   r  r  r	  r
  r$   s      r1   !test_legend_handle_label_mismatchr  _  s    88E"IDC88E"IDC	k)G	H ,S#J7LM6(()Q...6##%&!+++, , ,s   AB::Cc                  N   t        j                  t        d            \  } t        j                  t        d            \  }t        j                  t	        | |g      t	        g d            }t        |j                        dk(  sJ t        |j                               dk(  sJ y )Nr   r  r  r5   )r   rB   rw   r$   iterr   r  r  r  s      r1   (test_legend_handle_label_mismatch_no_lenr  h  s    88E"IDC88E"IDCZZc3Z 0#$9:<Fv$$%***v!"a'''r3   c                      t        j                  g d       t        j                  t        d      5  t        j
                          d d d        y # 1 sw Y   y xY w)Nr   zNo artists with labels foundr'  )r   rB   r)  r*  r  r$   r8   r3   r1   test_legend_nolabels_warningr  q  s;    HHY	{*H	I 

  s   AAc                      t        j                  g d       t        j                          t        j                         j	                         J y )Nr   )r   rB   r$   r   r   r8   r3   r1   test_legend_nolabels_drawr  w  s2    HHYJJL779!---r3   c            	      6   g d} g d}g d}g }t        j                  dd      \  }}t        |j                  d      D ]  \  }}|j	                  | ||dd	d
       |j                  dd       |j                  dd       |j                  |      }|j                  j                          |j                  |j                         j                  |j                  j                                       t        |d   j                   |d   j                          y )Nr   )r   r   r   )r   r   r   r5   r   r   rk   rN   r   grayr   zShaded Area)r/   r  r   r   r   rU   r   rA   r   )r   r   r   rt   r   rf   rg   r$   rx   ry   rz   r{   r|   r}   r~   r   r   )	r-   r  r  r   r+   r   r,   r   r   s	            r1   test_legend_loc_polycollectionr  ~  s     	A	B	BJ||!W5HCsxx!78 JC
2rs-P
Aq
BiiCi 

!!#//0E0E0GH	JJ JqM((*Q-*>*>?r3   c                  
   t        j                  dd      \  } }g }t        |j                  d      D ]  \  }}ddg}ddg}|j	                  ||d       |j                  ddd	d
       |j                  |      }| j                  j                          |j                  |j                         j                  |j                  j                                       t        |d   j                  |d   j                         y )Nr5   r  rk   r  r   z	plot namerL   r  zsome text blahblahtop)verticalalignmentrA   r   )r   r   r   rt   rB   r  r$   rx   ry   rz   r{   r|   r}   r~   r   r   )r+   r   r   r,   r   r-   r.   r   s           r1   test_legend_textr    s     ||!W5HCJsxx!78 JCFF
1K(
Q,FiiCi 

!!#//0E0E0GH	JJ JqM((*Q-*>*>?r3   c                     t        j                         \  } }|j                  g dd       |j                  dd       |j	                  d       t
        j                  j                  | d	| j                  
      5 }| j                  t        j                                d d d        j                          y # 1 sw Y   xY w)Nr   LinerL   r   )r   r   )r   r   rA   _get_renderer)wraps)r   r   rB   annotater$   r   r   objectr!  savefigioBytesIOassert_not_called)r+   r,   mocked_get_renderers      r1   test_legend_annotater*    s    llnGCGGIVG$KKKII!I			(9(9 
 
; ">QBJJL!"
 ))+" "s   >$B;;Cc                     t         j                  j                  d       t         j                  j                  d      } t        j                  dd      \  }}g d}|d   j                  | d|	      }|d
   D cg c]  }|j                          c}|k(  sJ |d   j                         \  }}||k(  sJ t        d |D              sJ |d   j                  | |d      }|d   D cg c]  }|j                          c}|k(  sJ |d   j                         \  }}||k(  sJ t        d |D              sJ t        j                  t        d      5  |d   j                  | |d d       }	d d d        |d   j                  | d      }
|
d   d   j                         dk(  sJ t        d |
d   dd  D              sJ y c c}w c c}w # 1 sw Y   _xY w)Ni!N,)r   r   r   r   )nrowsrl   )box Azbox Bzbox Czbox Dr   T)patch_artistr   boxesc              3   d   K   | ](  }t        |t        j                  j                         * y wr7   )
isinstancer   patches	PathPatchr9   r  s     r1   r;   z-test_boxplot_legend_labels.<locals>.<genexpr>  s!     Ez!S[[223E   .0F)r   showboxmediansc              3   d   K   | ](  }t        |t        j                  j                         * y wr7   )r1  r   r   r  r4  s     r1   r;   z-test_boxplot_legend_labels.<locals>.<genexpr>  s!     @1z!SYY--.@r5  z values must have same the lengthr'  r5   rU   rL   rj   r-  c              3   Z   K   | ]#  }|j                         j                  d        % yw)_N)r  rS  )r9   r-   s     r1   r;   z-test_boxplot_legend_labels.<locals>.<genexpr>  s!     Iq{{}'',Is   )+)r   r   seedr   r   boxplotr  r!   allr)  r*  r  )r  r+   r   legend_labelsbp1r  r0   r)   bp2bp3bp4s              r1   test_boxplot_legend_labelsrC    s   IINN899G$D||!1-HC8M a&..D.
FC#&w<0aAKKM0MAAA!f668OGV]"""EWEEEE a&..]E.
BC#&y>2aAKKM2mCCC!f668OGV]"""@@@@@ 
z)K	L =!fnnTs);n<= a&..W.
-Cy>!&&(G333Ic)nQR6HIIII) 1 3= =s   ;G)GGG)r"   r&  r  platformr  unittestr   r  numpyr   numpy.testingr   r)  matplotlib.testing.decoratorsr   r   matplotlib.testing._markersr   matplotlib.pyplotpyplotr   
matplotlibr   matplotlib.patchesr2  r   matplotlib.transforms
transformsr  matplotlib.collectionsr  matplotlib.linesr   r  matplotlib.legend_handlerr   matplotlib.legendr$   r  r	   matplotlib.font_managerr
   r2   rD   rP   r[   rh   r   r   r   machiner   r   r   r   r   r   r   r   r   r   r  r  r  re  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r-  r  parametrizer3  r9  r=  r@  rJ  rO  rS  rV  rZ  r\  r`  rd  ri  rq  ru  rx  rz  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  r  r  r  r  r   r  r  r  r  r  r  r  r  r*  rC  r8   r3   r1   <module>rY     s    	       )  O 4   % + - ! 2 # ! 29$	1 %&D9 : %&D9: :: %&' (@,@@ ./TB' C' ,-4+8++-9auF-F- -.D+8++-9auF	IF	I #$$+8++-9atE2E2 &'T+8++-9atE	6E	6 ;-Tt<
E =
E <.d+8++-9auFF $&78dK! L!  &'T:8 ;8 :,D	B. C.B#5$ (
 )
]N ]N@5 5p&#R )*+8++-9auFF( -./" 0" 789+ :+:('" ./T+8++-9auF!F!*7,-,#1L &AB, C,  347 57  ;<7 =7 &AB, C, "?@	> A	>	>	>	>	<<	>	>	>>&	>	>	>>" "?@
> A
>
>
>
>
>
> RS& T& m4, 5,A 
A 
A0" %)8)15&/)B)D E+E+ 5!S/2, 3, %)8)15&/)B)D E=E=#
#)I0I " () ))@"00=;0.&,( RS. T.@&@",Jr3   