
    ^j             	       	   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      d        Z, edgdd      d        Z- edgd      d        Z.d Z/d Z0 edgdd      d        Z1 edgdd ejd                         dk(  rd nd      d        Z3 edgdd ejd                         dk(  rd nd      d         Z4 ed!gdd ejd                         dk(  rd nd"      d#        Z5 ed$gdd ejd                         dk(  rd nd"      d%        Z6 ed&gdd ejd                         dk(  rd nd'      d(        Z7 ed)gdd ejd                         dk(  rd nd*      d+        Z8 ed,d-gdd      d.        Z9 ed/gdd      d0        Z: ed1gdd2      d3        Z;d4 Z<d5 Z= e       d6        Z> G d7 d8      Z? G d9 d:      Z@d; ZA ed<gd      d=        ZBd> ZCd? ZDd@ ZE edAgd      dB        ZF edCgd      dD        ZGdE ZHdF ZIdG ZJdH ZK edIgdd ejd                         dk(  rd ndJ      dK        ZLdL ZMdM ZNdN ZOdO ZPdP ZQdQ ZRej                  j                  dRdS      dT        ZUej                  j                  dUdV      dW        ZVej                  j                  dUdX      dY        ZWej                  j                  dRdS      dZ        ZXej                  j                  d[d\      d]        ZYd^ ZZd_ Z[d` Z\da Z]db Z^dc Z_dd Z`de Zadf Zbdg Zcdh Zddi Zedj Zfej                  j                  d[d\      dk        Zgdl Zhdm Zidn Zjdo Zkdp Zl	 ddqZmdr Zn	 	 ddsZodt Zp	 dduZqdv Zrej                  j                  dw      dx        Ztej                  j                  dydz      d{        Zud| Zved}        Zwd~ Zxd Zyej                  j                  dddgd e	j                  ddg      g      d        Z{ej                  j                  ddde|g      d        Z}d Z~d Zd Zd Zd Zd Zd Zd Zd Z e       d        Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zej                  j                  dw      d        Zd Zd Zd 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               g/var/www/ramen.bs-engineer-server.com/venv/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mpl20)remove_textstylec                      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_auto1rR   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)rI   rJ   edgem)alignr/   Nr   r   updownrP   rA   )r   r   r   rQ   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.png)rG   c                      t        j                         \  } }g d}g d}|j                  ||dd       |j                  dd       |j	                  dd       |j                  d	       y
)rI   ?皙?ra   r`   r`   r   ffffff?rc   皙?rd   r   r   o-r:   rN                 ?rP   rA   N)r   r   rB   set_xlimset_ylimr$   )r+   r,   r-   r.   s       r1   test_legend_auto3rj   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)rZ   step
stepfilledr   r   	   r   Legend)binsr   histtyperP   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@rm   centerrP   )r   r`   皙?皙?C1)xywidthheightfcr   r   r`   rg   ra   )r   )r   r   r   ih  rd   C0)r   r   z	A segmentrN   rA   N)r   r   r   rv   mpatchesEllipsePolygonr   arrayWedge	add_patchrB   r$   rz   r{   r|   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      rL   r   rN   gffffff@u   DéveloppésrW   __nolegend__rP   )	numpointsr   )r   figureadd_subplotrB   r   rQ   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?)rF   rG   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   rN   r   z:xr-      rW   ddiamondrP   F)r   markerfirst)r   r   rB   r   rQ   onesr$   r   s     r1   test_labels_firstr      sz     llnGCGGBIIbM4qG)GGBGGBKM4sG+GGBIIb"b!3iG8II&eI,r3   zlegend_multiple_keys.pnggL7A`?c                  ,   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   rl   r   r5   rl   r   z-xrl   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                      d t         j                  d<   t        j                         \  } }|j                  t	        d      d       t        j
                  dgd      }|j                  j                  g d       y )	Nlegend.framealphar   r   lwLonglabel that will go awayr   rA   r   r   r   r   )r   rcParamsr   rB   ry   r$   legendPatchset_facecolorr+   r,   r   s      r1   test_alpha_rgbar      s\     )-CLL$%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   r   g      ?)rcr   r   rA   r   )	r   r   rB   ry   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.pngg{Gz?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--XXrN   r   rW   zXX
XXr   )xerryerrr   r   rg   r5   T	My legendr   )r   r   rn   shadowtitler   )r   subplotrB   r    r   rQ   errorbarr$   r8   r3   r1   
test_fancyr      s     KKHHaS2XuD)KK		"ryyQ38DLL2		"C'JJ=#st;!Er3   
framealphag/$?c                      t        j                  ddd      } | }t        j                  | |dd       t        j                  dd       y )	Nr   rJ   mylabelr   )r   r   r   upper right)r   r   )r   r   r   rB   r$   )r-   r.   s     r1   test_framealphar      s;     	AsC A	AHHQr*JJ#=1r3   zscatter_rc3.pngzscatter_rc1.pngc                  <   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       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 )Nrl   zlegend.scatterpointsr   r   r   rW   threerN   r   rg   r   r   )r   r   r   r   one)	r   r   r   r   r   r    r   rQ   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                     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   rJ   rK   rL   rM   rN   r@   )r   moderO   right
lower leftr5   )r   r   rn   )	r   r   lenr   rQ   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defaultc            	      r   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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`   rg   r`   +zPath
default color)r   gQ?g)\(?C2zPath
explicit colorg{Gz皙?r   )handlelengthhandleheight)r   r   	Rectangler   fill_betweenrh   ri   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                  4   t        j                         \  } }|j                  t        d            }| j	                  |dg      }|j                          | j                  g k(  sJ |j	                  d      }|j                          |j                         J y )Nr   test)r   r   rB   ry   r$   removelegends
get_legend)r+   r,   linesr   s       r1   test_legend_remover   $  sy    llnGCGGE"IE
**UVH
%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).,rL   r   rN   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c                 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firstrN   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                   T    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
 Zd Zd 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 worldrN   matplotlib.legend.Legendr   rB   ry   r   r   r$   assert_called_withgcaselfr   rs   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   ry   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  rN   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  rN   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  rN   z,matplotlib.legend._get_legend_handles_labels1r5   )r   )	r   rB   ry   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-   rN   r5   2xrl   3xr  )r0   	r   r   r   r   rB   r   r   r$   r   )r#  r+   r,   r-   ln1ln2ln3rs   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   r9  r5   r  r-   r:  r)   r<  )r#  r+   r,   r-   r=  r>  rs   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      sinrN   cosr  r   r   )r)   r0   )r   r   r   r   pirB   rF  rG  r   r   r$   r   )r#  r+   r,   thlnslncrs   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      \  }d}t        j                  t        |      5  |j                  ||fd	
       d d d        y # 1 sw Y   y xY w)Nr   r5   rE  rF  rN   rG  4must both be passed positionally or both as keywordsr(  rH  rB  )r   r   r   r   rI  rB   rF  rG  r*  r+  r,  r$   )r#  r+   r,   rJ  rK  rL  msgs          r1    test_error_mixed_args_and_kwargsz3TestLegendFunction.test_error_mixed_args_and_kwargs  s    ,,.R[[AbeeGT*wwr266":Uw3wwr266":Uw3D]]9C0 	5IIsCjI4	5 	5 	5s   /CC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   DensityrN   )r   rl   r5   Temperaturer  )	mpl_toolkits.axes_grid1rS  twinxrB   r   r   r   r$   r   )r#  rS  hostparr   r   rs   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&c                    t        j                         \  }}|j                  ddg      \  }|j                  ddg      \  }t        j                  t
        d      5  |j                  ||gdg       d d d        t        j                  t
        d      5  |j                  |gdd	g       d d d        y # 1 sw Y   CxY w# 1 sw Y   y xY w)
