ó
    |ñ:iï ã                  ób  • S SK Jr  S SKrS SKrS SKJr  S SKJr  S SKJrJ	r	J
r
  S SKJr  S SKJr  S SKrS SKrS SKrS SKJr  S S	KJrJr  S S
KJrJrJrJrJrJr   " S S5      r  " S S\ 5      r! " S S\ 5      r" " S S\ 5      r# " S S5      r$ " S S\5      r%SS jr&SS jr'S r(S r)SS jr*g)é    )ÚannotationsN©Úcopy)Ú
UserString)ÚIterableÚSequenceÚMapping)ÚNumber)Údatetime)ÚPlotData)ÚQUAL_PALETTESÚcolor_palette)Ú_check_argumentÚ_version_predatesÚ
desaturateÚlocator_to_legend_entriesÚget_color_cycleÚ	remove_nac                  óH   • \ rS rSr% SrSrS\S'   SrSrS r	S r
S rS	 rS
rg)ÚSemanticMappingé   z6Base class for mapping data values to plot attributes.Nz
str | NoneÚmap_typec                ó   • Xl         g ©N©Úplotter)Úselfr   s     ÚP/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/seaborn/_base.pyÚ__init__ÚSemanticMapping.__init__+   s	   € ð �ó    c                ó   • Sn[        U5      [        U5      :”  af  SR                  SU S[        U5       S3S[        U5       S3S/5      n[        U[        R                  " U5      5       VVs/ s H  u  pVUPM	     nnnOV[        U5      [        U5      :”  a>  SR                  S	U S
[        U5       S3S[        U5       S3/5      nUS[        U5       nU(       a  [
        R                  " U[        SS9  U$ s  snnf )z/Input check when values are provided as a list.Ú Ú z
The z list has fewer values (Ú)zthan needed (z) and will cycle, which mayz produce an uninterpretable plot.úThe z list has more values (z), which may not be intended.Né   ©Ú
stacklevel)ÚlenÚjoinÚzipÚ	itertoolsÚcycleÚwarningsÚwarnÚUserWarning)r   ÚlevelsÚvaluesÚvariableÚmessageÚ_Úxs          r   Ú_check_list_lengthÚ"SemanticMapping._check_list_length4   sþ   € ð ˆÜˆv‹;œ˜V›Ó$Ø—h‘hØ˜˜
Ð":¼3¸v»;¸-ÀqÐIØ¤ F£˜}Ð,GÐHØ2ð ó ˆGô
 %(¨´	·²ÀÓ0GÔ$HÔIÒ$H™D˜A“aÑ$HˆFÑIˆFä�‹[œ3˜v›;Ó&Ø—h‘hØ�x�jÐ 7¼¸F»°}ÀAÐFØ¤ F£˜}Ð,IÐJð ó ˆGð ˜LœS ›[Ð)ˆFæÜ�MŠM˜'¤;¸1Ò=àˆùó Js   Á/C:c                ó    • U R                   U   $ )z)Apply the mapping to a single data value.©Úlookup_table)r   Úkeys     r   Ú_lookup_singleÚSemanticMapping._lookup_singleL   s   € à× Ñ  Ñ%Ð%r!   c                óì   • [        U[        [        R                  [        R
                  45      (       a&  U Vs/ s H  o@R                  " U/UQ70 UD6PM     sn$ U R                  " U/UQ70 UD6$ s  snf )z-Get the attribute(s) values for the data key.)Ú
isinstanceÚlistÚnpÚndarrayÚpdÚSeriesr>   )r   r=   ÚargsÚkwargsÚks        r   Ú__call__ÚSemanticMapping.__call__P   sg   € ä�cœD¤"§*¡*¬b¯i©iÐ8×9Ñ9ÙEHÓIÂSÀ×'Ò'¨Ð;¨DÒ;°FÔ;ÁSÑIÐIà×&Ò& sÐ<¨TÒ<°VÑ<Ð<ùò Js   ¹A1r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r   Ú__annotations__r2   r<   r   r8   r>   rJ   Ú__static_attributes__© r!   r   r   r      s3   ‡ Ù@ð
  €HˆjÓð €Fð €Lòòò0&õ=r!   r   c                  óV   ^ • \ rS rSrSrSrSrSr S
U 4S jjrS r	S r
S rS rS	rU =r$ )Ú
HueMappingéX   z9Mapping that sets artist colors according to data values.Nc                ó  >• [         TU ]  U5        UR                  R                  S[        R
                  " [        S95      n[        U[        R                  5      (       a'  Sn[        R                  " USS9  UR                  5       nUR                  5       R                  5       (       a  Ub  Sn[        R                  " USS9  ggU R                  X$UR                   UR"                  S   5      nUS:X  a,  [        R$                  " U5      nU R'                  XbU5      u  pšpKO>US	:X  a  S=p´U R)                  XbU5      u  pšO S=p´U R)                  [+        U5      X#5      u  pšXPl        X€l        X l        X l        X�l        X@l        X°l        g)
zoMap the levels of the `hue` variable to distinct colors.

Parameters
----------
# TODO add generic parameters

Úhue©Údtypez|Numpy array is not a supported type for `palette`. Please convert your palette to a list. This will become an error in v0.14é   r(   Nz?Ignoring `palette` because no `hue` variable has been assigned.ÚnumericÚcategorical)Úsuperr   Ú	plot_dataÚgetrE   rF   ÚfloatrA   rC   rD   r/   r0   ÚtolistÚisnaÚallÚinfer_map_typeÚinput_formatÚ	var_typesÚ
to_numericÚnumeric_mappingÚcategorical_mappingrB   Ú
saturationr   r<   Úpaletter2   ÚnormÚcmap)r   r   rl   Úorderrm   rk   ÚdataÚmsgr   r2   r<   rn   Ú	__class__s               €r   r   ÚHueMapping.__init__c   ss  ø€ ô 	‰Ñ˜Ô!à× Ñ ×$Ñ$ U¬B¯IªI¼EÑ,BÓCˆä�gœrŸz™z×*Ñ*ð5ð ô
 �MŠM˜#¨!Ò,Ø—n‘nÓ&ˆGà�9‰9‹;�?‰?×ÑØÑ"ØW�Ü—’˜c¨aÓ0ð #ð
 ×*Ñ*Ø˜w×3Ñ3°W×5FÑ5FÀuÑ5MóˆHð ˜9Ó$ä—}’} TÓ*�Ø37×3GÑ3GØ 4ó4Ñ0� d¨Dð ˜]Ó*à"Ð"�Ø'+×'?Ñ'?Ø 5ó(Ñ$�˜ð #Ð"�Ø'+×'?Ñ'?ô ˜“J ó(Ñ$�ð )ŒOØ$ŒMØ ,ÔØ"ŒLØ ŒKØŒIØ�Ir!   c                óÊ  •  U R                   U   nU R                  S:  a  [        X R                  5      nU$ ! [         a     U R                  c   g U R                  U5      n[        R                  R                  U5      (       a  [        R                  nU R                  U5      n N™! [         a*  n[        R                  " U5      (       a  Sn SnA NÆUeSnAff = ff = f)z@Get the color for a single value, using colormap to interpolate.N)r   r   r   r   é   )r<   ÚKeyErrorrm   rC   ÚmaÚ	is_maskedÚnanrn   Ú	TypeErrorÚisnanrk   r   )r   r=   ÚvalueÚnormedÚerrs        r   r>   ÚHueMapping._lookup_single­   s¿   € ð	*à×%Ñ% cÑ*ˆEð. �?‰?˜QÓÜ˜u§o¡oÓ6ˆEàˆøô3 ó 	*à�y‰yÑ ñ $ð
*ØŸ™ 3›�ô —5‘5—?‘? 6×*Ñ*ÜŸV™V�FØŸ	™	 &Ó)’øô ó Ü—8’8˜C—=‘=Ø(–Eà�Iûð	úð	*ús:   ‚8 ¸C"ÁB*Á#AC"Â*
CÂ4CÃC"ÃCÃCÃC"c                ó†   • U[         ;   a  SnU$ Ub  SnU$ [        U[        [        45      (       a  SnU$ US:X  a  SnU$ UnU$ )z'Determine how to implement the mapping.r]   r\   Úwide)r   rA   ÚdictrB   )r   rl   rm   rf   Úvar_typer   s         r   re   ÚHueMapping.infer_map_typeÍ   sk   € à”mÓ#Ø$ˆHð ˆð ÑØ ˆHð ˆô ˜¤$¬ ×.Ñ.Ø$ˆHð ˆð ˜VÓ#Ø$ˆHð ˆð  ˆHàˆr!   c                óä  • [        X5      n[        U5      n[        U[        5      (       aH  [	        U5      [	        U5      -
  n[        U5      (       a  Sn[        UR                  U5      5      eUnXH4$ Uc1  U[        [        5       5      ::  a  [        SU5      n	O@[        SU5      n	O3[        U[        5      (       a  U R                  XBS5      n	O[        X%5      n	[        [        XI5      5      nXH4$ )z5Determine colors when the hue mapping is categorical.z*The palette dictionary is missing keys: {}NÚhuslrl   )Úcategorical_orderr*   rA   r‚   ÚsetÚanyÚ
ValueErrorÚformatr   r   rB   r8   r,   )
r   rp   rl   ro   r2   Ún_colorsÚmissingr~   r<   Úcolorss
             r   rj   ÚHueMapping.categorical_mappingÜ   sÚ   € ô # 4Ó/ˆÜ�v“;ˆô �gœt×$Ñ$ä˜&“k¤C¨£LÑ0ˆGÜ�7�|‰|ØB�Ü  §¡¨GÓ!4Ó5Ð5à"ˆLð  Ð#Ð#ð ‰Øœs¤?Ó#4Ó5Ó5Ü*¨4°Ó:‘Fä*¨6°8Ó<‘FÜ˜G¤T×*Ñ*Ø×0Ñ0°À)ÓL‘ä& wÓ9�ä¤ FÓ 3Ó4ˆLàÐ#Ð#r!   c           
     ó¼  • [        U[        5      (       ab  [        [        U5      5      n[        U5       Vs/ s H  oRU   PM	     nn[        R
                  R                  U5      nUR                  5       nGO][        [        R                  " [        UR                  5       5      5      5      nUc  SOUn[        U[        R
                  R                  5      (       a  UnO
[        USS9nUc  [        R
                  R                  5       nOi[        U[        5      (       a  [        R
                  R                  " U6 nO6[        U[        R
                  R                  5      (       d  Sn	[!        U	5      eUR#                  5       (       d*  U" [        R$                  " UR'                  5       5      5        [        [)        XG" U" U5      5      5      5      nXHX74$ s  snf )z7Determine colors when the hue variable is quantitative.zch:T)Úas_cmapz6``hue_norm`` must be None, tuple, or Normalize object.)rA   r‚   rB   ÚsortedÚmplrŽ   ÚListedColormapr   rC   Úsortr   ÚuniqueÚColormapr   Ú	NormalizeÚtuplerŠ   ÚscaledÚasarrayÚdropnar,   )
r   rp   rl   rm   r2   rI   rŽ   rn   r<   r~   s
             r   ri   ÚHueMapping.numeric_mappingþ   sZ  € ä�gœt×$Ñ$ô œ& ›/Ó*ˆFÜ*0°¬/Ó:ª/ Q˜a”j©/ˆFÐ:Ü—:‘:×,Ñ,¨VÓ4ˆDØ"Ÿ<™<›>ŠLô
 œ"Ÿ'š'¤)¨D¯K©K«MÓ":Ó;Ó<ˆFð  '™‘e°GˆGä˜'¤3§:¡:×#6Ñ#6×7Ñ7Ø‘ä$ W°dÑ;�ð ‰|Ü—z‘z×+Ñ+Ó-‘Ü˜D¤%×(Ñ(Ü—z‘z×+Ò+¨TÐ2‘Ü ¤c§j¡j×&:Ñ&:×;Ñ;ØN�Ü  “oÐ%à—;‘;—=‘=Ù”R—Z’Z §¡£Ó.Ô/ä¤ F¨D±°f³Ó,>Ó ?Ó@ˆLà TÐ/Ð/ùòE ;s   ·G)rn   r2   r<   r   rm   rl   rk   ©NNNru   )rL   rM   rN   rO   rP   rl   rm   rn   r   r>   re   rj   ri   rR   Ú__classcell__©rr   s   @r   rU   rU   X   sB   ø† ÙCà€Gð €Dð €Dð HI÷HòTò@ò $÷D)0ð )0r!   rU   c                  óN   ^ • \ rS rSrSrSr S
U 4S jjrS rS rS r	S r
S	rU =r$ )ÚSizeMappingi*  z8Mapping that sets artist sizes according to data values.Nc                ó  >• [         T
U ]  U5        UR                  R                  S[        R
                  " [        S95      nUR                  5       R                  5       (       aœ  U R                  XBUR                  S   5      nUS:X  a  U R                  XRU5      u  pxpIO<US:X  a  U R                  XRU5      u  pxSn	OU R                  [        U5      X#5      u  pxSn	X`l        Xpl        X@l        X l        X�l        X€l        gg)zpMap the levels of the `size` variable to distinct values.

Parameters
----------
# TODO add generic parameters

ÚsizerY   r\   r]   N)r^   r   r_   r`   rE   rF   ra   Únotnar‰   re   rg   ri   rj   rB   r   r2   rm   ÚsizesÚ
size_ranger<   )r   r   r¦   ro   rm   rp   r   r2   r<   r§   rr   s             €r   r   ÚSizeMapping.__init__/  s  ø€ ô 	‰Ñ˜Ô!à× Ñ ×$Ñ$ V¬R¯YªY¼UÑ-CÓDˆà�:‰:‹<×Ñ×Ñà×*Ñ*Ø˜W×.Ñ.¨vÑ6óˆHð ˜9Ó$à9=×9MÑ9MØ ó:Ñ6� d¨Jð ˜]Ó*à'+×'?Ñ'?Ø ó(Ñ$�ð "‘
ð (,×'?Ñ'?ô ˜“J ó(Ñ$�ð
 "�
à$ŒMØ ŒKØŒIØŒJØ(ŒOØ ,ÕðQ r!   c                óV   • Ub  SnU$ [        U[        [        45      (       a  SnU$ UnU$ )Nr\   r]   )rA   r‚   rB   )r   rm   r¦   rƒ   r   s        r   re   ÚSizeMapping.infer_map_typeg  s?   € àÑØ ˆHð ˆô ˜¤¤d˜|×,Ñ,Ø$ˆHð ˆð  ˆHàˆr!   c                ó8  •  U R                   U   nU$ ! [         a|    U R                  U5      n[        R                  R                  U5      (       a  [        R                  nU R                  S   U[        R                  " U R                  5      -  -   n U$ f = f)Nr   )	r<   rv   rm   rC   rw   rx   ry   r§   Úptp)r   r=   r|   r}   s       r   r>   ÚSizeMapping._lookup_singler  s…   € ð	JØ×%Ñ% cÑ*ˆEð ˆøô ó 	JØ—Y‘Y˜s“^ˆFÜ�u‰u�‰˜v×&Ñ&ÜŸ™�Ø—O‘O AÑ&¨´"·&²&¸¿¹Ó2IÑ)IÑI‰EØˆð	Jús   ‚ “BBÂBc                ó„  • [        X5      n[        U[        5      (       aJ  [        U5      [        U5      -
  n[	        U5      (       a  SU 3n[        U5      eUR                  5       nXG4$ [        U[        5      (       a)  U R                  XBS5      n[        [        XB5      5      nXG4$ [        U[        5      (       a  [        U5      S:w  a  Sn[        U5      eO)Ub  SU 3n[        U5      eU R                  R                  n[        R                  " / UQ[        U5      P76 S S S2   n[        [        XB5      5      nXG4$ )Nz(Missing sizes for the following levels: r¦   é   ú'A `sizes` tuple must have only 2 valuesú"Value for `sizes` not understood: éÿÿÿÿ)r‡   rA   r‚   rˆ   r‰   rŠ   r   rB   r8   r,   r™   r*   r   Ú_default_size_rangerC   Úlinspace)r   rp   r¦   ro   r2   r�   r~   r<   s           r   rj   ÚSizeMapping.categorical_mapping}  s?  € ä" 4Ó/ˆä�eœT×"Ñ"ô ˜&“k¤C¨£JÑ.ˆGÜ�7�|‰|Ø@ÀÀ	ÐJ�Ü  “oÐ%Ø Ÿ:™:›<ˆLðZ Ð#Ð#ôW ˜œt×$Ñ$ð ×+Ñ+¨F¸7ÓCˆEÜ¤ FÓ 2Ó3ˆLðN Ð#Ð#ôG ˜%¤×'Ñ'ô �u“: “?ØC�CÜ$ S›/Ð)ð #ð Ñ"à:¸5¸'ÐB�Ü  “oÐ%ð Ÿ™×8Ñ8�ô —K’KÐ4 Ð4¬¨F«Ò4±T°r°TÑ:ˆEÜ¤ FÓ 2Ó3ˆLàÐ#Ð#r!   c                óô  • [        U[        5      (       aO  [        [        R                  " [        U5      5      5      nUR                  5       n[        U5      [        U5      4nO“[        [        R                  " [        UR                  5       5      5      5      n[        U[        5      (       a  [        U5      S:w  a  Sn[        U5      eUnO)Ub  SU 3n[        U5      eU R                  R                  nUc  [        R                   R#                  5       nOw[        U[        5      (       a  [        R                   R"                  " U6 nOD[        U[        R                   R"                  5      (       d  SU 3n[        U5      e[%        U5      nSUl        UR)                  5       (       d  U" U5        U" U5      n[        U[        5      (       a  Un	O!Uu  p«X¨Xº-
  -  -   n[        [+        XB5      5      n	XIX64$ )Nr¯   r°   r±   z0Value for size `norm` parameter not understood: T)rA   r‚   rB   rC   r•   r3   ÚminÚmaxr   r–   r™   r*   rŠ   r   r³   r“   rŽ   r˜   r   Úcliprš   r,   )r   rp   r¦   rm   r2   Úsize_valuesr§   r~   Úsizes_scaledr<   ÚloÚhis               r   ri   ÚSizeMapping.numeric_mapping·  s   € ä�eœT×"Ñ"ô œ"Ÿ'š'¤$ u£+Ó.Ó/ˆFØŸ,™,›.ˆKÜ˜[Ó)¬3¨{Ó+;Ð;‰Jô
 œ"Ÿ'š'¤)¨D¯K©K«MÓ":Ó;Ó<ˆFä˜%¤×'Ñ'ô �u“: “?ØC�CÜ$ S›/Ð)à"‘
àÑ"à:¸5¸'ÐB�Ü  “oÐ%ð "Ÿ\™\×=Ñ=�
ð ‰<ä—:‘:×'Ñ'Ó)‰DÜ˜œe×$Ñ$ä—:‘:×'Ò'¨Ð.‰DÜ˜D¤#§*¡*×"6Ñ"6×7Ñ7ØDÀTÀFÐKˆCÜ˜S“/Ð!ô ˜“:ˆDð ˆŒ	ð �{‰{�}‰}Ù�ŒLñ ˜F“|ˆô �eœT×"Ñ"Ø ‰Là‰FˆBØ¨©Ñ1Ñ1ˆEÜ¤ FÓ 2Ó3ˆLà TÐ5Ð5r!   )r2   r<   r   rm   r§   r¦   ©NNN)rL   rM   rN   rO   rP   rm   r   re   r>   rj   ri   rR   rŸ   r    s   @r   r¢   r¢   *  s2   ø† ÙBà€Dð 59÷6-òp	ò	ò8$÷tM6ð M6r!   r¢   c                  óD   ^ • \ rS rSrSrSrSU 4S jjrS	S jrS rSr	U =r
$ )
ÚStyleMappingi  z8Mapping that sets artist style according to data values.r]   c           	     óü  >• [         TU ]  U5        UR                  R                  S[        R
                  " [        S95      nUR                  5       R                  5       (       Ga–  [        U5      S:X  a  [        U5      n[        XT5      nU R                  X&[        [        U5      5      S5      nU R                  X6[        [        U5      5      S5      n0 n/ nUR!                  5        H›  u  pš[#        U
[$        R&                  R(                  5      (       d  [$        R&                  R)                  U
5      n
U
R+                  5       R-                  U
R/                  5       5      Xy'   UR1                  U
R3                  5       5        M�     [        U5      (       a  [5        U5      (       d  Sn[7        U5      e0 nU H2  n0 XÍ'   U(       a  X-   XÍ   S'   X}   XÍ   S'   U(       d  M)  X=   XÍ   S'   M4     X`l        XÀl        g	g	)
zqMap the levels of the `style` variable to distinct values.

Parameters
----------
# TODO add generic parameters

ÚstylerY   r   ÚmarkersÚdashesz+Filled and line art markers cannot be mixedÚmarkerÚpathN)r^   r   r_   r`   rE   rF   ra   r¥   r‰   Úvariable_typerB   r‡   Ú_map_attributesÚunique_markersr*   Úunique_dashesÚitemsrA   r“   rÄ   ÚMarkerStyleÚget_pathÚtransformedÚget_transformÚappendÚ	is_filledrd   rŠ   r2   r<   )r   r   rÄ   rÅ   ro   rp   r2   ÚpathsÚfilled_markersrI   Úmr~   r<   r=   rr   s                 €r   r   ÚStyleMapping.__init__  s¯  ø€ ô 	‰Ñ˜Ô!à× Ñ ×$Ñ$ W¬b¯iªi¼eÑ.DÓEˆà�:‰:‹<×Ñ×Òô ˜TÓ" jÓ0Ü˜D“z�ô ' tÓ3ˆFà×*Ñ*Ø¤´°F³Ó!<¸ióˆGð ×)Ñ)Ø¤¬c°&«kÓ :¸HóˆFð
 ˆEØˆNØŸ™ž‘�Ü! !¤S§[¡[×%<Ñ%<×=Ñ=ÜŸ™×/Ñ/°Ó2�AØŸ:™:›<×3Ñ3°A·O±OÓ4EÓF�‘Ø×%Ñ% a§k¡k£mÖ4ñ	 (ô �>×"Ñ"¬3¨~×+>Ñ+>ØC�Ü  “oÐ%àˆLÛ�Ø$&�Ñ!ÞØ29±,�LÑ% hÑ/Ø05±
�LÑ% fÑ-ß�6Ø28±+�LÑ% hÓ/ñ ð !ŒKØ ,ÕðY r!   c                óR   • Uc  U R                   U   nU$ U R                   U   U   nU$ )z(Get attribute(s) for a given data point.r;   )r   r=   Úattrr|   s       r   r>   ÚStyleMapping._lookup_singleG  s:   € à‰<Ø×%Ñ% cÑ*ˆEð ˆð ×%Ñ% cÑ*¨4Ñ0ˆEØˆr!   c                ó‚  • USL a  [        [        X#5      5      nU$ [        U[         5      (       a5  [        U5      [        U5      -
  nU(       a  SU SU 3n[	        U5      eUnU$ [        U[
        5      (       a(  U R                  X!U5      n[        [        X!5      5      nU$ U(       a  SU SU 3n[	        U5      e0 nU$ )z5Handle the specification for a given style attribute.TzThese `z` levels are missing values: zThis `z` argument was not understood: )r‚   r,   rA   rˆ   rŠ   r   r8   )r   Úargr2   ÚdefaultsrØ   r<   r�   r~   s           r   rÉ   ÚStyleMapping._map_attributesO  sÓ   € à�$Š;Ü¤ FÓ 5Ó6ˆLð  Ðô ˜œT×"Ñ"Ü˜&“k¤C¨£HÑ,ˆGÞØ ˜vÐ%BÀ7À)ÐL�Ü  “oÐ%ØˆLð Ðô ˜œX×&Ñ&Ø×)Ñ)¨&°tÓ<ˆCÜ¤ FÓ 0Ó1ˆLð Ðö Ø˜4˜&Ð ?À¸uÐEˆCÜ˜S“/Ð!àˆLàÐr!   )r2   r<   r¿   r   )rL   rM   rN   rO   rP   r   r   r>   rÉ   rR   rŸ   r    s   @r   rÁ   rÁ     s"   ø† ÙBð €H÷8-ôt÷ð r!   rÁ   c                  ó  • \ rS rSrSrSSSSS.rSSS.rSrS	0 4S
 jr\	S 5       r
\	S 5       rS	0 4S jrS"S jrS#S jrS$S jrS$S jr S"SSSSSS.S jjr\	S 5       rS r  S%S jrS rS&S jr S$S jrS rS rS rS rS%S  jrS!rg	)'ÚVectorPlotterih  z2Base class for objects underlying *plot functions.ú@indexú@valuesú@columns)r7   ÚyrX   rÃ   ©r7   rã   )ru   r¯   Nc                ó�   • 0 U l         SSS.U l        U R                  X5        S H  nX2;   d  M
  [        U SU 35      " 5         M      g )NFrä   ©rX   r¤   rÃ   Úmap_)Ú_var_levelsÚ_var_orderedÚassign_variablesÚgetattr)r   rp   Ú	variablesÚvars       r   r   ÚVectorPlotter.__init__r  sL   € àˆÔð
 #(¨eÑ4ˆÔØ×Ñ˜dÔ.ó
 ,ˆCØÕÜ˜  S E˜lÔ+Ö-ò ,r!   c                óH   • [        SS1[        U R                  5      -  5      $ )z.Return True at least one of x or y is defined.r7   rã   )Úboolrˆ   rì   )r   s    r   Úhas_xy_dataÚVectorPlotter.has_xy_dataƒ  s!   € ô �S˜#�J¤ T§^¡^Ó!4Ñ4Ó5Ð5r!   c                óž   • U R                    H2  n[        U SU S3S5      =nc  M  UR                  U R                  U'   M4     U R                  $ )aô  Property interface to ordered list of variables levels.

Each time it's accessed, it updates the var_levels dictionary with the
list of levels in the current semantic mappers. But it also allows the
dictionary to persist, so it can be used to set levels by a key. This is
used to track the list of col/row levels using an attached FacetGrid
object, but it's kind of messy and ideally fixed by improving the
faceting logic so it interfaces better with the modern approach to
tracking plot variables.

r6   Ú_mapN)rì   rë   r2   rè   )r   rí   Úmap_objs      r   Ú
var_levelsÚVectorPlotter.var_levelsˆ  sP   € ð —>”>ˆCÜ" 4¨1¨S¨E°¨¸Ó=Ð=�ÓJØ(/¯©�× Ñ  Ó%ñ "ð ×ÑÐr!   c           	     ó`  • UR                  SS5      nUR                  SS5      nUc   Uc  SU l        U R                  " U40 UD6u  pVO*SU l        [        X5      nUR                  nUR
                  nXPl        X`l        U Vs0 s H  nU[        XX   US;   a  SOSS	9_M     snU l	        U $ s  snf )
z;Define plot variables, optionally using lookup from `data`.r7   Nrã   r�   ÚlongÚxyr\   r]   )Úboolean_type)
r`   rf   Ú_assign_variables_wideformr   ÚframeÚnamesr_   rì   rÈ   rg   )	r   rp   rì   r7   rã   rý   rþ   r_   Úvs	            r   rê   ÚVectorPlotter.assign_variablesš  sÉ   € à�M‰M˜#˜tÓ$ˆØ�M‰M˜#˜tÓ$ˆà‰9˜™Ø &ˆDÔØ×:Ò:¸4ÑMÀ9ÑM‰LˆE�5ð
 !'ˆDÔÜ  Ó1ˆIØ—O‘OˆEØ—O‘OˆEàŒØŒñ ó
ò
 �ð	 Œ}Ø‘Ø*+¨t«)™Y¸ñò ñ ñ
ˆŒð ˆùò
s   ÂB+c                óŠ  • UR                  5        VVs/ s H  u  p4Uc  M
  UPM     nnn[        U5      (       a?  [        U5      S:”  a  SOSnSU S3nUSR                  S U 5       5      -  n[	        U5      eUSL =(       d    [        U5      (       + n[        U[        5      (       a  UR                  5       n	O-[        R                  " [        R                  " U[        S	95      n	[        S
 U	 5       5      (       + n
U(       a  [        R                  " 5       n0 nX¼4$ U
(       a±  [        R                  " U5      R                  5       nUR                   UR"                  R                   S.n0 n0 nS HG  nXðR$                  ;   d  M  U R$                  U   n['        UUSS 5      X¿'   XàR$                  U      XÏ'   MI     [        R                  " U5      nX¼4$ [        U[(        5      (       a?  0 n[+        U5       H,  u  nn['        USU5      n[        R                  " U5      UU'   M.     Un[        U[,        5      (       a:  UR                  5        VVs0 s H  u  nnU[        R                  " U5      _M     nnn[        R                  " USS9nUR                  5        VVs/ s H  u  p4[/        U5      S:X  d  M  UPM     nnnUU   nSSS.nSU R0                  R                  5       ;   nU(       aq  SUS'    UR2                  R4                  nUR2                  R6                  nUR2                  R9                  S5      Ul        SnUR"                  R=                  5       US'   UR>                  " S0 UD6nU(       a%  W(       a  [        R@                  " US   WW5      US'   U R0                  R                  5        H  u  nnUU   X¿'   M     0 nU R0                  R                  5        H$  u  nn['        UUSS 5      n['        USS5      XÏ'   M&     U[C        U5         nX¼4$ s  snnf s  snnf s  snnf ! [:         a    Sn Nûf = f)a­  Define plot variables given wide-form data.

Parameters
----------
data : flat vector or collection of vectors
    Data can be a vector or mapping that is coerceable to a Series
    or a sequence- or mapping-based collection of such vectors, or a
    rectangular numpy array, or a Pandas DataFrame.
kwargs : variable -> data mappings
    Behavior with keyword arguments is currently undefined.

Returns
-------
plot_data : :class:`pandas.DataFrame`
    Long-form data object mapping seaborn variables (x, y, hue, ...)
    to data vectors.
variables : dict
    Keys are defined seaborn variables; values are names inferred from
    the inputs (or None when no name can be determined).

Nru   Úsr#   zThe following variablez) cannot be assigned with wide-form data: z, c              3  ó.   #   • U  H  nS U S 3v •  M     g7f)Ú`NrS   ©Ú.0rÿ   s     r   Ú	<genexpr>Ú;VectorPlotter._assign_variables_wideform.<locals>.<genexpr>Ò  s   é € Ð8ªx¨!˜q   1�Xªxùs   ‚rY   c              3  ó†   #   • U  H7  n[        U[        5      =(       a    [        U[        [        45      (       + v •  M9     g 7fr   )rA   r   ÚstrÚbytesr  s     r   r  r  Ý  s4   é € ð 
â�ô �qœ(Ó#×G¬J°q¼3Ä¸,Ó,GÔ(GÔGÚùs   ‚?A)rá   rà   rä   ÚnameTr   r\   râ   rá   )Úvar_nameÚ
value_namerà   Úid_varsFrS   )"rÌ   r‰   r*   r+   rŠ   rA   r‚   r3   rC   Ú
atleast_1dr›   ÚobjectrE   Ú	DataFramerF   r   r  ÚindexÚflat_structurerë   r   Ú	enumerater	   rÈ   Úwide_structureÚcolumnsÚ
categoriesÚorderedÚadd_categoriesÚAttributeErrorÚ	to_seriesÚmeltÚCategoricalrB   )r   rp   rH   rI   rÿ   Úassignedr  r~   Úemptyr3   Úflatr_   rì   Ú	flat_datarþ   rí   rØ   Ú	data_dictÚir=   ÚvalÚ	wide_dataÚnumeric_colsÚmelt_kwsÚ	use_indexÚorig_categoriesÚorig_orderedÚcategory_columnsÚobjs                                r   rü   Ú(VectorPlotter._assign_variables_wideform·  sþ  € ð. #)§,¡,¤.ÔB¢.™$˜!°A—A¡.ˆÑBÜˆx�=‰=Ü˜8“} qÓ(‘¨bˆAØ*¨1¨#Ð-VÐWˆCØ�4—9‘9Ñ8©xÓ8Ó8Ñ8ˆCÜ˜S“/Ð!ð ˜�×-¤C¨£I¤ˆô �dœD×!Ñ!Ø—[‘[“]‰Fä—]’]¤2§:¢:¨d¼&Ñ#AÓBˆFÜñ 
áó
ó 
ô 
ˆö
 ô Ÿš›ˆIØˆIðz Ð#Ð#öw ô
 Ÿ	š	 $›×,Ñ,Ó.ˆIà$Ÿ>™>Ø#Ÿ/™/×.Ñ.ñˆEð
 ˆIØˆIã!�Ø×-Ñ-Õ-Ø×.Ñ.¨sÑ3�DÜ%,¨Y¸¸Q¸R¸Ó%A�I‘NØ%*×+>Ñ+>¸sÑ+CÑ%D�I“Nñ	 "ô Ÿš YÓ/ˆIðN Ð#Ð#ô} ˜$¤×)Ñ)Ø�	Ü'¨žo‘F�A�sÜ! # v¨qÓ1�Cô &(§Y¢Y¨s£^�I˜c“Nñ	 .ð !�ô ˜$¤×(Ñ(Ø<@¿J¹J¼LÔIºL±°°S˜œRŸYšY s›^Ò+¹L�ÑIô Ÿš T°Ñ5ˆIð (Ÿo™oÔ/ôÚ/‘d�a´=ÀÓ3CÀyÑ3P—Ñ/ð ñ ð " ,Ñ/ˆIð %/¸iÑHˆHØ  D×$7Ñ$7×$>Ñ$>Ó$@Ñ@ˆIÞØ&.�˜Ñ#ð,Ø&/×&7Ñ&7×&BÑ&B�OØ#,×#4Ñ#4×#<Ñ#<�LØ(1×(9Ñ(9×(HÑ(HÈÓ(R�IÔ%ð (,Ð$Ø&/§o¡o×&?Ñ&?Ó&A�	˜(Ñ#à!ŸšÑ2¨Ñ2ˆIæÖ-Ü(*¯ª°yÀÑ7LØ7FØ7Có)E�	˜*Ñ%ð
 "×0Ñ0×6Ñ6Ö8‘	��TØ!*¨4¡�	“ñ 9ð ˆIØ!×0Ñ0×6Ñ6Ö8‘	��TÜ˜i¨¨a¨b¨Ó2�Ü!(¨¨f°dÓ!;�	“ñ 9ð
 "¤$ y£/Ñ2ˆIàÐ#Ð#ùók CùóH Jùóøô &ó -Ø',Ò$ð-ús/   ”	P!¡P!É$P'Ê"P-Ê;P-Ë8AP3 Ð3QÑQc                ó*   • [        XX#U5      nXPl        g r   )rU   Ú_hue_map)r   rl   ro   rm   rk   Úmappings         r   Úmap_hueÚVectorPlotter.map_hueE  s   € Ü˜T¨E¸ÓDˆØ�r!   c                ó(   • [        XX#5      nX@l        g r   )r¢   Ú	_size_map)r   r¦   ro   rm   r1  s        r   Úmap_sizeÚVectorPlotter.map_sizeI  s   € Ü˜d¨5Ó7ˆØ �r!   c                ó(   • [        XX#5      nX@l        g r   )rÁ   Ú
_style_map)r   rÄ   rÅ   ro   r1  s        r   Ú	map_styleÚVectorPlotter.map_styleM  s   € Ü˜t¨fÓ<ˆØ!�r!   FT)ÚreverseÚfrom_comp_dataÚby_facetÚallow_emptyrœ   c             #  ó  #   • Uc  / nO9[        U[        5      (       a  U/nO [        U[        5      (       a  [        U5      nU(       a7  SS1nUR	                  U[        U R                  5      [        U5      -
  -  5        U Vs/ s H  oˆU R                  ;   d  M  UPM     nnU(       a  U R                  n	OU R                  n	U(       a  U	R                  5       n	U R                  R                  5       n
U(       aÐ  SS1[        U5      -   H¼  nU R                  U   R                  S   nU R                  U   S:X  aU  U R                  U   (       a  UR!                  X«   5      X«'   M]  ["        R$                  " X›   R'                  5       5      X«'   M‡  UR)                  5       R*                  nU" UR!                  X«   5      5      X«'   M¾     U(       aü  U	R-                  USSSS	9n/ nU H*  nU
R/                  U5      nUR1                  Uc  / OU5        M,     [2        R4                  " U6 nU(       a  [7        [        U5      5      nU Hƒ  n[9        U5      S
:X  a  [;        [<        S5      (       a  US   OUn UR?                  U5      nURD                  (       a	  U(       d  MZ  [G        [I        UU5      5      nUUR                  5       4v •  M…     g0 U	R                  5       4v •  gs  snf ! [@         a    U	RB                  /    n N}f = f7f)a`  Generator for getting subsets of data defined by semantic variables.

Also injects "col" and "row" into grouping semantics.

Parameters
----------
grouping_vars : string or list of strings
    Semantic variables that define the subsets of data.
reverse : bool
    If True, reverse the order of iteration.
from_comp_data : bool
    If True, use self.comp_data rather than self.plot_data
by_facet : bool
    If True, add faceting variables to the set of grouping variables.
allow_empty : bool
    If True, yield an empty dataframe when no observations exist for
    combinations of grouping variables.
dropna : bool
    If True, remove rows with missing data.

Yields
------
sub_vars : dict
    Keys are semantic names, values are the level of that semantic.
sub_data : :class:`pandas.DataFrame`
    Subset of ``plot_data`` for this combination of semantic values.

NÚcolÚrowr7   rã   r   r]   F)r•   Úas_indexÚobservedru   z2.2.0)%rA   r
  r™   rB   Úextendrˆ   rì   Ú	comp_datar_   rœ   rö   r   Ú
convertersÚilocrg   ré   Úconvert_unitsrC   r•   r–   rÐ   Ú	transformÚgroupbyr`   rÑ   r-   ÚproductÚreversedr*   r   rE   Ú	get_grouprv   Úlocr   r‚   r,   )r   Úgrouping_varsr<  r=  r>  r?  rœ   Ú
facet_varsrí   rp   r2   ÚaxisÚ	converterrJ  Úgrouped_dataÚgrouping_keysr=   Ú	iter_keysÚpd_keyÚdata_subsetÚsub_varss                        r   Ú	iter_dataÚVectorPlotter.iter_dataQ  s§  é € ðF Ñ Ø‰MÜ˜¤s×+Ñ+Ø*˜O‰MÜ˜¤u×-Ñ-Ü  Ó/ˆMö Ø ˜ˆJØ× Ñ ØœS §¡Ó0´3°}Ó3EÑEÑEôñ
 )6ÓOª ÀÇÁÑ9NŸ©ˆÐOæØ—>‘>‰Dà—>‘>ˆDæØ—;‘;“=ˆDà—‘×%Ñ%Ó'ˆÞØ˜c˜
¤S¨Ó%7Ô7�Ø ŸO™O¨DÑ1×6Ñ6°qÑ9�	Ø—>‘> $Ñ'¨=Ó8Ø×(Ñ(¨×.ð
 (1×'>Ñ'>¸v¹|Ó'L˜›ô (*§w¢w¨t©z×/@Ñ/@Ó/BÓ'C˜›à )× 7Ñ 7Ó 9× CÑ C�IÙ#,¨Y×-DÑ-DÀVÁ\Ó-RÓ#S�F“Lñ 8ö" àŸ<™<Ø E°EÀEð (ð ˆLð ˆMÛ$�Ø—j‘j “o�Ø×$Ñ$¨3©;¡R¸CÖ@ñ %ô "×)Ò)¨=Ð9ˆIÞÜ$¤T¨)£_Ó5�	ã �ô " #›h¨!›mÔ0AÄ"Àg×0NÑ0N�C˜’FÐTWð ð/Ø".×"8Ñ"8¸Ó"@�Kð ×$×$®[Ùä¤ M°3Ó 7Ó8�à × 0Ñ 0Ó 2Ð2Ô2ò' !ð. �d—i‘i“k�/Ó!ùòG Pøôf  ó /ð
 #'§(¡(¨2¡,’Kð/üs>   ‚BLÂK#ÂK#Â!GLÉ5K(ÊA"LË(LÌLÌLÌLc           
     óP  • [        U S5      (       d  U R                  $ [        U S5      (       Gdì  U R                  R                  SS9R                  SS/SSS	9nS
 GHµ  nX R                  ;  a  M  / nU R                  U   R                  U R                  U   SS9nU GH$  u  pVUR                  UR                  [        R                  [        R                  * /5      [        R                  5      nUR                  5       nX R                  ;   a   XfR                  U R                  U   5         n[        R                  " UR!                  U5      5      R#                  [$        5      nUR'                  5       R(                  nUR+                  [        R,                  " U" U5      UR.                  UR0                  S95        GM'     U(       a  [        R2                  " U5      n	O[        R,                  " [$        US9n	UR5                  SX)5        GM¸     Xl        U R6                  $ )zFDataframe with numeric x and y, after unit conversion and log scaling.ÚaxÚ
_comp_dataF)Údeepr7   rã   ru   Úignore)rR  ÚerrorsÚyx©r•   ©r  )rZ   r  r   )Úhasattrr_   r   Údroprì   rK  rG  ÚmaskÚisinrC   Úinfry   rœ   rö   rE   rh   rI  Úastypera   rÐ   rJ  rÑ   rF   r  r  ÚconcatÚinsertr^  )
r   rF  rí   ÚpartsÚgroupedrS  ÚorigÚcomprJ  Úcomp_cols
             r   rF  ÚVectorPlotter.comp_dataÈ  s¨  € ô �t˜T×"Ñ"ð
 —>‘>Ð!ä�t˜\×*Ò*ð —‘ß‘˜5�Ð!ß‘�s˜C�j q°�Ð:ð ô �ØŸn™nÓ,Ùà�ØŸ.™.¨Ñ-×5Ñ5°d·o±oÀcÑ6JÐQVÐ5ÐW�Ü'.‘O�IØŸ9™9 T§Y¡Y´·±¼¿¹¸Ð/@Ó%AÄ2Ç6Á6ÓJ�DØŸ;™;›=�DØŸo™oÓ-ð  $§I¡I¨d¯o©o¸cÑ.BÓ$CÑD˜ÜŸ=š=¨×)@Ñ)@ÀÓ)FÓG×NÑNÌuÓU�DØ )× 7Ñ 7Ó 9× CÑ C�IØ—L‘L¤§¢©9°T«?¸D¿J¹JÈTÏYÉYÑ!W×Xñ (/ö Ü!Ÿyšy¨Ó/‘Hä!Ÿyšy¬u¸3Ñ?�HØ× Ñ   C×2ñ+ ð. (ŒOà�‰Ðr!   c                óX  • UR                  SS5      nUR                  SS5      nUb  Ub  U R                  R                  X#4   $ Ub  U R                  R                  U   $ Ub  U R                  R                  U   $ U R                  c  U R                  R                  $ U R                  $ )z>Return an Axes object based on existence of row/col variables.rB  NrA  )r`   ÚfacetsÚ	axes_dictr]  )r   rY  rB  rA  s       r   Ú	_get_axesÚVectorPlotter._get_axesõ  s–   € à�l‰l˜5 $Ó'ˆØ�l‰l˜5 $Ó'ˆØ‰?˜s™Ø—;‘;×(Ñ(¨#¨Ñ4Ð4Ø‰_Ø—;‘;×(Ñ(¨Ñ-Ð-Ø‰_Ø—;‘;×(Ñ(¨Ñ-Ð-Ø�W‰W‰_Ø—;‘;—>‘>Ð!à—7‘7ˆNr!   c                ó$  • SSK Jn  [        X5      (       at  SU l        Xl        UR
                  R                  5       nUR                  b  UR                  U R                  S'   UR                  b  UR                  U R                  S'   OXl        SU l        U/n[        S5      R                  U R                  5      nUc  / SQnO[        U[        5      (       a  U/nU H.  nU R                  U   nX‚;  d  M  SU S	U S
U S3n	[        U	5      e   SSS.n
0 U l        U GHò  nSSS.U   n["        R$                  " U R&                  R(                  U[*        S9n[-        U R                  SU 3S5      nUSL d  XÚU   :X  a   [-        US   U S35      UR.                  SS& O×USL aQ  U R1                  5        H<  u  pïU R3                  U5      n[-        UU S35      UR.                  UR(                  '   M>     O�[-        U R                  U S35      n[5        U5       HY  u  nnUS:X  a  US4OSU4n[-        U R                  R
                  U   U S35      nUUR.                  U R&                  U   U:H  '   M[     XÀR                   U'   U R&                  U   R7                  U R                   U   SS9nU H\  u  nnU R                  U   S:X  a2  U R8                  U   (       a  U R                  U   nOSn[;        UU5      nUR=                  U5        M^     GMõ     Uc  S=nnO Uu  nn[A        SUU45       H>  u  nnU(       d  M  U H)  n[-        USU S35      nUSL a	  U" SSS9  M!  U" SUSS9  M+     M@     U R                  R?                  SS5      S:X  a%  U H  nURB                  RE                  S5        M      gg! [         aI    U R                  R?                  S5      S:X  a  UOSnU R                  R?                  S5      S:X  a  UOSn Nèf = f)a=  Associate the plotter with an Axes manager and initialize its units.

Parameters
----------
obj : :class:`matplotlib.axes.Axes` or :class:'FacetGrid`
    Structural object that we will eventually plot onto.
allowed_types : str or list of str
    If provided, raise when either the x or y variable does not have
    one of the declared seaborn types.
log_scale : bool, number, or pair of bools or numbers
    If not False, set the axes to use log scaling, with the given
    base or defaulting to 10. If a tuple, interpreted as separate
    arguments for the x and y axes.

ru   )Ú	FacetGridNrA  rB  rú   ©r\   r   r]   r&   z variable is z, but one of z is requiredrä   rã   r7   )r  r  rZ   Ú_shareTr   rR  FÚ_namesrc  r]   r\   Úset_ÚscaleÚlogrg  )Únonpositive)Úbaser€  )#Úaxisgridry  rA   r]  rt  ÚaxesÚflattenÚ	col_namesrö   Ú	row_namesrˆ   Úintersectionrì   r
  rg   rz   rG  rE   rF   r_   r  r  rë   rO  rZ  rv  r  rK  ré   r‡   Úupdate_unitsr`   r,   ÚyaxisÚset_inverted)r   r-  Úallowed_typesÚ	log_scalery  Úax_listÚaxis_variablesrí   rƒ   r~   Ú	facet_dimÚ	other_varrS  Úshare_stateÚ	axes_varsÚ	axes_datar]  rþ   r$  ÚlevelÚidxrR  rn  Ú	seed_dataro   ÚscalexÚscaleyr~  Ú	set_scales                                r   Ú_attachÚVectorPlotter._attach  sü  € õ* 	(Ü�c×%Ñ%ØˆDŒGØŒKØ—h‘h×&Ñ&Ó(ˆGØ�}‰}Ñ(Ø),¯©�—‘ Ñ&Ø�}‰}Ñ(Ø),¯©�—‘ Ñ&øàŒGØˆDŒKØ�eˆGô ˜T›×/Ñ/°·±Ó?ˆð Ñ ÚB‰MÜ˜¤s×+Ñ+Ø*˜OˆMã!ˆCØ—~‘~ cÑ*ˆHØÕ,à˜3˜%˜}¨X¨J°mØ$�o \ð3ð ô   “nÐ$ñ "ð   eÑ,ˆ	àˆŒÜ!ˆCØ!¨Ñ,¨SÑ1ˆIäŸ	š	¨¯©×(<Ñ(<À3ÌfÑUˆIÜ! $§+¡+°¸°u¨~¸tÓDˆKð
 ˜dÒ" k¸yÑ5IÓ&IÜ#*¨7°1©:¸#¸¸d°|Ó#D�	—‘™aÑ ð  %Ò'Ø04·±Ö0@Ñ,˜	Ø!Ÿ^™^¨IÓ6˜Ü9@ÀÈÀuÈDÀ\Ó9R˜	Ÿ™ i§o¡oÓ6ò 1Aô $ D§K¡K°K°=ÀÐ1GÓH�EÜ$-¨eÖ$4™˜˜5Ø(3°uÓ(<˜q !™fÀ1ÀaÀ&˜Ü& t§{¡{×'7Ñ'7¸Ñ'<ÀÀÀT¸lÓK˜ØNR˜	Ÿ™ d§n¡n°[Ñ&AÀUÑ&JÓKñ %5ð $-�O‰O˜CÑ ð —n‘n SÑ)×1Ñ1°$·/±/À#Ñ2FÈUÐ1ÐSˆGÛ(/Ñ$�	˜9Ø—>‘> #Ñ&¨-Ó7Ø×(Ñ(¨×-Ø $§¡°Ñ 4™à $˜Ü 1°)¸UÓ C�IØ×&Ñ& yÖ1ô )0ñK "ðb ÑØ#Ð#ˆF‘VðVØ!*‘�˜ô ˜t f¨fÐ%5Ö6‰KˆD�%ßˆuÛ!�BÜ '¨¨d°4°&¸Ð,>Ó ?�IØ ’}Ù! %°VÔ<á! %¨eÀÔHó "ñ 7ð �>‰>×Ñ˜c 4Ó(¨MÓ9Û�Ø—‘×%Ñ% dÖ+ò ð :øô ó VØ&*§n¡n×&8Ñ&8¸Ó&=ÀÓ&J™ÐPU�Ø&*§n¡n×&8Ñ&8¸Ó&=ÀÓ&J™ÐPU’ðVús   Ì!N< Î<APÐPc                óà  • U R                   c‹  U R                  R                  R                   Vs/ s H  n[	        X! S35      PM     nnU Vs1 s H  oR                  5       iM     nn[        U5      S:”  a  Sn[        U5      eUS   R                  5       nO'[	        U R                   U S35      R                  5       nUR                  UR                  5       R                  4$ s  snf s  snf )zDReturn a function implementing the scale transform (or its inverse).rR  ru   z=Cannot determine transform with mixed scales on faceted axes.r   )r]  rt  rƒ  r!  rë   Ú	get_scaler*   ÚRuntimeErrorrÐ   rJ  Úinverted)r   rR  r]  Ú	axis_listÚscalesr~   Útransform_objs          r   Ú_get_scale_transformsÚ#VectorPlotter._get_scale_transforms�  sÏ   € à�7‰7‰?Ø>B¿k¹k×>NÑ>N×>SÒ>SÓTÒ>S¸œ  v¨T ]Ö3Ñ>SˆIÐTÙ3<Ó=²9¨4—n‘nÖ&±9ˆFÐ=Ü�6‹{˜Q‹ð V�Ü" 3Ó'Ð'Ø% a™L×6Ñ6Ó8‰Mô $ D§G¡G°¨v°T¨]Ó;×IÑIÓKˆMà×&Ñ&¨×(>Ñ(>Ó(@×(JÑ(JÐJÐJùò# UùÚ=s   °C&ÁC+c                ó‚  • UR                  5       (       dJ  [        S UR                  5        5       5      nUR                  U R                  R                  SU5      US9  UR                  5       (       dK  [        S UR                  5        5       5      nUR                  U R                  R                  SU5      US9  gg)zCAdd axis labels if not present, set visibility to match ticklabels.c              3  ó@   #   • U  H  oR                  5       v •  M     g 7fr   ©Úget_visible©r  Úts     r   r  Ú1VectorPlotter._add_axis_labels.<locals>.<genexpr>¬  ó   é € ÐJÒ5I°ŸM™MŸO˜OÒ5Iùó   ‚r7   )Úvisiblec              3  ó@   #   • U  H  oR                  5       v •  M     g 7fr   r§  r©  s     r   r  r«  ¯  r¬  r­  rã   N)	Ú
get_xlabelr‰   Úget_xticklabelsÚ
set_xlabelrì   r`   Ú
get_ylabelÚget_yticklabelsÚ
set_ylabel)r   r]  Ú	default_xÚ	default_yÚ	x_visibleÚ	y_visibles         r   Ú_add_axis_labelsÚVectorPlotter._add_axis_labels¥  s“   € ð �}‰}�‰ÜÑJ°R×5GÑ5GÔ5IÓJÓJˆIØ�M‰M˜$Ÿ.™.×,Ñ,¨S°)Ó<ÀiˆMÑPØ�}‰}�‰ÜÑJ°R×5GÑ5GÔ5IÓJÓJˆIØ�M‰M˜$Ÿ.™.×,Ñ,¨S°)Ó<ÀiˆMÒPð r!   c                ó|  ^ ^^• T R                   n[        U[        5      (       a  US;  a  Sn[        U5      eUSL a  Sn/ m0 mUc  0 OUR	                  5       nUc  0 OUR	                  5       nU 4S jS 5        Vs1 s H
  nUc  M  UiM     n	n[        U	5      S:w  a  S	OU	R                  5       n[        S
SSSS	S	S9n
UU4S jnUc  SSS/SS.nUR                  5        H(  u  pÍT R                  X¼XhX­UR                  U5      5        M*     0 n/ nUR                  SS
5      c  UR                  S5        T GHc  nUu  nnTU   n0 n/ T R                  QUQUR                  5        VVs/ s H  nU  H  nUPM     M     snnQnU H  nUU;   d  M  UU   UU'   M     U" SSU0SS0UEUED6n[        [        S5      (       a±  [        U[        R                  R                   5      (       a  UR#                  U5        O‡[        U[        R$                  R&                  5      (       a  UR)                  U5        OL[        U[        R*                  R,                  5      (       a  UR/                  U5        OUR1                  U5        UUU'   UR3                  U5        GMf     UT l        UT l        UT l        gs  snf s  snnf )z>Add labeled artists to represent the different plot semantics.)ÚautoÚbriefÚfullz7`legend` must be 'auto', 'brief', 'full', or a boolean.Tr½  Nc              3  ó\   >#   • U  H!  nTR                   R                  US 5      v •  M#     g 7fr   )rì   r`   )r  rÿ   r   s     €r   r  Ú0VectorPlotter.add_legend_data.<locals>.<genexpr>Ç  s'   øé € ÐKÒ2J¨QˆT�^‰^×Ñ  4×(Ð(Ò2Jùs   ƒ),ræ   ru   r#   FÚwr   )r®  Úcolorr  Ú	linewidthrÆ   rÅ   c                ó‚   >• X4nUT;   a  TU   R                   " S0 UD6  g TR                  U5        [        S0 UD6TU'   g )NrS   )ÚupdaterÑ   r‚   )r  Úval_nameÚkwsr=   ÚkeysÚ
legend_kwss       €€r   rÆ  Ú-VectorPlotter.add_legend_data.<locals>.updateÏ  sC   ø€ àÐ$ˆCØ�jÓ Ø˜3‘×&Ò&Ñ-¨Ó-à—‘˜CÔ Ü"&¡+¨¡+�
˜3’r!   rÃ  rÄ  r  Úlabelz.2z3.5.0rS   )ÚlegendrA   r
  rŠ   r   r*   Úpopr‚   rÌ   Ú_update_legend_datar`   Ú_legend_attributesr3   r   r“   ÚlinesÚLine2DÚadd_lineÚpatchesÚPatchÚ	add_patchÚcollectionsÚ
CollectionÚadd_collectionÚ
add_artistrÑ   Úlegend_titleÚlegend_dataÚlegend_order)r   r]  ÚfuncÚ
common_kwsÚattrsÚsemantic_kwsÚ	verbosityr~   ÚtitleÚtitlesÚ	title_kwsrÆ  rí   rþ   rÜ  rÝ  r=   r6   rÌ  rÈ  Ú	level_kwsÚ	var_attrsrØ   Ú	use_attrsÚartistrÉ  rÊ  s   `                        @@r   Úadd_legend_dataÚVectorPlotter.add_legend_data²  s¿  ú€ ð —K‘Kˆ	Ü�i¤×%Ñ%¨)Ð;TÓ*TØKˆCÜ˜S“/Ð!Ø˜$ÒØˆIàˆØˆ
Ø%Ñ-‘R°:·?±?Ó3Dˆ
Ø)Ñ1‘r°|×7HÑ7HÓ7Jˆô LÑ2JÔKó
âKð à÷ ÙKð 	ð 
ô
 ˜&“k QÓ&‘¨F¯J©J«LˆÜØ ¨°Q¸rÈ"ñ
ˆ	ö	.ð ‰=Ø#¨k¸3Ð-?È$ÑOˆEØŸ+™+ž-‰JˆCØ×$Ñ$Ø˜Y¨yÀ×AQÑAQÐRUÓAVöñ (ð
 ˆØˆð �>‰>˜' 5Ó)Ñ1Ø�N‰N˜7Ô#äˆCà‰HˆAˆuØ˜S‘/ˆCØˆIðØ×(Ñ(ðàðð )5×(;Ñ(;Ô(=ÔTÒ(=˜9Ì)À$“$É)‘$Ñ(=ÒTðˆIó
 "�Ø˜3•;Ø&)¨$¡i�I˜d“Oñ "ñ ÑT ÐT¨'°4Ð)S¸:Ð)SÈÐ)SÑTˆFÜ ¤ g×.Ñ.Ü˜f¤c§i¡i×&6Ñ&6×7Ñ7Ø—K‘K Õ'Ü ¬¯©×(9Ñ(9×:Ñ:Ø—L‘L Õ(Ü ¬¯©×(BÑ(B×CÑCØ×%Ñ% fÔ-øà—‘˜fÔ%Ø%ˆK˜ÑØ×Ñ ×$ñ1 ð4 "ˆÔØ&ˆÔØ(ˆÕùò{
ùóR Us   Á;J3ÂJ3Å'J8
c           
     ó¬  • Sn[        U SU S3S5      n	U	c  gU	R                  S:H  =(       a0    US:H  =(       d$    US:H  =(       a    [        U	R                  5      U:„  n
U
(       aÌ  [	        U	R
                  [        R                  R                  5      (       a  [        R                  R                  US9nO[        R                  R                  US	9n[        U	R                  5      [        U	R                  5      4n[        X¼U R                  U   R!                  5       R"                  5      u  pÞOU	R                  c  / =pÞOU	R                  =pÞU(       dC  U R$                  R'                  US5      b&  U" U R$                  U   S
4U R$                  U   40 UD6  Uc  0 OUn[)        XÞ5       H›  u  nnUc  M  U	" U5      n[	        U[*        5      (       a  U Vs0 s H  nUU_M     nnOUb  UU0nUR-                  UR/                  5        VVs0 s H  u  nnUU;   d  M  UUU   _M     snn5        U" U R$                  U   U40 UD6  M�     gs  snf s  snnf )z1Generate legend tick values and formatted labels.r'   r6   rô   Nr\   r¾  r½  )Únumticks)Únbinsrã  )rë   r   r*   r2   rA   rm   r“   rŽ   ÚLogNormÚtickerÚ
LogLocatorÚMaxNLocatorr·   r¸   r   r_   Úinfer_objectsrZ   rì   r`   r,   rB   rÆ  rÌ   )r   rÆ  rí   râ  rã  rå  Ú
attr_namesÚother_propsÚbrief_ticksÚmapperr¾  ÚlocatorÚlimitsr2   Úformatted_levelsr”  Úformatted_levelrØ   r  rI   rÿ   s                        r   rÏ  Ú!VectorPlotter._update_legend_data  s$  € ð ˆÜ˜  3 % t˜}¨dÓ3ˆØ‰>Øà—‘ 9Ñ,÷ 
Ø˜Ñ ÷ JØ˜VÑ#×H¬¨F¯M©MÓ(:¸[Ñ(Hð 	ö Ü˜&Ÿ+™+¤s§z¡z×'9Ñ'9×:Ñ:ÜŸ*™*×/Ñ/¸Ð/ÐE‘äŸ*™*×0Ñ0°{Ð0ÐC�Ü˜Ÿ™Ó'¬¨V¯]©]Ó);Ð;ˆFÜ'@Ø §¡°Ñ!4×!BÑ!BÓ!D×!JÑ!Jó(Ñ$ˆFÐ$ð �]‰]Ñ"Ø(*Ð*ˆFÐ%à(.¯©Ð5ˆFæ˜Ÿ™×+Ñ+¨C°Ó6ÑBÙ�D—N‘N 3Ñ'¨Ð1°4·>±>À#Ñ3FÑTÈ)ÒTà'Ñ/‘b°[ˆä&)¨&Ö&CÑ"ˆE�?ØÓ Ù˜e“}�Ü˜j¬$×/Ñ/Ù3=Ó>²:¨4˜D $šJ±:�DÐ>�DØÑ+Ø&¨Ð-�DØ—‘°[×5FÑ5FÔ5HÔWÒ5H©T¨Q°ÈEÐUVÉJ›[˜Q  %¡š[Ñ5HÒWÔXÙ�t—~‘~ cÑ*¨OÑD¸tÔDò 'Dùò ?ùó Xs   ÇIÈIÈ
Ic                ó   • [         er   ©ÚNotImplementedError©r   rR  rG   rH   s       r   Úscale_nativeÚVectorPlotter.scale_native:  s
   € ô "Ð!r!   c                ó   • [         er   rþ  r   s       r   Úscale_numericÚVectorPlotter.scale_numeric@  ó
   € ô
 "Ð!r!   c                ó   • [         er   rþ  r   s       r   Úscale_datetimeÚVectorPlotter.scale_datetimeG  r  r!   c                óÎ  • [        SSS/U5        XR                  ;  a-  SU R                  U'   SU R                  U'   SU R                  U'   U R                  U   S:X  a  U R                  R	                  USS	9U l        U R                  U   R                  5       nUSL=(       d    UR                  R                  S
:H  U R                  U'   [        R                  " [        XB5      US9nUb#  UR                  U5      nUR                  U5      nO*UR                  [        5      nUR                  [        5      nX R                  U'   SU R                  U'   X@R                  U'   U $ )a2  
Enforce categorical (fixed-scale) rules for the data on given axis.

Parameters
----------
axis : "x" or "y"
    Axis of the plot to operate on.
order : list
    Order that unique values should appear in.
formatter : callable
    Function mapping values to a string representation.

Returns
-------
self

rR  r7   rã   Nr]   r#   r\   Ú	mergesort)ÚkindÚcategoryrd  )r   rì   rg   r_   Úsort_valuesrœ   rZ   r  ré   rE   ÚIndexr‡   Úmaprj  r
  rö   )r   rR  ro   Ú	formatterÚcat_datas        r   Úscale_categoricalÚVectorPlotter.scale_categoricalN  sD  € ôT 	˜  c 
¨DÔ1ð —~‘~Ó%Ø#'ˆD�N‰N˜4Ñ Ø#0ˆD�N‰N˜4Ñ Ø#%ˆD�N‰N˜4Ñ ð �>‰>˜$Ñ 9Ó,Ø!Ÿ^™^×7Ñ7¸À;Ð7ÐOˆDŒNð —>‘> $Ñ'×.Ñ.Ó0ˆð #(¨tÐ"3×"X°x·~±~×7JÑ7JÈjÑ7Xˆ×Ñ˜$ÑÜ—’Ô*¨8Ó;À$ÑGˆð Ñ Ø—|‘| IÓ.ˆHØ—I‘I˜iÓ(‰Eà—‘¤sÓ+ˆHØ—L‘L¤Ó%ˆEð !&�‰˜Ñð  -ˆ�‰�tÑð  (�‰�tÑàˆr!   )r^  r0  r5  r9  rè   ré   r]  rG  rt  rf   rÜ  rÝ  rÛ  r_   rg   rì   r   rž   r¿   )NN)r#   r#   )rL   rM   rN   rO   rP   r  r  r³   r   Úpropertyrñ   rö   rê   rü   r2  r6  r:  rZ  rF  rv  rš  r£  rº  rê  rÏ  r  r  r  r  rR   rS   r!   r   rß   rß   h  sú   † Ù<ð ˜I¨jÀ:ñ€Nð $¨)Ñ4€NàÐà ¨Bô .ð" ñ6ó ð6ð ñ ó ð ð" %)°Bô ô:L$ô\ ô!ô"ð
 !ðu"à eØ 5°öu"ðn ñ*ó ð*òXð$ Øô	G,òVKô,Qð CGôP)òd/Eòl"ò"ò"÷[r!   rß   c                  ó6   ^ • \ rS rSrSrSrU 4S jrS rSrU =r	$ )ÚVariableTypei¬  zÈ
Prevent comparisons elsewhere in the library from using the wrong name.

Errors are simple assertions because users should not be able to trigger
them. If that changes, they should be more verbose.

rz  c                óP   >• XR                   ;   d   U5       e[        TU ]	  U5        g r   )Úallowedr^   r   )r   rp   rr   s     €r   r   ÚVariableType.__init__·  s%   ø€ Ø—|‘|Ó#Ð) TÓ)Ð#Ü‰Ñ˜Õr!   c                óL   • XR                   ;   d   U5       eU R                  U:H  $ r   )r  rp   )r   Úothers     r   Ú__eq__ÚVariableType.__eq__»  s&   € ØŸ™Ó$Ð+ eÓ+Ð$Ø�y‰y˜EÑ!Ð!r!   rS   )
rL   rM   rN   rO   rP   r  r   r  rR   rŸ   r    s   @r   r  r  ¬  s   ø† ñð 3€Gõ÷"ð "r!   r  c                óÄ  • [         R                  " U 5      n [        U R                  [         R                  5      (       a  [        S5      $ [         R                  " U 5      R                  5       (       a  [        S5      $ U R                  5       n [        R                  " 5          [        R                  " S[        [        4S9   [        R                  " U SS/5      R                  5       (       a  [        U5      sSSS5        $  SSS5        [         R"                  R$                  R'                  U 5      (       a  [        S5      $ [         R"                  R$                  R)                  U 5      (       a  [        S5      $ S	 nU" U 5      (       a  [        S5      $ S
 nU" U 5      (       a  [        S5      $ [        S5      $ ! [          a     NÇf = f! , (       d  f       NÑ= f)aç  
Determine whether a vector contains numeric, categorical, or datetime data.

This function differs from the pandas typing API in two ways:

- Python sequences or object-typed PyData objects are considered numeric if
  all of their entries are numeric.
- String or mixed-type data are considered categorical even if not
  explicitly represented as a :class:`pandas.api.types.CategoricalDtype`.

Parameters
----------
vector : :func:`pandas.Series`, :func:`numpy.ndarray`, or Python sequence
    Input data to test.
boolean_type : 'numeric' or 'categorical'
    Type to use for vectors containing only 0s and 1s (and NAs).

Returns
-------
var_type : 'numeric', 'categorical', or 'datetime'
    Name identifying the type of data in the vector.
r]   r\   r`  )Úactionr  r   ru   Nr   c                óD   • U  H  n[        U[        5      (       a  M    g   g©NFT)rA   r
   ©r7   Úx_is     r   Úall_numericÚ"variable_type.<locals>.all_numeric  s!   € ÛˆCÜ˜c¤6×*Ó*Ùñ ð r!   c                ód   • U  H*  n[        U[        [        R                  45      (       a  M*    g   gr"  )rA   r   rC   Ú
datetime64r#  s     r   Úall_datetimeÚ#variable_type.<locals>.all_datetime  s*   € ÛˆCÜ˜c¤H¬b¯m©mÐ#<×=Ó=Ùñ ð r!   )rE   rF   rA   rZ   ÚCategoricalDtyper  rc   rd   rœ   r/   Úcatch_warningsÚsimplefilterÚFutureWarningÚDeprecationWarningrC   rh  rz   ÚapiÚtypesÚis_numeric_dtypeÚis_datetime64_dtype)Úvectorrû   r%  r)  s       r   rÈ   rÈ   À  s|  € ô. �YŠY�vÓ€Fô �&—,‘,¤× 3Ñ 3×4Ñ4Ü˜MÓ*Ð*ô 
‡w‚wˆvƒ×Ñ×ÑÜ˜IÓ&Ð&ð �]‰]‹_€Fô 
×	 Ò	 Õ	"Ü×ÒØ¤}Ô6HÐ&Iò	
ð	Ü�wŠw�v  1˜vÓ&×*Ñ*×,Ñ,Ü# LÓ1÷ 
#Ñ	"ð
 -÷ 
#ô 
‡v�v‡|�|×$Ñ$ V×,Ñ,Ü˜IÓ&Ð&ä	‡v�v‡|�|×'Ñ'¨×/Ñ/Ü˜JÓ'Ð'òñ �6×ÑÜ˜IÓ&Ð&òñ �F×ÑÜ˜JÓ'Ð'ô ˜Ó&Ð&øôM ó 	ñ ð	ú÷ 
#Õ	"ús0   Â$ GÃ6GÄGÇ
GÇGÇGÇGÇ
Gc                ó  • U c  SO
[        U 5      nUc  SO
[        U5      nSnSnU cn  [        U5      R                  S5      (       a&  [        R                  " UR                  SS5      5        U(       a!  US:w  a  [        UR                  SS5      5      eg	Ucn  [        U5      R                  S
5      (       a&  [        R                  " UR                  SS	5      5        U(       a!  US:w  a  [        UR                  SS	5      5      eg[        U5      R                  S
5      (       d  US	:X  a)  U(       a!  US:w  a  [        UR                  SS5      5      eg	[        U5      R                  S5      (       d  US:X  a)  U(       a!  US:w  a  [        UR                  SS	5      5      egUb  S[        U5       S3n[        U5      eUS:w  a  US:X  a  gUS:w  a  US:X  a  g	US:X  a  US:w  a  gU(       a  SXE4;  a  Sn[        U5      eg	)a  Determine how the plot should be oriented based on the data.

For historical reasons, the convention is to call a plot "horizontally"
or "vertically" oriented based on the axis representing its dependent
variable. Practically, this is used when determining the axis for
numerical aggregation.

Parameters
----------
x, y : Vector data or None
    Positional data vectors for the plot.
orient : string or None
    Specified orientation. If not None, can be "x" or "y", or otherwise
    must start with "v" or "h".
require_numeric : bool
    If set, raise when the implied dependent variable is not numeric.

Returns
-------
orient : "x" or "y"

Raises
------
ValueError: When `orient` is an unknown string.
TypeError: When dependent variable is not numeric, with `require_numeric`

Nz.{} orientation requires numeric `{}` variable.z0{} orientation ignored with only `{}` specified.ÚhÚ
Horizontalrã   r\   ÚVerticalr7   rÿ   z5`orient` must start with 'v' or 'h' or be None, but `z` was passed.r]   z7Neither the `x` nor `y` variable appears to be numeric.)	rÈ   r
  Ú
startswithr/   r0   r‹   rz   ÚreprrŠ   )	r7   rã   ÚorientÚrequire_numericÚx_typeÚy_typeÚnonnumeric_dv_errorÚsingle_var_warningr~   s	            r   Úinfer_orientrA    sé  € ð: ‘Y‰T¤M°!Ó$4€FØ‘Y‰T¤M°!Ó$4€FàJÐØKÐà�yÜˆv‹;×!Ñ! #×&Ñ&Ü�MŠMÐ,×3Ñ3°LÀ#ÓFÔGÞ˜v¨Ó2ÜÐ/×6Ñ6°zÀ3ÓGÓHÐHØà	
‰Üˆv‹;×!Ñ! #×&Ñ&Ü�MŠMÐ,×3Ñ3°JÀÓDÔEÞ˜v¨Ó2ÜÐ/×6Ñ6°|ÀSÓIÓJÐJØä	ˆV‹×	Ñ	 ×	$Ñ	$¨°#«Þ˜v¨Ó2ÜÐ/×6Ñ6°zÀ3ÓGÓHÐHØä	ˆV‹×	Ñ	 ×	$Ñ	$¨°#«Þ˜v¨Ó2ÜÐ/×6Ñ6°|ÀSÓIÓJÐJØà	Ñ	ðÜ˜“L�> ð0ð 	ô ˜‹oÐà	�=Ó	  V¨}Ó%<Øà	�9Ó	 ¨9Ó!4Øà	�9Ó	 ¨9Ó!4Øæ	˜Y¨vÐ.>Ó>ØGˆÜ˜‹nÐð r!   c                óÔ  ^• / SQnSn[        U5      U :  aÎ  [        R                  " SS/U5      n[        R                  " SS/U5      n[        R                  " [	        [        U5      SS SSS2   [        U5      SS 5      6 nU HE  n[        U5      m[        [        R                  " U4S jU 5       6 5      nUR                  U5        MG     US-  n[        U5      U :  a  MÎ  USU  $ )	a‚  Build an arbitrarily long list of unique dash styles for lines.

Parameters
----------
n : int
    Number of unique dash specs to generate.

Returns
-------
dashes : list of strings or tuples
    Valid arguments for the ``dashes`` parameter on
    :class:`matplotlib.lines.Line2D`. The first spec is a solid
    line (``""``), the remainder are sequences of long and short
    dashes.

)r#   )r[   ç      ø?)ru   ru   )é   ç      ô?rC  rE  )é   ru   ru   ru   rD  rE  r[   ru   r²   Nc              3  ó*   >#   • U  H  oT4v •  M
     g 7fr   rS   )r  ÚsegÚgaps     €r   r  Ú unique_dashes.<locals>.<genexpr>š  s   øé € Ð*JÂ¸#°­:Âùs   ƒ)	r*   r-   Úcombinations_with_replacementÚchainr,   rB   r·   r™   rÑ   )	ÚnrÅ   ÚpÚaÚbÚsegment_listÚsegmentsÚspecrI  s	           @r   rË   rË   o  sä   ø€ ò$€Fð 	
€AÜ
ˆf‹+˜‹/ô ×3Ò3°Q¸°I¸qÓAˆÜ×3Ò3°Q¸°F¸AÓ>ˆô !—’¬Ü�‹G�A�bˆM™$˜B˜$ÑÜ�‹G�A�bˆMó)
ð ˆó %ˆHÜ�h“-ˆCÜœŸšÔ*JÁÓ*JÐKÓLˆDØ�M‰M˜$Öñ %ð
 	
ˆQ‰ˆô% ˆf‹+˜�/ð( �"�1ˆ:Ðr!   c                óÆ   • / SQnSn[        U5      U :  aH  SUS-   -  S-  nUR                  US-   SU4US-   SU4USS4USS4/5        US-  n[        U5      U :  a  MH  USU  $ )a/  Build an arbitrarily long list of unique marker styles for points.

Parameters
----------
n : int
    Number of unique marker specs to generate.

Returns
-------
markers : list of string or tuples
    Values for defining :class:`matplotlib.markers.MarkerStyle` objects.
    All markers will be filled.

)	ÚoÚX)r[   r   é-   ÚP)r[   r   r   )r[   ru   r   Ú^)r[   ru   rW  rÿ   rF  ih  ru   r¯   r   N)r*   rE  )rM  rÄ   r  rO  s       r   rÊ   rÊ   ¢  s’   € ò 
€Gð 	
€AÜ
ˆg‹,˜Ó
Ø�1�q‘5‰M˜AÑˆØ�‰Ø�‰U�A�qˆMØ�‰U�A�qˆMØ��1ˆIØ��1ˆIð	
ô 	ð 	
ˆQ‰ˆô ˆg‹,˜Õ
ð �2�Aˆ;Ðr!   c                óz  • UcO  [        U S5      (       a  U R                  nO U R                  R                  n[        [
        R                  U5      n[        U5      $ ! [        [        4 aL    [
        R                  " U 5      R                  5       n[        U 5      S:X  a  [        R                  " U5      n N€f = f)a   Return a list of unique data values.

Determine an ordered list of levels in ``values``.

Parameters
----------
vector : list, array, Categorical, or Series
    Vector of "categorical" values
order : list-like, optional
    Desired order of category levels to override the order determined
    from the ``values`` object.

Returns
-------
order : list
    Ordered list of category levels not including null values.

r  r\   )re  r  Úcatrz   r  rE   rF   r–   rÈ   rC   r•   ÚfilterÚnotnullrB   )r4  ro   s     r   r‡   r‡   Ð  s™   € ð& �}Ü�6˜<×(Ñ(Ø×%Ñ%‰Eð+ØŸ
™
×-Ñ-�ô ”r—z‘z 5Ó)ˆÜ�‹;Ðøô œ~Ð.ó +äŸ	š	 &Ó)×0Ñ0Ó2�ä  Ó(¨IÓ5ÜŸGšG E›N�Eùð+ús   £A ÁAB:Â9B:)r\   )NNNTr   )+Ú
__future__r   r/   r-   r   r×  r   Úcollections.abcr   r   r	   Únumbersr
   r   ÚnumpyrC   ÚpandasrE   Ú
matplotlibr“   Úseaborn._core.datar   Úseaborn.palettesr   r   Úseaborn.utilsr   r   r   r   r   r   r   rU   r¢   rÁ   rß   r  rÈ   rA  rË   rÊ   r‡   rS   r!   r   Ú<module>rg     s«   ðÝ "Û Û Ý Ý "ß 7Ñ 7Ý Ý ã Û Û å '÷÷÷ ÷8=ñ 8=ôvO0�ô O0ôdZ6�/ô Z6ôz[�?ô [÷BAñ AôH"�:ô "ô(Y'ôxPòf0òf+õ\!r!   