Nr   r5   rl   r   z'Mismatched number of handles and labelsr(  only_onelabel_alabel_b)r   r   rB   r*  warnsUserWarningr$   )r#  r+   r,   line1line2s        r1   9test_legend_warns_on_unequal_number_of_handles_and_labelszLTestLegendFunction.test_legend_warns_on_unequal_number_of_handles_and_labels  s    ,,.R!Q!Q\\+-VW 	4IIuenzl3	4\\+-VW 	7IIug	956	7 	7	4 	4	7 	7s   B5C5B>C
N)__name__
__module____qualname__r$  r&  r-  r0  r2  r7  r@  rC  rM  rQ  r\  re  r8   r3   r1   r  r  O  sE    EE@MA@?>5N7r3   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   ry   r   r   r$   r   transFigurer#  r+   r,   r   rs   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  rN   r  rl  rn  rp  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/  rl  rn  rp  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   ry   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   rH  )r   r)   r0   )r   rm  )r   r   rB   ry   r   rQ   r   r   r$   r   ro  )r#  r+   r   r   lines2rs   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                 R   t        j                  dd      \  }}|d   j                  t        d            }|d   j                  t	        j
                  d      dz        }d}t        j                  t        |      5  |j                  ||fd	       d d d        y # 1 sw Y   y xY w)
Nr   r5   r   r   ry  rO  r(  rH  rB  )
r   r   rB   ry   r   rQ   r*  r+  r,  r$   )r#  r+   r   r   rz  rP  s         r1   test_error_args_kwargsz/TestLegendFigureFunction.test_error_args_kwargs  s    <<1%SAE"I&QRYYr]R/0D]]9C0 	;JJvzJ:	; 	; 	;s   >BB&N)	rf  rg  rh  rq  r$  rt  rw  r{  r}  r8   r3   r1   rj  rj    s#    BBB?,;r3   rj  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                  ||   d       t        |j                         j                  ||   d        y c c} w c c} w c c} w c c} w )N)rv  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  TrJ   )constrained_layoutdpir   Boo1rN   zoutside rA   g-C6?)rtol)	enumerateprintr   r   rB   ry   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9H9H9G9HhhWgh*D
 %'%#&$"$$"%%'E e$ 
#Dd<<4SASr&)jjZ$.j/""$--/77b!	#--/77r!	#
#7 DDDEs   E%E*E/E4zlegend_stackplot.pngc                  &   t        j                         \  } }t        j                  ddd      }d|z  }d|z  dz   }d|z  dz   }|j	                  ||||g d	       |j                  dd       |j                  dd
       |j                  d       y)z/Test legend for PolyCollection using stackplot.r   r   rg   ry  r         @r5   )y1y2y3rB  F   rP   rA   N)r   r   r   r   	stackplotrh   ri   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2KK2II&Ir3   c                      t        j                         \  } }t        j                         \  }}|j                  t        d      t        d            }|j	                  |d       y )Nrl   foo)r   r   rZ   ry   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 )NrL   r   rl   )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 )Nrf   rg   krL   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   rl   r/   )r  r  r  rP   rA   g      皙@)ry   r   r    r$   r!  rh   ri   )r*   r  s     r1   test_not_covering_scatterr  M  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  rZ   rP   rA   )mtransformsAffine2D	translater   r   r   rB   r    r!  	transDatar$   )offsetr-   s     r1   #test_not_covering_scatter_transformr  Y  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  ra   --rl   )
linestylesr   z-.)r  :)rc  rd  zline 3r   )
mcollectionsLineCollectionr   r   add_collectionr$   r  r   get_linestyles_dash_pattern)lines1rz  lines3lc1lc2lc3r+   r,   r   h1h2h3ohlhs                 r1   !test_linecollection_scaled_dashesr  e  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   rN   r   r   N)r   r   rB   ry   r$   r   s     r1   test_handler_numpointsr  y  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 datarN   textr   )r-   r.   r  r   Nr   )r   r   error)r   r   rB   r  r*  ra  rb  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;! 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   rN   N)r   rZ   r$   r8   r3   r1    test_empty_bar_chart_with_legendr    s     GGB&!JJLr3   zshadow_argument_types.pnggy&1?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   rN   r@   Tr   r   r   Fr   r  ra   )r/   r  center right)ra   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   rN   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 )NrJ   r   rN   Tw)r   r  r   )r   r   rB   ry   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  rN    )r   r   rB   ry   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 )	NrJ   r  r   AardvarkrN      r5   ra   )r   r   rB   ry   r$   r}   rz   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 )NrJ   r  r   r  rN   )r   r   rB   ry   r$   rz   r{   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  rN   r     serif)familysize)r   title_fontsizetitle_fontproperties)r   r(  r5   rl   )r      )ro   r   )r   r'  r   zlegend.title_fontsizer%  z	font.sizer   r   r   r   )r   rB   ry   r*  r+  r	  r$   r
   r  get_sizer   rv   get_fontsizer   r   )	r   r+   axesleg0leg1r   leg3leg4leg5s	            r1   #test_legend_title_fontprop_fontsizer3    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   rv  r   c                     t        j                         \  }}|j                  t        d      d       |j	                  d|       }|j                         d   j                  | k(  sJ |j                         | k(  sJ y )Nr   r   rN   r  )r   r4  r   )r   r   rB   ry   r$   get_childrenrV   get_alignmentr4  r+   r,   r   s       r1   test_legend_alignmentr9    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   rN   )
r   r   rB   ry   r$   set_loc_get_locr  rs   codesr   r+   r,   r   s       r1   test_ax_legend_set_locr?    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   rN   outsider   )r   r   rB   ry   r$   r;  
startswithsplitr<  r  rs   r=  r>  s       r1   test_fig_legend_set_locrD    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   rN   r   )	r   r   rB   ry   r$   set_alignmentr6  rV   r7  r8  s       r1   test_legend_set_alignmentrG  *  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   #1rN   r5   #2rl   #3
labelcolor)r   r   rB   r   rQ   r$   r  r   r*   
same_color	get_colorr/   r+   r,   r   r  s        r1   test_legend_labelcolor_singlerQ  4  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   rI  rN   r5   rJ  rl   rK  r   r   r   rL  r   r   rB   r   rQ   r$   r   r  r   r*   rN  rO  r+   r,   r   r  r/   s        r1   test_legend_labelcolor_listrV  A  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   rI  r   r   r/   r5   rJ  r   rl   rK  r   	linecolorrL  rS  rT  rU  s        r1    test_legend_labelcolor_linecolorrZ  M  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   rI  r   r   r5   rJ  r   rl   rK  r   rY  rL  rS  r   r   r    r   rQ   r$   r   r  r   r*   rN  rO  rU  s        r1   /test_legend_pathcollection_labelcolor_linecolorr]  Y  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   rU   r5   r   rI  r   rY  rL  black)r   r   r   r   r    rQ   r$   r  r   r*   rN  rO  )r+   r,   r*   r   r  s        r1   8test_legend_pathcollection_labelcolor_linecolor_iterablera  e  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   rI  r   r   rY  rL  r`  )r   r   r    r   rQ   r$   r  r   r*   rN  rO  )r+   r,   r   r  s       r1   4test_legend_pathcollection_labelcolor_linecolor_cmaprd  q  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   rI  r   r   markeredgecolorr5   rJ  r   rl   rK  r   rg  rL  rS  rT  rU  s        r1   &test_legend_labelcolor_markeredgecolorrh  |      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   rI  r   r   r   r5   rJ  r   rl   rK  r   rg  rL  rS  r\  rU  s        r1   5test_legend_pathcollection_labelcolor_markeredgecolorrl        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 )	Nr_  r5   r   rI  rk  rg  rL  r  r   r   r   r   r    rQ   r$   r   r  r   r*   rN  rO  r+   r,   r*   r   r  r/   s         r1   >test_legend_pathcollection_labelcolor_markeredgecolor_iterablerq         llnGCXX/!34FJJryy}biim46JJ
))0)
1C3==?SE2 >ezz$$T^^%5u===>r3   c                     t        j                         \  } }t        j                  d   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 )	Nviridisr   rI  Reds)r   r   r   cmaprg  rL  r  r   r   r   	colormapsr   r   r  r    rQ   r$   r   r  r*   rN  rO  )r+   r,   r  r   r  r/   s         r1   :test_legend_pathcollection_labelcolor_markeredgecolor_cmapry    s     llnGCy)"))..*<=J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   rI  r   r   markerfacecolorr5   rJ  r   rl   rK  r   r|  rL  rS  rT  rU  s        r1   &test_legend_labelcolor_markerfacecolorr}    ri  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   rI  r   r   r  r5   rJ  r   rl   rK  r   r|  rL  rS  r\  rU  s        r1   5test_legend_pathcollection_labelcolor_markerfacecolorr    rm  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 )	Nr_  r5   r   rI  r  r|  rL  r  ro  rp  s         r1   >test_legend_pathcollection_labelcolor_markerfacecolor_iterabler    rr  r3   c                     t        j                         \  } }t        j                  d   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 )Nrt  r   rI  r   r|  rL  r  rw  rp  s         r1   8test_legend_pathcollection_labelcolor_markfacecolor_cmapr    s     llnGC]]9%biinnR&89F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   rI  rN   r5   rJ  rl   rK  legend.labelcolor)r   r   rB   r   rQ   r   r   r$   r  r*   rN  rO  rP  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   rI  r   rX  r5   rJ  r   rl   rK  r   rY  r  rS  r   r   rB   r   rQ   r   r   r$   r   r  r*   rN  rO  rU  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   rI  r   rf  r5   rJ  r   rl   rK  r   rg  r  rS  r  rU  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   rI  r   rf  r5   rJ  r   rl   rK  r   mecr  rS  r  rU  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   rI  r   r{  r5   rJ  r   rl   rK  r   r|  r  rS  r  rU  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   rI  r   r{  r5   rJ  r   rl   rK  r   mfcr  rS  r  rU  s        r1   4test_legend_labelcolor_rcparam_markerfacecolor_shortr  *  r  r3   c                 B   |j                   d   j                         }|j                         d   }| d   d   } t        j                  j                  ||      sJ |r`t        j                  j                  ||j                               sJ t        j                  j                  || j                               sJ |rat        j                  j                  ||j                               sJ t        j                  j                  || j                               sJ yy)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.
    rW   r   N)textsrO  get_patchesr   r*   rN  get_facecolorget_edgecolor)	histogramr   expected_colorr  r   label_colorr   s          r1   assert_last_legend_patch_colorr  7  s     ))B-))+KOOb!E"a I::  n===zz$$[%2E2E2GHHHzz$$[)2I2I2KLLLzz$$[%2E2E2GHHHzz$$[)2I2I2KLLL r3   c                  |   t        j                  d      } t        j                         \  }}|j	                  | ddd      }|j                  d      }t        ||dd	       |j	                  | d
dd      }|j                  d      }t        ||dd       |j	                  | ddd      }|j                  d      }t        ||dd	       |j	                  | dddd      }|j                  d      }t        ||dd	       |j	                  | dddd      }|j                  d      }t        ||dd	       |j	                  | dddd      }|j                  d      }t        ||dd       |j	                  | d
ddd      }|j                  d      }t        ||dd       |j	                  | d
dd      }|j                  d      }t        ||dd       |j	                  | dddd      }|j                  d      }t        ||dd	       |j	                  | dddd      }|j                  d      }t        ||dd	       |j	                  | dddd      }|j                  d      }t        ||dd       |j	                  | dddd      }|j                  d      }t        ||dd	       y )Nr   rZ   r   zred bar hist with a red label)ru   r/   r   rY  rL  Tr  rp   r   zgreen step hist, green labelr   rq   r   z&blue stepfilled hist with a blue labelz,red bar hist with blue edges and a red label)ru   r/   ecr   )ru   r   r  r   r  z(unfilled blue bar hist with a blue labelz blue step hist with a blue label)ru   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   rQ   r   r   rx   r$   r  )r-   r+   r,   r  r   s        r1   +test_legend_labelcolor_linecolor_histogramsr  J  s   
		"A llnGC
E4STA
)){)
+C"1c3$?
F#5STA
)){)
+C"1c3$?
L> 	 	@A
)){)
+C"1c3$? 	ED 	 	FA
)){)
+C"1c3$?
EccD 	 	FA
)){)
+C"1c3$?
Ef@ 	 	BA
)){)
+C"1c3$? 	F##8 	 	:A
)){)
+C"1c3$?
Fs8 	 	:A
)){)
+C"1c3$? 	LB 	 	DA
)){)
+C"1c3$?
LSSB 	 	DA
)){)
+C"1c3$?
LVA 	 	CA
)){)
+C"1c3$?
LSVE 	 	GA
)){)
+C"1c3$?r3   c                    |j                   d   j                         }|j                         d   }t        j                  j                  ||      sJ |r`t        j                  j                  ||j                               sJ t        j                  j                  || j                               sJ |r`t        j                  j                  ||j                               sJ t        j                  j                  || j                               sJ |rat        j                  j                  ||j                               sJ t        j                  j                  || j                               sJ yy)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.
    rW   N)r  rO  rC   r   r*   rN  get_markerfacecolorget_markeredgecolor)line_markerr   r  r/   r  r   r  
leg_markers           r1   #assert_last_legend_linemarker_colorr    s$    ))B-))+K$J::  n===zz$$[*2F2F2HIIIzz$$[+2G2G2IJJJzz$$[*2P2P2RSSSzz$$[+2Q2Q2STTTzz$$[*2P2P2RSSSzz$$[+2Q2Q2STTT r3   c                  p   t        j                  d      } t        j                         \  }}|j	                  | dd      \  }|j                  d      }t        ||dd       |j	                  | d	dd
      \  }|j                  d      }t        ||dd       |j	                  | d	ddd      \  }|j                  d      }t        ||dd       |j	                  | d	ddd      \  }|j                  d      }t        ||dd       |j	                  | d	ddd      \  }|j                  d      }t        ||dd       |j	                  | d	ddd      \  }|j                  d      }t        ||dd       |j	                  | d	ddd      \  }|j                  d      }t        ||d       y )Nr   r   zred line with a red labelrc  rY  rL  Tr  rL   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   rQ   r   r   rB   r$   r  )r-   r+   r,   r  r   s        r1   %test_legend_labelcolor_linecolor_plotr    s   
		!A llnGC	c!<	=BA
)){)
+C'34@ 
C3&D	EBA
)){)
+C'34@	C3C/S	TBA
)){)
+C'34@	CSc1U	VBA
)){)
+C'3tD 
CV: 
 
<BA
)){)
+C'3tD	CSf4U	VBA
)){)
+C'3tD	C6vP 
 
RBA
)){)
+C'34r3   c                 *   |j                   d   j                         }|j                  d   }t        j                  j                  ||      sJ |r`t        j                  j                  ||j                               sJ t        j                  j                  || j                               sJ |rat        j                  j                  ||j                               sJ t        j                  j                  || j                               sJ yy)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.
    rW   N)r  rO  r  r   r*   rN  r  r  )scatter_markerr   r  r  r   r  
leg_handles          r1   &assert_last_legend_scattermarker_colorr    s     ))B-))+K##B'J::  n===zz$$[*2J2J2LMMMzz$$[.2N2N2PQQQzz$$[*2J2J2LMMMzz$$[.2N2N2PQQQ r3   c                     t        j                  d      } t        j                         \  }}|j	                  | | dd      }|j                  d      }t        ||dd       |j	                  | | dd	d
      }|j                  d      }t        ||dd       |j	                  | | dd	d
      }|j                  d      }t        ||dd       |j	                  | | dd	d      }|j                  d      }t        ||d	d       |j	                  | | ddd      }|j                  d      }t        ||dd       |j	                  | | ddd      }|j                  d      }t        ||d       y )Nr   r   r  rc  rY  rL  Tr  r   r  )r   r  r   )r   r  r   r  r  r  r  r  r  )r   rQ   r   r   r    r$   r  )r-   r+   r,   r  r   s        r1   (test_legend_labelcolor_linecolor_scatterr    sn   
		!A llnGC


1a3&D
EA
)){)
+C*1c3$G


1a33.R
SA
)){)
+C*1c3$G


1aCC/S
TA
)){)
+C*1c3$G 	

1aFs2U
VA
)){)
+C*1c3$G


1aCF2S
TA
)){)
+C*1c3$G


1a6fR 	 	TA
)){)
+C*1c37r3   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    sb    ZZ\F##%%%
!!!
##%%%%r3   	draggable)TFc                     t        j                         \  }}|j                  t        d      d       |j	                  |       }|j                         | u sJ y )Nr   shabnamsrN   )r  )r   r   rB   ry   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/   rg   rW   r   )r   rx   r$   r  	set_alphar  r  )r-   r  hhr$   r  s        r1   test_alpha_handlesr    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   inputrN   r   r*  z Font family ['serif'] not found.)	r   r   r   r   rB   r$   rz   r{   r  )caplogr+   r,   s      r1   test_usetex_no_warnr    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         ?rp   perf_counterc                      t               S r7   nextcounters   r1   <lambda>z-test_warn_big_data_best_loc.<locals>.<lambda>&      d7m r3   r_   rb   re   r:   rN   z
legend.locrP   zGCreating legend with loc="best" can be slow with large amounts of data.r(  r5   )	itertoolscountsetattrtimer   r   rz   r{   rB   r	   r$   r*  ra  rb  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>>  r  r3   r_   rb   re   r:   rN   rP   )r  r  r  r  r   r   rz   r{   rB   r$   r  )r  r+   r,   r-   r.   r$   r  s         @r1   (test_no_warn_big_data_when_loc_specifiedr  ;  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   rr   rN   r  r  )r   r   rB   r$   r  r  )r  r-   r.   r+   r,   r   entrylegend_textss           r1   'test_plot_multiple_input_multiple_labelr  L  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   rr   rN   )r   r   rB   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GGAqG
))+C25--/BENN$BLBCJ<!++++ Cs   Bc                      g d} g d}t        j                         \  }}t        j                  t        d      5  |j                  | |ddg       d d d        y # 1 sw Y   y xY w)Nr   )r5   r   r)  z,label must be scalar or have the same lengthr(  r  r  rN   )r   r   r*  r+  r	  rB   )r-   r.   r+   r,   s       r1   %test_plot_single_input_multiple_labelr  n  sZ     	AAllnGC	zK
M -
1UFO,- - -s   AA$c                      t        j                         \  } }|j                  dgdggdg      \  }|j                         dk(  sJ y )Nr   r   ArN   )r   r   rB   	get_label)r+   r,   r:   s      r1   !test_plot_single_input_list_labelr  y  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   rr   )r  r  mediumrN   )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 )NrU  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   rl   r   r:   rN   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:   rN   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   rl   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            	         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  rZ   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  rl   )ncol)rn   r  )r  r  stringsrn   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&    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(  r9  z@loc must be string, coordinate tuple, or an integer 0-10, not -1rW   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  rP   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,    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   ry   r*  ra  rb  r$   r   r  r  r/  r0  r$   s      r1   !test_legend_handle_label_mismatchr4    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.  r2  r5   )r   rB   ry   r$   iterr   r  r  r3  s      r1   (test_legend_handle_label_mismatch_no_lenr7  '  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+  rb  r$   r8   r3   r1   test_legend_nolabels_warningr9  0  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;  6  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   rm   rP   r   grayr   zShaded Area)r/   r  r   r   r)  rW   r   rA   r   )r   r   r   rv   r   rh   ri   r$   rz   r{   r|   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=  rm   r>  r   z	plot namerN   r  zsome text blahblahtop)verticalalignmentrA   r   )r   r   r   rv   rB   r  r$   rz   r{   r|   r}   r~   r   r   r   r   )r+   r   r   r,   r   r-   r.   r   s           r1   test_legend_textrD  P  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   LinerN   r   )r   r   )r   r   rA   _get_renderer)wraps)r   r   rB   annotater$   r   r   objectrG  savefigioBytesIOassert_not_called)r+   r,   mocked_get_renderers      r1   test_legend_annotaterP  a  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   )nrowsrn   )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   )rW  r   r   r  rZ  s     r1   r;   z-test_boxplot_legend_labels.<locals>.<genexpr>  s!     @1z!SYY--.@r[  z values must have same the lengthr(  r5   rW   rN   rl   rS  c              3   Z   K   | ]#  }|j                         j                  d        % yw)_N)r  rB  )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_labelsri  p  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c                     t        j                         \  } }|j                  g dd       |j                  d      }|j                  j                         dk(  sJ t        j                  ddi      5  t        j                         \  } }|j                  g dd       |j                         }|j                  j                         dk(  sJ 	 ddd       t        j                  dd	d
      5  t        j                         \  } }|j                  g dd       |j                         }|j                  j                         d	k(  sJ 	 ddd       t        j                  ddi      5  t        j                         \  } }|j                  g dd       |j                  d      }|j                  j                         dk(  sJ 	 ddd       y# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   yxY w)z,Test legend.linewidth parameter and rcParam.r   r  rN   g      @)	linewidthlegend.linewidthr  Nr  )rl  zpatch.linewidthrg   g      @)r   r   rB   r$   r   get_linewidthr   r	   r   s      r1   test_legend_linewidthrn    s   llnGCGGIVG$ ))c)
"C??((*c111 
+S1	2 6,,.R
	(iik,,.#555	6 
TcJ	K 6,,.R
	(iik,,.#555	6 
+S1	2 6,,.R
	(ii#i&,,.#555	6 66 66 66 6s'   5AG2AG#.AG/G #G,/G8c                     t        j                         \  } }t        j                  t	        j
                  dd      t	        j
                  dd      gddddd	      }|j                  |       |j                          |j                         }t        |j                               dk(  sJ |j                         d
   j                         dk(  sJ t        |j                        dk(  sJ |j                  d
   }t        j                  j                  |j!                         |j!                         d
         sJ t        j                  j                  |j#                         |j#                         d
         sJ |j%                         |j'                         d
   k(  sJ |j)                         |j+                         d
   k(  sJ y )Nr   r   )r5   r   zpatch collectionr  r  rl   r  )r   r  r   
linewidths	linestyler   )r   r   r  PatchCollectionr   Circler  autoscale_viewr$   r   r  r  r  r   r*   rN  r  r  rm  get_linewidthsget_linestyler  )r+   r,   r  r   legend_patchs        r1   test_patchcollection_legendrx    s    llnGC		%	%		#X__VQ%?@ 
B b
))+C s}}1$$$==?1&&(,>>>> s!!"a'''%%a(L::  !;!;!="$"2"2"4Q"79 9 9::  !;!;!="$"2"2"4Q"79 9 9%%'2+<+<+>q+AAAA%%'2+<+<+>q+AAAAr3   c                  ^   t        j                         \  } }t        j                  g d      }|j	                  |       |j                         }t        |j                               dk(  sJ |j                         d   j                         dk(  sJ t        |j                        dk(  sJ y )Nzempty collectionrN   r   r   )
r   r   r  rr  r  r$   r   r  r  r  )r+   r,   r  r   s       r1   !test_patchcollection_legend_emptyrz    s    llnGC 
	%	%b0B	CBb ))+C s}}1$$$==?1&&(,>>>> s!!"a'''r3   )FF)FFF)r"   rL  r  platformr  unittestr   r  numpyr   numpy.testingr   r*  matplotlib.testing.decoratorsr   r   matplotlib.testing._markersr   matplotlib.pyplotpyplotr   
matplotlibr   matplotlib.patchesrX  r   matplotlib.transforms
transformsr  matplotlib.collectionsr  matplotlib.linesr   r  matplotlib.legend_handlerr   matplotlib.legendr$   r  r	   matplotlib.font_managerr
   r2   rD   rR   r]   rj   r   r   r   machiner   r   r   r   r   r   r   r   r   r   r  r  r  rj  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r!  r3  r  parametrizer9  r?  rD  rG  rQ  rV  rZ  r]  ra  rd  rh  rl  rq  ry  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  r  r  r   r"  r&  r)  r,  r4  r7  r9  r;  r@  rD  rP  ri  rn  rx  rz  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+8++-9auF-F- -.D+8++-9auF	IF	I #$$g+8++-9atE2E2 &'T+8++-9atE	6E	6 ;-T+8++-9atEEEE <.d'+8++-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+8++-9auF!F!*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)15&/)B)D E+E+ 5!S/2, 3,-#
#)I0I " ) )@"00=;0.&,( RS. T.@&@",J@6>BB(r3   