ó
    |ñ:iV ã                  óô  • S SK Jr  S SKJr  S SKJr  S SK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Jr  SSKJr  SS	KJrJr  SS
KJr  SSKJrJrJrJ r J!r!  SSK"J#r#J$r$  SSK%J&r&J'r'  / SQr(\&RR                  " \'S   S9r* " S S5      r+ " S S\+5      r,\-" \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      \" S5      S 9r. " S! S"\,5      r/ " S# S$\,5      r0 " S% S&\+5      r1S'Re                  \*\'S(   S)9\1Rf                  l4        SSSSSSS*S+SS,SS-S-SSSSS..S/ jr5 S8SSSS*S0S1S2S-SSSSSSS-SSS3.S4 jjr6S5Re                  \*\'S6   \'S(   S79\6l4        g)9é    )Úannotations)Úproduct)Ú	signatureN)Údedenté   )ÚVectorPlotterÚvariable_typeÚcategorical_order)Úhandle_data_source)Ú
share_axisÚget_legend_handles)Úutils)Úadjust_legend_subtitlesÚset_hls_valuesÚ_check_argumentÚ_draw_figureÚ_disable_autolayout)Úcolor_paletteÚblend_palette)ÚDocstringComponentsÚ
_core_docs)Ú	FacetGridÚPairGridÚ	JointGridÚpairplotÚ	jointplotÚparams)Úcorec                  óP   • \ rS rSrSrS r\S 5       r\S 5       rS r	S r
S rS	rg
)Ú	_BaseGridé%   z!Base class for grids of subplots.c                ón   • U R                   R                   H  nUc  M  UR                  " S0 UD6  M     U $ )z$Set attributes on each subplot Axes.© )ÚaxesÚflatÚset)ÚselfÚkwargsÚaxs      ÚS/srv/projetos/modelo_ml_acdoc/venv/lib/python3.13/site-packages/seaborn/axisgrid.pyr&   Ú_BaseGrid.set(   s/   € à—)‘)—.”.ˆBØ‹~Ø—’Ñ ˜Ô ñ !ð ˆó    c                ó   • U R                   $ )z)DEPRECATED: prefer the `figure` property.©Ú_figure©r'   s    r*   ÚfigÚ_BaseGrid.fig/   s   € ð �|‰|Ðr,   c                ó   • U R                   $ )zHAccess the :class:`matplotlib.figure.Figure` object underlying the grid.r.   r0   s    r*   ÚfigureÚ_BaseGrid.figure8   s   € ð �|‰|Ðr,   c                ó   • U" U /UQ70 UD6  U $ )a@  
Pass the grid to a user-supplied function and return self.

The `func` must accept an object of this type for its first
positional argument. Additional arguments are passed through.
The return value of `func` is ignored; this method returns self.
See the `pipe` method if you want the return value.

Added in v0.12.0.

r#   ©r'   ÚfuncÚargsr(   s       r*   ÚapplyÚ_BaseGrid.apply=   s   € ñ 	ˆTÐ#�DÒ#˜FÒ#Øˆr,   c                ó   • U" U /UQ70 UD6$ )aO  
Pass the grid to a user-supplied function and return its value.

The `func` must accept an object of this type for its first
positional argument. Additional arguments are passed through.
The return value of `func` becomes the return value of this method.
See the `apply` method if you want to return self instead.

Added in v0.12.0.

r#   r7   s       r*   ÚpipeÚ_BaseGrid.pipeL   s   € ñ �DÐ*˜4Ò* 6Ñ*Ð*r,   c                ó€   • UR                  5       nUR                  SS5        U R                  R                  " U0 UD6  g)z³
Save an image of the plot.

This wraps :meth:`matplotlib.figure.Figure.savefig`, using bbox_inches="tight"
by default. Parameters are passed through to the matplotlib function.

Úbbox_inchesÚtightN)ÚcopyÚ
setdefaultr4   Úsavefig©r'   r9   r(   s      r*   rD   Ú_BaseGrid.savefigZ   s6   € ð —‘“ˆØ×Ñ˜-¨Ô1Ø�‰×Ò˜TÐ, VÓ,r,   r#   N)Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__r&   Úpropertyr1   r4   r:   r=   rD   Ú__static_attributes__r#   r,   r*   r    r    %   sA   † Ù+òð ñó ðð ñó ðòò+õ
-r,   r    c                  ó`   • \ rS rSrSrSrSrS rS r  SS jr	S	 r
S
 r\S 5       rSS jrSrg)ÚGridég   z>A grid that can have multiple subplots and an external legend.FTc                ó2   • / SQU l         S U l        SU l        g )N)r   r   r   r   F)Ú_tight_layout_rectÚ_tight_layout_padÚ_extract_legend_handlesr0   s    r*   Ú__init__ÚGrid.__init__l   s   € â".ˆÔØ!%ˆÔð (-ˆÕ$r,   c                óè   • UR                  5       nUR                  SU R                  5        U R                  b  UR                  SU R                  5        U R                  R
                  " U0 UD6  U $ )z:Call fig.tight_layout within rect that exclude the legend.ÚrectÚpad)rB   rC   rR   rS   r/   Útight_layoutrE   s      r*   rZ   ÚGrid.tight_layoutu   sa   € à—‘“ˆØ×Ñ˜& $×"9Ñ"9Ô:Ø×!Ñ!Ñ-Ø×Ñ˜e T×%;Ñ%;Ô<Ø�‰×!Ò! 4Ð2¨6Ò2Øˆr,   Nc                óP  • Uc  U R                   nUcT  U R                  c  [        UR                  5       5      nO-[        [	        [
        R                  U R                  5      5      n[        R                  R                  SSS9nU Vs/ s H  oqR                  Xv5      PM     nnUc  U R                  OUn[        R                  S   n	/ n
U H0  n[        U[        5      (       a  Uu  pÍOUnU
R                  U5        M2     UR!                  SS5        U R"                  (       Ga“  UR!                  SS5        UR!                  SS	5        U R$                  R&                  " XŠ40 UD6nXàl        UR+                  US
U	0S9  U(       a  [-        U5        [/        U R$                  5        UR1                  5       R2                  U R$                  R4                  -  nU R$                  R7                  5       u  nnU R$                  R9                  UU-   U5        [/        U R$                  5        UR1                  5       R2                  U R$                  R4                  -  nUUU-   -  nU R:                  (       a  SOSnUU-   U l        SU R<                  -
  nU R$                  R?                  US9  UU R@                  S'   U $ U RB                  RD                  S   nUR!                  SS5        UR&                  " XŠ40 UD6nUR+                  US
U	0S9  UU l        U(       a  [-        U5        U $ s  snf )ac  Draw a legend, maybe placing it outside axes and resizing the figure.

Parameters
----------
legend_data : dict
    Dictionary mapping label names (or two-element tuples where the
    second element is a label name) to matplotlib artist handles. The
    default reads from ``self._legend_data``.
title : string
    Title for the legend. The default reads from ``self._hue_var``.
label_order : list of labels
    The order that the legend entries should appear in. The default
    reads from ``self.hue_names``.
adjust_subtitles : bool
    If True, modify entries with invisible artists to left-align
    the labels and set the font size to that of a title.
kwargs : key, value pairings
    Other keyword arguments are passed to the underlying legend methods
    on the Figure or Axes object.

Returns
-------
self : Grid instance
    Returns self for easy chaining.

r   )ÚalphaÚ	linewidthzlegend.title_fontsizeÚscatterpointsr   ÚframeonFÚloczcenter rightÚsize)Úpropg{®Gáz¤?ç{®Gáz„?)Úrighté   Úbest)#Ú_legend_dataÚ	hue_namesÚlistÚkeysÚmapr   Úto_utf8ÚmplÚpatchesÚPatchÚgetÚ_hue_varÚrcParamsÚ
isinstanceÚtupleÚappendrC   Ú_legend_outr/   ÚlegendÚ_legendÚ	set_titler   r   Úget_window_extentÚwidthÚdpiÚget_size_inchesÚset_size_inchesÚ_margin_titlesÚ_space_neededÚsubplots_adjustrR   r$   r%   )r'   Úlegend_dataÚtitleÚlabel_orderÚadjust_subtitlesr(   Úblank_handleÚlabÚhandlesÚ
title_sizeÚlabelsÚentryÚ_ÚlabelÚ	figlegendÚlegend_widthÚ	fig_widthÚ
fig_heightÚspace_neededÚmarginre   r)   Úlegs                          r*   Ú
add_legendÚGrid.add_legend~   sÅ  € ð: ÑØ×+Ñ+ˆKØÑØ�~‰~Ñ%Ü" ;×#3Ñ#3Ó#5Ó6‘ä"¤3¤u§}¡}°d·n±nÓ#EÓF�ä—{‘{×(Ñ(¨q¸AÐ(Ð>ˆÙALÓMÂ¸#—?‘? 3Ö5ÁˆÐMØ!&¡�—’°EˆÜ—\‘\Ð"9Ñ:ˆ
ð ˆÛ ˆEÜ˜%¤×'Ñ'Ø ‘��5à�Ø�M‰M˜%Ö ñ !ð 	×Ñ˜/¨1Ô-à××Ðà×Ñ˜i¨Ô/Ø×Ñ˜e ^Ô4ð Ÿ™×+Ò+¨GÑF¸vÑFˆIà$ŒLØ×Ñ ¨V°ZÐ,@ÐÑAæÜ'¨	Ô2ô ˜Ÿ™Ô&ð %×6Ñ6Ó8×>Ñ>ÀÇÁ×AQÑAQÑQˆLØ$(§L¡L×$@Ñ$@Ó$BÑ!ˆI�zØ�L‰L×(Ñ(¨°\Ñ)AÀ:ÔNô ˜Ÿ™Ô&ð %×6Ñ6Ó8×>Ñ>ÀÇÁ×AQÑAQÑQˆLØ'¨9°|Ñ+CÑDˆLØ ×/×/‘S°SˆFØ!'¨,Ñ!6ˆDÔØ˜×*Ñ*Ñ*ˆEð �L‰L×(Ñ(¨uÐ(Ñ5Ø).ˆD×#Ñ# AÑ&ð ˆð —‘—‘ Ñ"ˆBØ×Ñ˜e VÔ,à—)’)˜GÑ6¨vÑ6ˆCØ�M‰M˜% v¨zÐ&:ˆMÑ;ØˆDŒLæÜ'¨Ô,àˆùòA Ns   Â	L#c                ó  • 0 nUR                   bˆ  U R                  (       aw  [        UR                   5      nUR                   R                   Vs/ s H  oDR	                  5       PM     nnUR                  [        X55       VVs0 s H  u  pgXv_M	     snn5        UR                  5       u  p5UR                  [        X55       VVs0 s H  u  pgXv_M	     snn5        U R                  R                  U5        SUl         gs  snf s  snnf s  snnf )z8Extract the legend data from an axes object and save it.N)	Úlegend_rT   r   ÚtextsÚget_textÚupdateÚzipÚget_legend_handles_labelsrh   )r'   r)   Údatar‰   Útr‹   ÚhandlerŽ   s           r*   Ú_update_legend_dataÚGrid._update_legend_dataæ   sÔ   € àˆð �:‰:Ñ! d×&B×&BÜ(¨¯©Ó4ˆGØ,.¯J©J×,<Ò,<Ó=Ò,< q—j‘j–lÑ,<ˆFÐ=Ø�K‰K¼CÀÔ<PÔQÒ<P©=¨6˜šÑ<PÒQÔRà×6Ñ6Ó8‰ˆØ�‰¼¸GÔ8LÔMÒ8L¡} v�U’]Ñ8LÒMÔNà×Ñ× Ñ  Ô&ð ˆ�
ùò >ùÛQùó Ns   ÁC<ÂD
ÃD
c                óp  • Uc  [        SS9nU$ [        X   U5      n[        U5      nUc;  [        R                  " 5       nU[        U5      :”  a  [        SU5      nOJ[        US9nO@[        U[        5      (       a   U V	s/ s H  o”U	   PM	     n
n	[        X¦5      nO[        XF5      n[        X†5      nU$ s  sn	f )z*Get a list of colors for the hue variable.r   )Ún_colorsÚhusl)r   r
   Úlenr   Úget_color_cyclert   Údict)r'   rŸ   ÚhueÚ	hue_orderÚpaletteri   r¥   Úcurrent_paletteÚcolorsÚhÚcolor_namess              r*   Ú_get_paletteÚGrid._get_paletteù   s¸   € à‰;Ü#¨QÑ/ˆGð2 ˆô- *¨$©)°YÓ?ˆIÜ˜9“~ˆHð ‰Ü"'×"7Ò"7Ó"9�Øœc /Ó2Ó2Ü*¨6°8Ó<‘Fä*°HÑ=‘Fô ˜G¤T×*Ñ*Ù3<Ó=²9¨a qœz±9�Ð=Ü& {Ó=‘ô ' wÓ9�ä# FÓ5ˆGàˆùò >s   Á?B3c                ó<   •  U R                   $ ! [         a     gf = f)z9The :class:`matplotlib.legend.Legend` object, if present.N)ry   ÚAttributeErrorr0   s    r*   rx   ÚGrid.legend  s#   € ð	Ø—<‘<ÐøÜó 	Ùð	ús   ‚ Ž
šc                óh   • U R                   R                   H  nUR                  " SSU0UD6  M     U $ )aN  Modify the ticks, tick labels, and gridlines.

Parameters
----------
axis : {'x', 'y', 'both'}
    The axis on which to apply the formatting.
kwargs : keyword arguments
    Additional keyword arguments to pass to
    :meth:`matplotlib.axes.Axes.tick_params`.

Returns
-------
self : Grid instance
    Returns self for easy chaining.

Úaxisr#   )r4   r$   Útick_params)r'   r·   r(   r)   s       r*   r¸   ÚGrid.tick_params  s1   € ð" —+‘+×"Ô"ˆBØ�NŠNÑ/ Ð/¨Ô/ñ #àˆr,   )rT   ry   r�   rS   rR   )NNNF)Úboth)rG   rH   rI   rJ   rK   r€   rw   rU   rZ   r–   r¢   r±   rL   rx   r¸   rM   r#   r,   r*   rO   rO   g   sM   † ÙHØ€NØ€Kò-òð DHØ$)ôfòPò&ð< ñó ð÷r,   rO   z…    data : DataFrame
        Tidy ("long-form") dataframe where each column is a variable and each
        row is an observation.    zq    row, col : vectors or keys in ``data``
        Variables that define subsets to plot on different facets.    z¥    {row,col}_order : vector of strings
        Specify the order in which levels of the ``row`` and/or ``col`` variables
        appear in the grid of subplots.    z¡    col_wrap : int
        "Wrap" the column variable at this width, so that the column facets
        span multiple rows. Incompatible with a ``row`` facet.    z“    share{x,y} : bool, 'col', or 'row' optional
        If true, the facets will share y axes across columns and/or x axes
        across rows.    zW    height : scalar
        Height (in inches) of each facet. See also: ``aspect``.    zˆ    aspect : scalar
        Aspect ratio of each facet, so that ``aspect * height`` gives the width
        of each facet in inches.    a      palette : palette name, list, or dict
        Colors to use for the different levels of the ``hue`` variable. Should
        be something that can be interpreted by :func:`color_palette`, or a
        dictionary mapping hue levels to matplotlib colors.    z›    legend_out : bool
        If ``True``, the figure size will be extended, and the legend will be
        drawn outside the plot on the center right.    zÇ    margin_titles : bool
        If ``True``, the titles for the row variable are drawn to the right of
        the last column. This option is experimental and may not work in all
        cases.    zU    facet_kws : dict
        Additional parameters passed to :class:`FacetGrid`.
    )rŸ   ÚrowcolÚrowcol_orderÚcol_wrapÚshare_xyÚheightÚaspectr¬   Ú
legend_outÚmargin_titlesÚ	facet_kwsc                  óš  ^ • \ rS rSrSrSSSSSSSSSSSSSSSSSSSSSS.U 4S	 jjr\" S
5      R                  " S&0 \D6\l        S r	S r
S rS rS rS rS'S jrS rS(S jrS)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 jr\S 5       r\S 5       r\S 5       r\S  5       r\S! 5       r\S" 5       r\S# 5       r\S$ 5       r S%r!U =r"$ )-r   ip  z7Multi-plot grid for plotting conditional relationships.NTé   r   F)ÚrowÚcolrª   r½   ÚsharexÚshareyr¿   rÀ   r¬   Ú	row_orderÚ	col_orderr«   Úhue_kwsÚdropnarÁ   ÚdespinerÂ   ÚxlimÚylimÚsubplot_kwsÚgridspec_kwsc               ó–
  >• [         T.U ]  5         [        U5      nUnUc  S nO[        X   U5      nU R	                  XXÚ5      nUc  / nO[        X   U5      nUc  / nO[        X   U5      nUb  UO0 n[
        R                  " [        U5      [        5      nU(       aO  Uc  UOX   R                  5       nUc  UOX   R                  5       nUc  UOX   R                  5       nUU-  U-  ) n OU) n Uc  SO
[        U5      n!Uc  SO
[        U5      n"U!U"-  U l
        XPl        Ub=  Ub  Sn#[        U#5      eUn![        [
        R                  " [        U5      U-  5      5      n"U!U l        U"U l        U!U-  U	-  U"U-  4n$Ub  SnUc  0 OUR#                  5       nUc  0 OUR#                  5       nUb  UUS'   Ub  UUS'   [%        5          [&        R(                  " U$S9n%S S S 5        Uc�  [+        SXgUUS9n&W%R,                  " U"U!40 U&D6n'Uc  Uc  0 n(GO/Uc!  [+        [/        UU'R0                  5      5      n(GOUc   [+        [/        UU'R0                  5      5      n(Oè[3        UU5      n)[+        [/        U)U'R0                  5      5      n(O¼U(       a  [4        R6                  " S5        [        U5      n*[
        R8                  " U*[:        5      n'W%R<                  " U"U!S40 UD6U'S	'   U(       a  U'S	   US
'   U(       a  U'S	   US'   [?        SU*5       H  n+U%R<                  " U"U!U+S-   40 UD6U'U+'   M      [+        [/        UU'5      5      n(U%U l         U'U l!        U(U l"        S U l#        Xl$        UU l%        UU l&        UU l'        Xàl(        U"U l        X l)        U!U l        X0l*        UU l+        / U l,        XPl        UU l-        UU l.        UU l/        0 U l0        S U l1        S U l2        X`l3        Xpl4        Xðl5        U U l6        U Ro                  5         U Rq                  5         U(       a  U Rs                  5         US;   a…  U Rt                   Hu  n,U,Rw                  5        H  n-U-Ry                  S5        M     U,Rz                  R|                  Ry                  S5        U,Rz                  R~                  Ry                  S5        Mw     US;   a†  U R€                   Hu  n,U,Rƒ                  5        H  n-U-Ry                  S5        M     U,R„                  R|                  Ry                  S5        U,R„                  R~                  Ry                  S5        Mw     g g ! , (       d  f       GNh= f)Nr   z)Cannot use `row` and `col_wrap` together.FrÏ   rÐ   ©Úfigsize)ÚsqueezerÈ   rÉ   Ú
subplot_kwÚgridspec_kwz,`gridspec_kws` ignored when using `col_wrap`r   rÈ   rÉ   )TrÇ   )TrÆ   )CÚsuperrU   r   r
   r±   ÚnpÚzerosr§   ÚboolÚisnullÚ	_n_facetsÚ	_col_wrapÚ
ValueErrorÚintÚceilÚ_ncolÚ_nrowrB   r   Úpltr4   r©   Úsubplotsr�   r%   r   ÚwarningsÚwarnÚemptyÚobjectÚadd_subplotÚranger/   Ú_axesÚ
_axes_dictry   rŸ   Ú	row_namesÚ	col_namesri   rÌ   Ú_row_varÚ_col_varr€   Ú_margin_titles_textsrr   Ú_colorsrw   rh   Ú_x_varÚ_y_varÚ_sharexÚ_shareyÚ_dropnaÚ_not_naÚ
set_titlesrZ   rÎ   Ú_not_bottom_axesÚget_xticklabelsÚset_visibleÚxaxisÚ
offsetTextrŽ   Ú_not_left_axesÚget_yticklabelsÚyaxis)/r'   rŸ   rÆ   rÇ   rª   r½   rÈ   rÉ   r¿   rÀ   r¬   rÊ   rË   r«   rÌ   rÍ   rÁ   rÎ   rÂ   rÏ   rÐ   rÑ   rÒ   Úhue_varri   r®   rï   rð   Únone_naÚrow_naÚcol_naÚhue_naÚnot_naÚncolÚnrowÚerrrÕ   r1   r(   r$   Ú	axes_dictÚfacet_productÚn_axesÚir)   rŽ   Ú	__class__s/                                                 €r*   rU   ÚFacetGrid.__init__s  sù  ø€ ô 	‰ÑÔÜ! $Ó'ˆð ˆØ‰;Ø‰Iä)¨$©)°YÓ?ˆIà×"Ñ" 4¨iÓAˆð ‰;Ø‰Iä)¨$©)°YÓ?ˆIà‰;Ø‰Iä)¨$©)°YÓ?ˆIð %Ñ0‘'°bˆô —(’(œ3˜t›9¤dÓ+ˆÞØ #¡‘W°±×1AÑ1AÓ1CˆFØ #¡‘W°±×1AÑ1AÓ1CˆFØ #¡‘W°±×1AÑ1AÓ1CˆFØ ‘¨Ñ/Ð0‰Fà�XˆFð ‘K‰q¤S¨£^ˆØ‘K‰q¤S¨£^ˆØ ™ˆŒà!ŒØÑØ‰ØA�Ü  “oÐ%ØˆDÜ”r—w’wœs 9›~°Ñ8Ó9Ó:ˆDØˆŒ
ØˆŒ
ð
 ˜&‘= 6Ñ)¨4°&©=Ð9ˆð ÑØ!ˆMð (Ñ/‘b°[×5EÑ5EÓ5GˆØ)Ñ1‘r°|×7HÑ7HÓ7JˆØÑØ"&ˆK˜ÑØÑØ"&ˆK˜Ñô !Õ"Ü—*’* WÑ-ˆC÷ #ð Ñä %Ø!'Ø%0Ø&2ñ4ˆFð
 —<’<  dÑ5¨fÑ5ˆDà‰{˜s™{Ø’	Ø‘Ü ¤ Y°·	±	Ó!:Ó;’	Ø‘Ü ¤ Y°·	±	Ó!:Ó;‘	ä '¨	°9Ó =�Ü ¤ ]°D·I±IÓ!>Ó?‘	ö
 Ü—’ÐLÔMä˜“^ˆFÜ—8’8˜F¤FÓ+ˆDØ—o’o d¨D°!ÑC°{ÑCˆD�‰GÞØ(,¨Q©�˜HÑ%ÞØ(,¨Q©�˜HÑ%Ü˜1˜fÖ%�ØŸ/š/¨$°°a¸!±eÑK¸{ÑK��Q“ñ &ô œS ¨DÓ1Ó2ˆIð ˆŒØˆŒ
Ø#ˆŒØˆŒð Œ	Ø"ˆŒØ"ˆŒØ"ˆŒØŒð ˆŒ
ØŒØˆŒ
ØŒà+ˆÔØ$&ˆÔ!Ø!ŒØˆŒØˆŒØ%ˆÔØˆÔØˆŒØˆŒØŒØŒØŒØˆŒð 	�‰ÔØ×ÑÔæØ�L‰LŒNà�]Ó"Ø×+Ô+�Ø×/Ñ/Ö1�EØ×%Ñ% eÖ,ñ 2à—‘×#Ñ#×/Ñ/°Ô6Ø—‘—‘×*Ñ*¨5Ö1ñ	 ,ð �]Ó"Ø×)Ô)�Ø×/Ñ/Ö1�EØ×%Ñ% eÖ,ñ 2à—‘×#Ñ#×/Ñ/°Ô6Ø—‘—‘×*Ñ*¨5Ö1ò	 *ð #÷y #Ö"ús   ÇT9Ô9
Ua?          Initialize the matplotlib figure and FacetGrid object.

        This class maps a dataset onto multiple axes arrayed in a grid of rows
        and columns that correspond to *levels* of variables in the dataset.
        The plots it produces are often called "lattice", "trellis", or
        "small-multiple" graphics.

        It can also represent levels of a third variable with the ``hue``
        parameter, which plots different subsets of data in different colors.
        This uses color to resolve elements on a third dimension, but only
        draws subsets on top of each other and will not tailor the ``hue``
        parameter for the specific visualization the way that axes-level
        functions that accept ``hue`` will.

        The basic workflow is to initialize the :class:`FacetGrid` object with
        the dataset and the variables that are used to structure the grid. Then
        one or more plotting functions can be applied to each subset by calling
        :meth:`FacetGrid.map` or :meth:`FacetGrid.map_dataframe`. Finally, the
        plot can be tweaked with other methods to do things like change the
        axis labels, use different ticks, or add a legend. See the detailed
        code examples below for more information.

        .. warning::

            When using seaborn functions that infer semantic mappings from a
            dataset, care must be taken to synchronize those mappings across
            facets (e.g., by defining the ``hue`` mapping with a palette dict or
            setting the data type of the variables to ``category``). In most cases,
            it will be better to use a figure-level function (e.g. :func:`relplot`
            or :func:`catplot`) than to use :class:`FacetGrid` directly.

        See the :ref:`tutorial <grid_tutorial>` for more information.

        Parameters
        ----------
        {data}
        row, col, hue : strings
            Variables that define subsets of the data, which will be drawn on
            separate facets in the grid. See the ``{{var}}_order`` parameters to
            control the order of levels of this variable.
        {col_wrap}
        {share_xy}
        {height}
        {aspect}
        {palette}
        {{row,col,hue}}_order : lists
            Order for the levels of the faceting variables. By default, this
            will be the order that the levels appear in ``data`` or, if the
            variables are pandas categoricals, the category order.
        hue_kws : dictionary of param -> list of values mapping
            Other keyword arguments to insert into the plotting call to let
            other plot attributes vary across levels of the hue variable (e.g.
            the markers in a scatterplot).
        {legend_out}
        despine : boolean
            Remove the top and right spines from the plots.
        {margin_titles}
        {{x, y}}lim: tuples
            Limits for each of the axes on each facet (only relevant when
            share{{x, y}} is True).
        subplot_kws : dict
            Dictionary of keyword arguments passed to matplotlib subplot(s)
            methods.
        gridspec_kws : dict
            Dictionary of keyword arguments passed to
            :class:`matplotlib.gridspec.GridSpec`
            (via :meth:`matplotlib.figure.Figure.subplots`).
            Ignored if ``col_wrap`` is not ``None``.

        See Also
        --------
        PairGrid : Subplot grid for plotting pairwise relationships
        relplot : Combine a relational plot and a :class:`FacetGrid`
        displot : Combine a distribution plot and a :class:`FacetGrid`
        catplot : Combine a categorical plot and a :class:`FacetGrid`
        lmplot : Combine a regression plot and a :class:`FacetGrid`

        Examples
        --------

        .. note::

            These examples use seaborn functions to demonstrate some of the
            advanced features of the class, but in most cases you will want
            to use figue-level functions (e.g. :func:`displot`, :func:`relplot`)
            to make the plots shown here.

        .. include:: ../docstrings/FacetGrid.rst

        c              #  ób  #   • U R                   nU R                  (       a,  U R                   Vs/ s H  o!U R                     U:H  PM     nnO+[        R                  " S[        U R                   5      5      /nU R                  (       a,  U R                   Vs/ s H  o!U R                     U:H  PM     nnO+[        R                  " S[        U R                   5      5      /nU R                  (       a,  U R                   Vs/ s H  o!U R                     U:H  PM     nnO+[        R                  " S[        U R                   5      5      /n[        [        U5      [        U5      [        U5      5       H,  u  u  pgu  p‰u  p«XU	-  U-  U R                  -     nXhU
4U4v •  M.     gs  snf s  snf s  snf 7f)a   Generator for name indices and data subsets for each facet.

Yields
------
(i, j, k), data_ijk : tuple of ints, DataFrame
    The ints provide an index into the {row, col, hue}_names attribute,
    and the dataframe contains a subset of the full data corresponding
    to each facet. The generator yields subsets that correspond with
    the self.axes.flat iterator, or self.axes[i, j] when `col_wrap`
    is None.

TN)rŸ   rï   rñ   rÚ   Úrepeatr§   rð   rò   ri   rr   r   Ú	enumeraterú   )r'   rŸ   ÚnÚ	row_masksÚ	col_masksÚ	hue_masksr  rÆ   ÚjrÇ   Úkrª   Údata_ijks                r*   Ú
facet_dataÚFacetGrid.facet_dataƒ  sa  é € ð �y‰yˆð �>�>Ø;?¿>º>ÓJº>°a˜dŸm™mÑ,°Ô1¹>ˆIÐJˆIäŸš 4¬¨T¯Y©Y«Ó8Ð9ˆIð �>�>Ø;?¿>º>ÓJº>°a˜dŸm™mÑ,°Ô1¹>ˆIÐJˆIäŸš 4¬¨T¯Y©Y«Ó8Ð9ˆIð �>�>Ø;?¿>º>ÓJº>°a˜dŸm™mÑ,°Ô1¹>ˆIÐJˆIäŸš 4¬¨T¯Y©Y«Ó8Ð9ˆIô -4´I¸iÓ4HÜ4=¸iÓ4HÜ4=¸iÓ4Hö-JÑ(‰HˆQ‘h�q¡ ð  #™I¨™O¨d¯l©lÑ:Ñ;ˆHØ˜�)˜XÐ%Ô%ò	-Jùò# Kùò Kùò Kùs+   ‚,F/®F Á	AF/ÂF%Â1AF/Ã>F*ÄBF/c                ór  • UR                  SS5      n[        [        USS5      5      nUS:X  a}  SU;  a1  SR                  UR                  5      n[
        R                  " U5        [        U5      S:X  a7  S	U;  a1  S
R                  UR                  5      n[
        R                  " U5        U R                  5        GHW  u  u  pxpšU
R                  R                  (       d  M&  UR                  S5      (       + nU R                  XxU5      nU R                  X”5      US'   U R                  R                  5        H  u  pÞXé   X='   M     U R                   b&  ["        R$                  " U R&                  U	   5      US'   U
[)        U5         nU R*                  (       a  UR-                  5       nUR                  5        VVs/ s H  u  nnUPM
     nnnUR                  S5      (       a  U Vs/ s H  nUR                  PM     nnU R/                  XUU5        GMZ     U R1                  USS 5        U $ s  snnf s  snf )a­  Apply a plotting function to each facet's subset of the data.

Parameters
----------
func : callable
    A plotting function that takes data and keyword arguments. It
    must plot to the currently active matplotlib Axes and take a
    `color` keyword argument. If faceting on the `hue` dimension,
    it must also take a `label` keyword argument.
args : strings
    Column names in self.data that identify variables with data to
    plot. The data for each variable is passed to `func` in the
    order the variables are specified in the call.
kwargs : keyword arguments
    All keyword arguments are passed to the plotting function.

Returns
-------
self : object
    Returns self.

ÚcolorNrH   Ú zseaborn.categoricalÚorderzXUsing the {} function without specifying `order` is likely to produce an incorrect plot.rÅ   r«   z\Using the {} function without specifying `hue_order` is likely to produce an incorrect plot.ÚseabornrŽ   Ú
matplotlibrf   )ÚpopÚstrÚgetattrÚformatrG   rç   rè   r§   r  Úvaluesrb   Ú
startswithÚ
facet_axisÚ_facet_colorrÌ   Úitemsrr   r   rm   ri   rj   rù   rÍ   Ú_facet_plotÚ_finalize_grid)r'   r8   r9   r(   Úkw_colorÚfunc_moduleÚwarningÚrow_iÚcol_jÚhue_kr  Úmodify_stater)   ÚkwÚval_listÚ	plot_datar  ÚvÚ	plot_argss                      r*   rl   ÚFacetGrid.map«  sú  € ð0 —:‘:˜g tÓ,ˆô œ' $¨°bÓ9Ó:ˆð Ð/Ó/Ø˜fÓ$ð#ç#)¡6¨$¯-©-Ó#8ð ô —’˜gÔ&Ü�4‹y˜A‹~ +°VÓ";ð#ç#)¡6¨$¯-©-Ó#8ð ô —’˜gÔ&ð 04¯©×/@Ñ+Ñ!ˆU˜5ð —?‘?×'×'Ùð  +×5Ñ5°iÓ@Ô@ˆLØ—‘ ¨|Ó<ˆBð #×/Ñ/°Ó@ˆF�7‰Oð !%§¡× 2Ñ 2Ö 4‘�Ø%™_�“
ñ !5ð �}‰}Ñ(Ü"'§-¢-°·±¸uÑ0EÓ"F��w‘ð !¤ d£Ñ,ˆIØ�|�|Ø%×,Ñ,Ó.�	Ø'0§¡Ô'8Ô9Ò'8™t˜q !›Ñ'8ˆIÑ9ð ×%Ñ% l×3Ñ3Ù/8Ó9ªy¨!˜QŸXœX©y�	Ð9ð ×Ñ˜T y°&×9ñA 0AðF 	×Ñ˜D  !˜HÔ%àˆùó :ùò :s   Æ<H.Ç(H4c                óØ  • UR                  SS5      nU R                  5        Hó  u  u  pVpxUR                  R                  (       d  M%  [	        UR
                  5      R                  S5      (       + n	U R                  XVU	5      n
U R                  Xt5      US'   U R                  R                  5        H  u  p¼XÇ   X;'   M     U R                  b  U R                  U   US'   U R                  (       a  UR                  5       nXƒS'   U R                  XX#5        Mõ     UR!                  SS5      UR!                  SS5      /n[#        USS 5       H	  u  pïXýU'   M     U R%                  U5        U $ )	aÄ  Like ``.map`` but passes args as strings and inserts data in kwargs.

This method is suitable for plotting with functions that accept a
long-form DataFrame as a `data` keyword argument and access the
data in that DataFrame using string variable names.

Parameters
----------
func : callable
    A plotting function that takes data and keyword arguments. Unlike
    the `map` method, a function used here must "understand" Pandas
    objects. It also must plot to the currently active matplotlib Axes
    and take a `color` keyword argument. If faceting on the `hue`
    dimension, it must also take a `label` keyword argument.
args : strings
    Column names in self.data that identify variables with data to
    plot. The data for each variable is passed to `func` in the
    order the variables are specified in the call.
kwargs : keyword arguments
    All keyword arguments are passed to the plotting function.

Returns
-------
self : object
    Returns self.

r   Nr#  rŽ   rŸ   ÚxÚyrf   )r%  r  r)  rb   r&  rH   r*  r+  r,  rÌ   r-  rr   ri   rù   rÍ   r.  rq   r  r/  )r'   r8   r9   r(   r0  r3  r4  r5  r  r6  r)   r7  r8  Úaxis_labelsr  Úvals                   r*   Úmap_dataframeÚFacetGrid.map_dataframeý  sI  € ð< —:‘:˜g tÓ,ˆð 04¯©Ö/@Ñ+Ñ!ˆU˜5ð —?‘?×'×'Ùô  # 4§?¡?Ó3×>Ñ>¸yÓIÔIˆLØ—‘ ¨|Ó<ˆBð #×/Ñ/°Ó@ˆF�7‰Oð !%§¡× 2Ñ 2Ö 4‘�Ø%™_�“
ñ !5ð �}‰}Ñ(Ø"&§.¡.°Ñ"7��w‘ð �|�|Ø#Ÿ?™?Ó,�Ø%�6‰Nð ×Ñ˜T tÖ4ñ7 0Að> —z‘z # tÓ,¨f¯j©j¸¸dÓ.CÐDˆÜ  R a Ö)‰FˆAØ ˜‹Nñ *à×Ñ˜KÔ(àˆr,   c                ó6   • U R                   U   nUb  U$ Ub  U$ g ©N)rô   )r'   Ú	hue_indexr0  r   s       r*   r,  ÚFacetGrid._facet_colorD  s+   € à—‘˜YÑ'ˆØÑØˆOØÑØˆLð r,   c                óì   • [        UR                  5      R                  S5      (       a2  UR                  5       n/ SQn[	        XS5       H	  u  pgXtU'   M     / nX$S'   U" U0 UD6  U R                  U5        g )Nr#  )r>  r?  rª   rb   Ústyler)   )r&  rH   r*  rB   r�   r¢   )r'   r8   r)   r;  Úplot_kwargsÚ	semanticsÚkeyrA  s           r*   r.  ÚFacetGrid._facet_plotL  st   € ô ˆt�‰Ó×*Ñ*¨9×5Ñ5Ø%×*Ñ*Ó,ˆKÚ:ˆIÜ 	Ö5‘�Ø#&˜CÓ ñ 6àˆIØ "˜ÑÙˆiÐ'˜;Ò'ð 	× Ñ  Õ$r,   c                óB   • U R                   " U6   U R                  5         g)z$Finalize the annotations and layout.N)Úset_axis_labelsrZ   )r'   Úaxlabelss     r*   r/  ÚFacetGrid._finalize_grid[  s   € à×Ò˜hÑ'Ø×ÑÕr,   c                ó®   • U R                   b  U R                  R                  U   nOU R                  X4   nU(       a  [        R                  " U5        U$ )z?Make the axis identified by these indices active and return it.)rß   r$   r%   rå   Úsca)r'   r3  r4  r6  r)   s        r*   r+  ÚFacetGrid.facet_axis`  sE   € ð �>‰>Ñ%Ø—‘—‘ Ñ&‰Bà—‘˜5˜<Ñ(ˆBö Ü�GŠG�BŒKØˆ	r,   c                óH   • [         R                  " U R                  40 UD6  U $ )z#Remove axis spines from the facets.)r   rÎ   r/   )r'   r(   s     r*   rÎ   ÚFacetGrid.despinen  s   € ä�Š�d—l‘lÑ- fÒ-Øˆr,   c                ó~   • Ub  Xl         U R                  " U4SU0UD6  Ub  X l        U R                  " U4SU0UD6  U $ )z>Set axis labels on the left column and bottom row of the grid.Úclear_inner)rõ   Úset_xlabelsrö   Úset_ylabels)r'   Úx_varÚy_varrX  r(   s        r*   rO  ÚFacetGrid.set_axis_labelss  sM   € àÑØŒKØ×Ò˜UÑF°ÐF¸vÒFØÑØŒKØ×Ò˜UÑF°ÐF¸vÒFàˆr,   c                óÆ   • Uc  U R                   nU R                   H  nUR                  " U40 UD6  M     U(       a$  U R                   H  nUR                  S5        M     U $ )z/Label the x axis on the bottom row of the grid.r!  )rõ   Ú_bottom_axesÚ
set_xlabelrü   ©r'   rŽ   rX  r(   r)   s        r*   rY  ÚFacetGrid.set_xlabels~  sU   € à‰=Ø—K‘KˆEØ×#Ô#ˆBØ�MŠM˜%Ñ* 6Ô*ñ $æØ×+Ô+�Ø—‘˜bÖ!ñ ,àˆr,   c                óÆ   • Uc  U R                   nU R                   H  nUR                  " U40 UD6  M     U(       a$  U R                   H  nUR                  S5        M     U $ )z0Label the y axis on the left column of the grid.r!  )rö   Ú
_left_axesÚ
set_ylabelr  ra  s        r*   rZ  ÚFacetGrid.set_ylabels‰  sS   € à‰=Ø—K‘KˆEØ—/”/ˆBØ�MŠM˜%Ñ* 6Ô*ñ "æØ×)Ô)�Ø—‘˜bÖ!ñ *àˆr,   c                ó   • U R                   R                   H®  nUR                  5       nUR                  U5        Uct  UR	                  5        Vs/ s H  ofR                  5       PM     nnUb/  UR                  5       SSU2   nUSSU2   nUR                  U5        UR                  " U40 UD6  M›  UR                  " U40 UD6  M°     U $ s  snf )z#Set x axis tick labels of the grid.N)r$   r%   Ú
get_xticksÚ
set_xticksrý   r›   Úset_xticklabels)	r'   r‹   Ústepr(   r)   Ú
curr_ticksrŽ   Úcurr_labelsÚxtickss	            r*   rj  ÚFacetGrid.set_xticklabels”  s»   € à—)‘)—.”.ˆBØŸ™›ˆJØ�M‰M˜*Ô%Ø‰~Ø=?×=OÑ=OÔ=QÓRÒ=Q°EŸ~™~Ö/Ñ=Q�ÐRØÑ#ØŸ]™]›_©V¨t¨VÑ4�FØ"-©f°¨fÑ"5�KØ—M‘M &Ô)Ø×"Ò" ;Ñ9°&Ô9à×"Ò" 6Ñ4¨VÔ4ñ !ð ˆùò Ss   ÁCc                ó<  • U R                   R                   H|  nUR                  5       nUR                  U5        UcB  UR	                  5        Vs/ s H  oUR                  5       PM     nnUR                  " U40 UD6  Mi  UR                  " U40 UD6  M~     U $ s  snf )z6Set y axis tick labels on the left column of the grid.)r$   r%   Ú
get_yticksÚ
set_yticksr  r›   Úset_yticklabels)r'   r‹   r(   r)   rl  rŽ   rm  s          r*   rs  ÚFacetGrid.set_yticklabels¤  s‡   € à—)‘)—.”.ˆBØŸ™›ˆJØ�M‰M˜*Ô%Ø‰~Ø=?×=OÑ=OÔ=QÓRÒ=Q°EŸ~™~Ö/Ñ=Q�ÐRØ×"Ò" ;Ñ9°&Ô9à×"Ò" 6Ñ4¨VÔ4ñ !ð ˆùò	 Ss   ÁBc           
     óÌ  • [        U R                  U R                  S9nUR                  S[        R
                  S   5      US'   Uc  SnUc  SnUc2  U R                  c  UnO"U R                  c  UnOSR                  X#/5      n[        R                  " U5      n[        R                  " U5      n[        R                  " U5      nU R                  (       Ga=  U R                   H  nUR                  5         M     / U l
        U R                  b�  [        U R                  5       Ht  u  pxU R                  US4   n	UR                  [        US95        UR                   " S0 UD6n
U	R"                  " U
4S	S
SSSS.UD6nU R                  R%                  U5        Mv     U R&                  bj  [        U R&                  5       HQ  u  p¼UR                  [        US95        UR                   " S0 UD6n
U R                  SU4   R(                  " U
40 UD6  MS     U $ U R                  b–  U R                  b‰  [        U R                  5       Hn  u  px[        U R&                  5       HP  u  p¼UR                  [        XŒS95        UR                   " S0 UD6n
U R                  X{4   R(                  " U
40 UD6  MR     Mp     U $ U R                  b†  [+        U R                  5      (       al  [        U R                  5       HQ  u  pxUR                  [        US95        UR                   " S0 UD6n
U R                  US4   R(                  " U
40 UD6  MS     U $ U R&                  bŒ  [+        U R&                  5      (       ar  [        U R&                  5       HY  u  p|UR                  [        US95        UR                   " S0 UD6n
U R                  R,                  U   R(                  " U
40 UD6  M[     U $ )a€  Draw titles either above each facet or on the grid margins.

Parameters
----------
template : string
    Template for all titles with the formatting keys {col_var} and
    {col_name} (if using a `col` faceting variable) and/or {row_var}
    and {row_name} (if using a `row` faceting variable).
row_template:
    Template for the row variable when titles are drawn on the grid
    margins. Must have {row_var} and {row_name} formatting keys.
col_template:
    Template for the column variable when titles are drawn on the grid
    margins. Must have {col_var} and {col_name} formatting keys.

Returns
-------
self: object
    Returns self.

)Úrow_varÚcol_varrb   zaxes.labelsizez{row_var} = {row_name}z{col_var} = {col_name}z | éÿÿÿÿ)Úrow_name)gR¸…ëQð?ç      à?zaxes fractioni  ÚleftÚcenter)ÚxyÚxycoordsÚrotationÚhaÚva)Úcol_namer   )ry  r‚  r#   )r©   rñ   rò   r%  rn   rs   Újoinr   rm   r€   ró   Úremoverï   r  r$   rœ   r(  Úannotaterv   rð   rz   r§   r%   )r'   ÚtemplateÚrow_templateÚcol_templater(   r9   Útextr  ry  r)   r„   r  r‚  s                r*   rû   ÚFacetGrid.set_titles°  sR  € ô, ˜DŸM™M°4·=±=ÑAˆØŸ™ F¬C¯L©LÐ9IÑ,JÓKˆˆv‰ð ÑØ3ˆLØÑØ3ˆLØÑØ�}‰}Ñ$Ø'‘Ø—‘Ñ&Ø'‘à Ÿ:™: |Ð&BÓC�ä—}’} \Ó2ˆÜ—}’} \Ó2ˆÜ—=’= Ó*ˆà××Ðð ×1Ô1�Ø—‘–ñ 2à(*ˆDÔ%à�~‰~Ñ)ä#,¨T¯^©^Ö#<‘K�AØŸ™ 1 b 5Ñ)�BØ—K‘K¤¨hÑ 7Ô8Ø(×/Ò/Ñ7°$Ñ7�EØŸ;š;ØðØ",°Ø!$¨°Hñð !ñ�Dð
 ×-Ñ-×4Ñ4°TÖ:ñ $=ð �~‰~Ñ)ä#,¨T¯^©^Ö#<‘K�AØ—K‘K¤¨hÑ 7Ô8Ø(×/Ò/Ñ7°$Ñ7�EØ—I‘I˜a ˜d‘O×-Ò-¨eÑ>°vÔ>ñ $=ð
 ˆKð �M‰MÑ%¨D¯M©MÑ,EÜ(¨¯©Ö8‘�Ü#,¨T¯^©^Ö#<‘K�AØ—K‘K¤¨hÑ JÔKØ$ŸOšOÑ3¨dÑ3�EØ—I‘I˜a˜d‘O×-Ò-¨eÑ>°vÔ>ó $=ñ  9ð  ˆð �^‰^Ñ'¬C°·±×,?Ñ,?Ü(¨¯©Ö8‘�Ø—‘œD¨(Ñ3Ô4Ø ŸšÑ/¨$Ñ/�Ø—	‘	˜!˜Q˜$‘×)Ò)¨%Ñ:°6Ô:ñ  9ð ˆð �^‰^Ñ'¬C°·±×,?Ñ,?Ü(¨¯©Ö8‘�Ø—‘œD¨(Ñ3Ô4Ø ŸšÑ/¨$Ñ/�à—	‘	—‘˜qÑ!×+Ò+¨EÑ<°VÔ<ñ	  9ð
 ˆr,   ú.5ú--)r>  r?  r   Ú	linestylec               ó®   • X5S'   XES'   Ub#  U R                   " [        R                  4SU0UD6  Ub#  U R                   " [        R                  4SU0UD6  U $ )au  Add a reference line(s) to each facet.

Parameters
----------
x, y : numeric
    Value(s) to draw the line(s) at.
color : :mod:`matplotlib color <matplotlib.colors>`
    Specifies the color of the reference line(s). Pass ``color=None`` to
    use ``hue`` mapping.
linestyle : str
    Specifies the style of the reference line(s).
line_kws : key, value mappings
    Other keyword arguments are passed to :meth:`matplotlib.axes.Axes.axvline`
    when ``x`` is not None and :meth:`matplotlib.axes.Axes.axhline` when ``y``
    is not None.

Returns
-------
:class:`FacetGrid` instance
    Returns ``self`` for easy method chaining.

r   r�  r>  r?  )rl   rå   ÚaxvlineÚaxhline)r'   r>  r?  r   r�  Úline_kwss         r*   ÚreflineÚFacetGrid.refline  sW   € ð. "�ÑØ )�Ñà‰=Ø�HŠH”S—[‘[Ñ2 AÐ2¨Ò2à‰=Ø�HŠH”S—[‘[Ñ2 AÐ2¨Ò2àˆr,   c                ó   • U R                   $ )zBAn array of the :class:`matplotlib.axes.Axes` objects in the grid.)rí   r0   s    r*   r$   ÚFacetGrid.axes/  s   € ð �z‰zÐr,   c                ón   • U R                   R                  S:X  a  U R                   S   $ Sn[        U5      e)zJThe :class:`matplotlib.axes.Axes` when no faceting variables are assigned.)r   r   )r   r   z<Use the `.axes` attribute when facet variables are assigned.)r$   Úshaper´   )r'   r  s     r*   r)   ÚFacetGrid.ax4  s:   € ð �9‰9�?‰?˜fÓ$Ø—9‘9˜T‘?Ð"ð Oð ô ! Ó%Ð%r,   c                ó   • U R                   $ )a  A mapping of facet names to corresponding :class:`matplotlib.axes.Axes`.

If only one of ``row`` or ``col`` is assigned, each key is a string
representing a level of that variable. If both facet dimensions are
assigned, each key is a ``({row_level}, {col_level})`` tuple.

)rî   r0   s    r*   r  ÚFacetGrid.axes_dict?  s   € ð �‰Ðr,   c                ó  • U R                   c  U R                  SS2SS24   R                  $ / nU R                  U R                  -  U R
                  -
  n[        U R                  5       Hz  u  p4X0R                  -  =(       aF    X0R                  U R                  S-
  -  :  =(       a!    X0R                  U R                  S-
  -  U-
  :  nU(       d  Mi  UR                  U5        M|     [        R                  " U[        5      R                  $ )z&Return a flat array of the inner axes.Nrx  r   ©rß   r$   r%   rä   rã   rÞ   r  rv   rÚ   Úarrayrê   ©r'   r$   Ún_emptyr  r)   rv   s         r*   Ú_inner_axesÚFacetGrid._inner_axesL  sÚ   € ð �>‰>Ñ!Ø—9‘9˜S˜b˜S !¡"˜WÑ%×*Ñ*Ð*àˆDØ—j‘j 4§:¡:Ñ-°·±Ñ>ˆGÜ" 4§9¡9Ö-‘�àŸ
™
‘N÷ FØŸZ™Z¨4¯:©:¸©>Ñ:Ñ;÷FàŸZ™Z¨4¯:©:¸©>Ñ:¸WÑDÑEð ÷
 �6Ø—K‘K –Oñ .ô —8’8˜D¤&Ó)×.Ñ.Ð.r,   c                ó,  • U R                   c  U R                  SS2S4   R                  $ / n[        U R                  5       H+  u  p#X R                  -  (       a  M  UR                  U5        M-     [        R                  " U[        5      R                  $ )z/Return a flat array of the left column of axes.Nr   ©	rß   r$   r%   r  rã   rv   rÚ   r�  rê   ©r'   r$   r  r)   s       r*   rd  ÚFacetGrid._left_axes^  so   € ð �>‰>Ñ!Ø—9‘9šQ ˜T‘?×'Ñ'Ð'àˆDÜ" 4§9¡9Ö-‘�ØŸ:™:—~‘~Ø—K‘K –Oñ .ô —8’8˜D¤&Ó)×.Ñ.Ð.r,   c                ó0  • U R                   c  U R                  SS2SS24   R                  $ / n[        U R                  5       H+  u  p#X R                  -  (       d  M  UR                  U5        M-     [        R                  " U[        5      R                  $ )z;Return a flat array of axes that aren't on the left column.Nr   r£  r¤  s       r*   r  ÚFacetGrid._not_left_axesj  sr   € ð �>‰>Ñ!Ø—9‘9šQ ¡˜UÑ#×(Ñ(Ð(àˆDÜ" 4§9¡9Ö-‘�Ø—z‘z—>‘>Ø—K‘K –Oñ .ô —8’8˜D¤&Ó)×.Ñ.Ð.r,   c                óì  • U R                   c  U R                  SSS24   R                  $ / nU R                  U R                  -  U R
                  -
  n[        U R                  5       He  u  p4X0R                  U R                  S-
  -  :¬  =(       d!    X0R                  U R                  S-
  -  U-
  :¬  nU(       d  MT  UR                  U5        Mg     [        R                  " U[        5      R                  $ )z.Return a flat array of the bottom row of axes.Nrx  r   rœ  rž  s         r*   r_  ÚFacetGrid._bottom_axesv  sÅ   € ð �>‰>Ñ!Ø—9‘9˜R¢˜UÑ#×(Ñ(Ð(àˆDØ—j‘j 4§:¡:Ñ-°·±Ñ>ˆGÜ" 4§9¡9Ö-‘�àŸ*™*¨¯
©
°Q©Ñ7Ñ8÷ FØŸZ™Z¨4¯:©:¸©>Ñ:¸WÑDÑEð ÷ �6Ø—K‘K –Oñ .ô —8’8˜D¤&Ó)×.Ñ.Ð.r,   c                óð  • U R                   c  U R                  SS2SS24   R                  $ / nU R                  U R                  -  U R
                  -
  n[        U R                  5       He  u  p4X0R                  U R                  S-
  -  :  =(       a!    X0R                  U R                  S-
  -  U-
  :  nU(       d  MT  UR                  U5        Mg     [        R                  " U[        5      R                  $ )z:Return a flat array of axes that aren't on the bottom row.Nrx  r   rœ  rž  s         r*   rü   ÚFacetGrid._not_bottom_axes‡  sÉ   € ð �>‰>Ñ!Ø—9‘9˜S˜b˜S¢!˜VÑ$×)Ñ)Ð)àˆDØ—j‘j 4§:¡:Ñ-°·±Ñ>ˆGÜ" 4§9¡9Ö-‘�àŸ™ t§z¡z°A¡~Ñ6Ñ7÷ FØŸZ™Z¨4¯:©:¸©>Ñ:¸WÑDÑEð ÷ �6Ø—K‘K –Oñ .ô —8’8˜D¤&Ó)×.Ñ.Ð.r,   )rí   rî   rò   rß   rô   rù   r/   rr   ry   rh   rw   r€   ró   rÞ   rã   rú   rä   rñ   r÷   rø   rõ   rö   rð   rŸ   rÌ   ri   rï   r#   )T)NNT)NT)NNrE  )NNN)#rG   rH   rI   rJ   rK   rU   r   r(  Ú_facet_docsr  rl   rB  r,  r.  r/  r+  rÎ   rO  rY  rZ  rj  rs  rû   r’  rL   r$   r)   r  r   rd  r  r_  rü   rM   Ú__classcell__©r  s   @r*   r   r   p  s|  ø† ÙAð �d ¨tØ˜D¨°1¸dØ $°$ÀØ ¨tØ $¨T¸tØ÷r2ð r2ñh ð Zó Z÷t ‰VðuZñ Z#ðt "ñuZ#€HÔòx&&òPPòdEòNò%òô
òô
	ô	ô	ôô 
ôYðv   4¨t¸tõ  ðH ñó ðð ñ&ó ð&ð ñó ðð ñ/ó ð/ð" ñ	/ó ð	/ð ñ	/ó ð	/ð ñ/ó ð/ð  ñ/ó ö/r,   r   c                  ó�   ^ • \ rS rSrSrSSSSSSSSSSSSSSS	.U 4S
 jjrS rS rS rS r	S r
S rS rS rS rS rS rSrU =r$ )r   i™  a)  Subplot grid for plotting pairwise relationships in a dataset.

This object maps each variable in a dataset onto a column and row in a
grid of multiple axes. Different axes-level plotting functions can be
used to draw bivariate plots in the upper and lower triangles, and the
marginal distribution of each variable can be shown on the diagonal.

Several different common plots can be generated in a single line using
:func:`pairplot`. Use :class:`PairGrid` when you need more flexibility.

See the :ref:`tutorial <grid_tutorial>` for more information.

NFTç      @r   rz  )rª   ÚvarsÚx_varsÚy_varsr«   r¬   rÌ   ÚcornerÚdiag_shareyr¿   rÀ   Ú
layout_padrÎ   rÍ   c               ó€  >• [         TU ]  5         [        U5      nU R                  U5      nUU;   a  UR	                  U5        Ub  [        U5      n[        U5      nUc  UnUc  Un[        R                  " U5      (       a  U/n[        R                  " U5      (       a  U/n[        U5      =U l        n[        U5      =U l	        nU R                  U R                  :H  U l
        U(       d  [        S5      eU(       d  [        S5      e[        U5      U-  U-  [        U5      U-  4n[        5          [        R                  " US9nSSS5        WR!                  [        U5      [        U5      SSSS9nX�l        U	(       aE  [        R$                  " US	5      n['        U6  H"  u  nnUUU4   R	                  5         SUUU4'   M$     UU l        UU l        Xl        X l        SU l        SU l        Xðl        U R7                  5         X l        Uc<  S
/=U l        n[<        R>                  " S
/[        U5      -  UR@                  S9U l!        OJ[E        X   U5      =nnU(       a#  [        [G        [<        RH                  U5      5      nUU l        X   U l!        Ub  UO0 U l%        Xpl&        X`l'        U RQ                  XXg5      U l)        0 U l*        USS2SS24   RV                   Hz  nUc  M  URY                  5        H  nUR[                  S5        M     UR\                  R^                  R[                  S5        UR\                  R`                  R[                  S5        M|     USS2S	S24   RV                   Hz  nUc  M  URc                  5        H  nUR[                  S5        M     URd                  R^                  R[                  S5        URd                  R`                  R[                  S5        M|     / SQU l3        XÐl4        Xàl5        U(       a  [l        Rn                  " US9  U Rq                  US9  g! , (       d  f       GNï= f)a  Initialize the plot figure and PairGrid object.

Parameters
----------
data : DataFrame
    Tidy (long-form) dataframe where each column is a variable and
    each row is an observation.
hue : string (variable name)
    Variable in ``data`` to map plot aspects to different colors. This
    variable will be excluded from the default x and y variables.
vars : list of variable names
    Variables within ``data`` to use, otherwise use every column with
    a numeric datatype.
{x, y}_vars : lists of variable names
    Variables within ``data`` to use separately for the rows and
    columns of the figure; i.e. to make a non-square plot.
hue_order : list of strings
    Order for the levels of the hue variable in the palette
palette : dict or seaborn color palette
    Set of colors for mapping the ``hue`` variable. If a dict, keys
    should be values  in the ``hue`` variable.
hue_kws : dictionary of param -> list of values mapping
    Other keyword arguments to insert into the plotting call to let
    other plot attributes vary across levels of the hue variable (e.g.
    the markers in a scatterplot).
corner : bool
    If True, don't add axes to the upper (off-diagonal) triangle of the
    grid, making this a "corner" plot.
height : scalar
    Height (in inches) of each facet.
aspect : scalar
    Aspect * height gives the width (in inches) of each facet.
layout_pad : scalar
    Padding between axes; passed to ``fig.tight_layout``.
despine : boolean
    Remove the top and right spines from the plots.
dropna : boolean
    Drop missing values from the data before plotting.

See Also
--------
pairplot : Easily drawing common uses of :class:`PairGrid`.
FacetGrid : Subplot grid for plotting conditional relationships.

Examples
--------

.. include:: ../docstrings/PairGrid.rst

Nz$No variables found for grid columns.z!No variables found for grid rows.rÔ   rÇ   rÆ   F)rÈ   rÉ   rÖ   r   Ú
_nolegend_)Úindexrx  )rd   rd   ç®Gáz®ï?rº  )r1   )rY   )9rÙ   rU   r   Ú_find_numeric_colsr„  rj   rÚ   Úisscalarr²  r³  Úsquare_gridrà   r§   r   rå   r4   ræ   Ú_cornerÚtriu_indices_fromr�   r/   r$   rŸ   rµ  Ú	diag_varsÚ	diag_axesrù   Ú_add_axis_labelsrr   ri   ÚpdÚSeriesr¹  Úhue_valsr
   ÚfilterÚnotnullrÌ   Ú_orig_paletteÚ
_hue_orderr±   r¬   rh   r%   rý   rþ   rÿ   r   rŽ   r  r  rR   rS   Ú_despiner   rÎ   rZ   )r'   rŸ   rª   r±  r²  r³  r«   r¬   rÌ   r´  rµ  r¿   rÀ   r¶  rÎ   rÍ   Únumeric_colsrÕ   r1   r$   Úhide_indicesr  r  ri   r)   rŽ   r  s                             €r*   rU   ÚPairGrid.__init__§  sº  ø€ ôp 	‰ÑÔÜ! $Ó'ˆð ×.Ñ.¨tÓ4ˆØ�,ÓØ×Ñ Ô$ØÑÜ˜$“ZˆFÜ˜$“ZˆFØ‰>Ø!ˆFØ‰>Ø!ˆFä�;Š;�v×ÑØ�XˆFÜ�;Š;�v×ÑØ�XˆFä# F›|Ð+ˆŒ�fÜ# F›|Ð+ˆŒ�fØŸ;™;¨$¯+©+Ñ5ˆÔæÜÐCÓDÐDÞÜÐ@ÓAÐAô �f“+ Ñ&¨Ñ/´°V³¸vÑ1EÐEˆä Õ"Ü—*’* WÑ-ˆC÷ #ð �|‰|œC ›K¬¨V«Ø#(°Ø$)ð ð +ˆð ŒÞÜ×/Ò/°°aÓ8ˆLÜ˜\Ó*‘��1Ø�Q˜�T‘
×!Ñ!Ô#Ø!��Q˜�T“
ñ +ð ˆŒØˆŒ	ØŒ	ð 'ÔØˆŒØˆŒàŒð 	×ÑÔð ŒØ‰;Ø*6¨Ð7ˆDŒN˜YÜŸIšI | n´s¸4³yÑ&@Ø,0¯J©Jñ8ˆD�Mô %6°d±iÀÓ$KÐKˆI˜	Þä ¤¬¯
©
°IÓ!>Ó?�	Ø&ˆDŒNØ ™IˆDŒMð #*Ñ"5‘w¸2ˆŒà$ÔØ#ŒØ×(Ñ(¨°IÓGˆŒØˆÔð �s˜�sšA�v‘,×#Ô#ˆBØ‰zÙØ×+Ñ+Ö-�Ø×!Ñ! %Ö(ñ .à�H‰H×Ñ×+Ñ+¨EÔ2Ø�H‰H�N‰N×&Ñ& uÖ-ñ $ð ’q˜!™"�u‘+×"Ô"ˆBØ‰zÙØ×+Ñ+Ö-�Ø×!Ñ! %Ö(ñ .à�H‰H×Ñ×+Ñ+¨EÔ2Ø�H‰H�N‰N×&Ñ& uÖ-ñ #ò #7ˆÔØ!+ÔØŒÞÜ�MŠM˜cÒ"Ø×Ñ˜jÐÒ)÷k #Ö"ús   Ä1P.Ð.
P=c                óÄ   • [         R                  " U R                  R                  5      u  p4[	        UR
                  UR
                  5      nU R                  " X40 UD6  U $ )a  Plot with the same function in every subplot.

Parameters
----------
func : callable plotting function
    Must take x, y arrays as positional arguments and draw onto the
    "currently active" matplotlib Axes. Also needs to accept kwargs
    called ``color`` and  ``label``.

)rÚ   Úindicesr$   r—  r�   r%   Ú_map_bivariate)r'   r8   r(   Úrow_indicesÚcol_indicesrÏ  s         r*   rl   ÚPairGrid.mapV  sM   € ô $&§:¢:¨d¯i©i¯o©oÓ#>Ñ ˆÜ�k×&Ñ&¨×(8Ñ(8Ó9ˆØ×Ò˜DÑ4¨VÒ4àˆr,   c                óz   • [        [        R                  " U R                  S5      6 nU R                  " X40 UD6  U $ )a&  Plot with a bivariate function on the lower diagonal subplots.

Parameters
----------
func : callable plotting function
    Must take x, y arrays as positional arguments and draw onto the
    "currently active" matplotlib Axes. Also needs to accept kwargs
    called ``color`` and  ``label``.

rx  )r�   rÚ   Útril_indices_fromr$   rÐ  ©r'   r8   r(   rÏ  s       r*   Ú	map_lowerÚPairGrid.map_lowerg  s7   € ô ”r×+Ò+¨D¯I©I°rÓ:Ð;ˆØ×Ò˜DÑ4¨VÒ4Øˆr,   c                óz   • [        [        R                  " U R                  S5      6 nU R                  " X40 UD6  U $ )a&  Plot with a bivariate function on the upper diagonal subplots.

Parameters
----------
func : callable plotting function
    Must take x, y arrays as positional arguments and draw onto the
    "currently active" matplotlib Axes. Also needs to accept kwargs
    called ``color`` and  ``label``.

r   )r�   rÚ   r¿  r$   rÐ  rÖ  s       r*   Ú	map_upperÚPairGrid.map_upperv  s7   € ô ”r×+Ò+¨D¯I©I°qÓ9Ð:ˆØ×Ò˜DÑ4¨VÒ4Øˆr,   c                ón  • U R                   (       a9  U R                  " U40 UD6  U R                  (       d  U R                  " U40 UD6  U $ / n[	        U R
                  5       H<  u  pE[	        U R                  5       H  u  pgXu:w  d  M  UR                  XF45        M      M>     U R                  " X40 UD6  U $ )a$  Plot with a bivariate function on the off-diagonal subplots.

Parameters
----------
func : callable plotting function
    Must take x, y arrays as positional arguments and draw onto the
    "currently active" matplotlib Axes. Also needs to accept kwargs
    called ``color`` and  ``label``.

)	r½  r×  r¾  rÚ  r  r³  r²  rv   rÐ  )r'   r8   r(   rÏ  r  r\  r  r[  s           r*   Úmap_offdiagÚPairGrid.map_offdiag…  s›   € ð ××Ø�NŠN˜4Ñ* 6Ò*Ø—<—<Ø—’˜tÑ. vÒ.ð ˆð ˆGÜ'¨¯©Ö4‘
�Ü"+¨D¯K©KÖ"8‘J�AØ•~ØŸ™¨ vÖ.ó #9ñ 5ð ×Ò Ñ8°Ò8Øˆr,   c                óf  • U R                   Gc�  / n/ n[        U R                  5       GH2  u  pV[        U R                  5       GH  u  pxX†:X  d  M  UR	                  U5        U R
                  XW4   n	U	R                  5       n
U
R                  5         UR	                  U
5        [        R                  R                  SS5      (       d8  U	R                  R                   H  nUR                  R                  S5        M      U R                  (       d  MÏ  U	R                  R                  S5        U R                   (       d  Mý  ["        R$                  " U	SS9  GM     GM5     U R&                  (       a#  U(       a  USS  H  n	[)        US   U	S5        M     X0l        X@l         S	[-        U5      R.                  ;  a  U R0                  " U40 UD6$ [3        U R*                  U R                   5       GH1  u  pÉUR5                  5       n[7        UR8                  5      R;                  S
5      (       a  X�S'   O[        R<                  " U	5        U R>                  U   nU R@                  b  U R>                  U R@                     nOSnU RB                  (       a3  URE                  5       nUb  UURE                  5       -  nUU   nUb  UU   nURG                  S	U5        URG                  SU RH                  5        URG                  SU RJ                  5        U" SSU0UD6  SU	l&        GM4     U RO                  5         U $ )a!  Plot with a univariate function on each diagonal subplot.

Parameters
----------
func : callable plotting function
    Must take an x array as a positional argument and draw onto the
    "currently active" matplotlib Axes. Also needs to accept kwargs
    called ``color`` and  ``label``.

Nz
ytick.leftTF©r)   r{  r   r   r?  rª   r#  r)   r«   r¬   r>  r#   )(rÁ  r  r³  r²  rv   r$   ÚtwinxÚset_axis_offrå   rs   rq   r  Ú
majorTicksÚ	tick1linerþ   r¾  rÊ  r   rÎ   rµ  r   rÀ  r   Ú
parametersÚ_map_diag_iter_huer�   rB   r&  rH   r*  rS  rŸ   rr   rù   ÚnotnarC   rÉ  rÈ  r™   rÂ  )r'   r8   r(   rÀ  rÁ  r  r\  r  r[  r)   Údiag_axÚtickÚvarrJ  Úvectorrª   r	  s                    r*   Úmap_diagÚPairGrid.map_diag�  s„  € ð �>‰>Ò!ØˆIØˆIÜ% d§k¡k×2‘�Ü )¨$¯+©+× 6‘H�AØ•~ð "×(Ñ(¨Ô/Ø!ŸY™Y q t™_˜Ø"$§(¡(£*˜Ø×,Ñ,Ô.Ø!×(Ñ(¨Ô1ô  #Ÿ|™|×/Ñ/°¸d×CÑCØ(*¯©×(;Ô(; Ø $§¡× :Ñ :¸5Ö Añ )<ð  Ÿ<Ÿ<™<ØŸH™H×0Ñ0°Ô7Ø#Ÿ}Ÿ}™}Ü %§¢°¸$Õ ?ô) !7ñ 3ð2 ××¦IØ# A B›-�BÜ˜y¨™|¨R°Ö5ñ (ð 'ŒNØ&ŒNàœ	 $›×2Ñ2Ó2Ø×*Ò*¨4Ñ:°6Ñ:Ð:ô ˜4Ÿ>™>¨4¯>©>×:‰GˆCà Ÿ+™+›-ˆKÜ�4—?‘?Ó#×.Ñ.¨y×9Ñ9Ø$&˜DÒ!ä—’˜”à—Y‘Y˜s‘^ˆFØ�}‰}Ñ(Ø—i‘i §¡Ñ.‘à�à�|�|ØŸ™›�Ø‘?Ø˜cŸi™i›kÑ)�FØ ™�Ø‘?Ø˜f™+�Cà×"Ñ" 5¨#Ô.Ø×"Ñ" ;°·±Ô@Ø×"Ñ" 9¨d×.@Ñ.@ÔAÙÑ)�6Ð)˜[Ò)ØˆB�Jñ5 ;ð8 	×ÑÔØˆr,   c           	     óB  • UR                  SS5      n[        U R                  U R                  5       GH.  u  pEU R                  U   R                  U R                  SS9nUR                  5       n[        UR                  5      R                  S5      (       a  XWS'   O[        R                  " U5        [        U R                  5       H”  u  p‰ UR                  U	5      n
Uc  U R(                  U   nOUnU R*                  (       a  [,        R.                  " U
5      n
[        UR                  5      R                  S5      (       a  U" S
X©US.UD6  M‰  U" U
4X›S	.UD6  M–     GM1     U R1                  5         U $ ! [          a    ["        R$                  " / [&        S9n
 N½f = f)z<Put marginal plot on each diagonal axes, iterating over hue.r   NT©Úobservedr#  r)   )Údtype)r>  rŽ   r   )rŽ   r   r#   )r%  r�   rÀ  rÁ  rŸ   ÚgroupbyrÅ  rB   r&  rH   r*  rå   rS  r  rÉ  Ú	get_groupÚKeyErrorrÃ  rÄ  Úfloatr¬   rù   r   Ú	remove_narÂ  )r'   r8   r(   Úfixed_colorrê  r)   Úhue_groupedrJ  r  Úlabel_kÚdata_kr   s               r*   ræ  ÚPairGrid._map_diag_iter_hueï  sS  € ð —j‘j ¨$Ó/ˆä˜4Ÿ>™>¨4¯>©>×:‰GˆCØŸ)™) C™.×0Ñ0°·±ÈÐ0ÐNˆKà Ÿ+™+›-ˆKÜ�4—?‘?Ó#×.Ñ.¨y×9Ñ9Ø$&˜DÒ!ä—’˜”ä'¨¯©Ö8‘
�ð8Ø(×2Ñ2°7Ó;�Fð Ñ&Ø ŸL™L¨™O‘Eà'�Eà—<—<Ü"Ÿ_š_¨VÓ4�Fä�t—‘Ó'×2Ñ2°9×=Ñ=ÙÐM˜6¸ÑMÀÔMá˜ÐK wÑK¸{ÔKô' 9ñ ;ð< 	×ÑÔàˆøô%  ó 8ÜŸYšY r´Ñ7’Fð8ús   ÃE8Å8#FÆFc                ó~  • SSK JnJn  XL d  XL a  SU l        UR	                  5       nU HL  u  pxU R
                  U   n	U R                  U   n
U R                  Xx4   nUc  M8  U R                  " XšX±40 UD6  MN     U R                  5         S[        U5      R                  ;   a  [        U R                  5      U l        gg)z,Draw a bivariate plot on the indicated axes.r   ©ÚhistplotÚkdeplotTNrª   )Údistributionsrþ  rÿ  rT   rB   r²  r³  r$   Ú_plot_bivariaterÂ  r   rå  rj   rh   ri   )r'   r8   rÏ  r(   rþ  rÿ  Úkwsr  r  r[  r\  r)   s               r*   rÐ  ÚPairGrid._map_bivariate  s­   € ÷
 	5ØÒ˜tšØ+/ˆDÔ(à�k‰k‹mˆÛ‰DˆAØ—K‘K ‘NˆEØ—K‘K ‘NˆEØ—‘˜1˜4‘ˆBØ‰zÙØ× Ò  ¨rÑ?¸3Ô?ñ ð 	×ÑÔà”I˜d“O×.Ñ.Ó.Ü! $×"3Ñ"3Ó4ˆD�Nð /r,   c                óè  • S[        U5      R                  ;  a  U R                  " XX440 UD6  gUR                  5       n[	        UR
                  5      R                  S5      (       a  X5S'   O[        R                  " U5        X:X  a  U/nOX/nU R                  b+  U R                  U;  a  UR                  U R                  5        U R                  U   nU R                  (       a  UR                  5       nXq   nXr   n	U R                  c  Sn
OUR                  U R                  5      n
SU;  a(  UR                  X R                   U R"                  S.5        U" SX‰S.UD6  U R%                  U5        g)z,Draw a bivariate plot on the specified axes.rª   Nr#  r)   )rª   r«   r¬   ©r>  r?  r#   )r   rå  Ú_plot_bivariate_iter_huerB   r&  rH   r*  rå   rS  rr   rv   rŸ   rù   rÍ   rq   rœ   rÉ  rÈ  r¢   )r'   r[  r\  r)   r8   r(   Ú	axes_varsrŸ   r>  r?  rª   s              r*   r  ÚPairGrid._plot_bivariate,  s4  € àœ	 $›×2Ñ2Ó2Ø×)Ò)¨%¸ÑKÀFÒKØà—‘“ˆÜˆt�‰Ó×*Ñ*¨9×5Ñ5Ø�4ŠLä�GŠG�BŒKà‹>Ø˜‰Ià˜ˆIà�=‰=Ñ$¨¯©¸iÓ)GØ×Ñ˜TŸ]™]Ô+à�y‰y˜Ñ#ˆØ�<�<Ø—;‘;“=ˆDà‰KˆØ‰KˆØ�=‰=Ñ Ø‰Cà—(‘(˜4Ÿ=™=Ó)ˆCà˜ÓØ�M‰MØ¯©ÀT×EWÑEWñô ñ 	Ð ˆqÑ ˜Ò à× Ñ  Õ$r,   c                ó„  • UR                  5       n[        UR                  5      R                  S5      (       a  X5S'   O[        R
                  " U5        X:X  a  U/nOX/nU R                  R                  U R                  SS9n[        U R                  5       Hé  u  p‰UR                  5       n
 UR                  U	5      nU R                   (       a  X¶   R#                  5       nX±   nX²   nU R$                  R'                  5        H  u  pïXø   X®'   M     U
R)                  SU R*                  U   5        U R,                  b  XšS'   [        UR                  5      R                  S5      (       a  U" S
XÍS	.U
D6  Mà  U" XÍ40 U
D6  Më     U R/                  U5        g! [         a    [        R                  " U[        S9n Nýf = f)z7Draw a bivariate plot while iterating over hue subsets.r#  r)   Trï  )Úcolumnsrñ  r   NrŽ   r  r#   )rB   r&  rH   r*  rå   rS  rŸ   rò  rÅ  r  rÉ  ró  rô  rÃ  Ú	DataFramerõ  rù   rÍ   rÌ   r-  rC   r¬   rr   r¢   )r'   r[  r\  r)   r8   r(   r  rø  r  rù  r  rú  r>  r?  r7  r8  s                   r*   r  Ú!PairGrid._plot_bivariate_iter_hueS  sz  € à—‘“ˆÜˆt�‰Ó×*Ñ*¨9×5Ñ5Ø�4ŠLä�GŠG�BŒKà‹>Ø˜‰Ià˜ˆIà—i‘i×'Ñ'¨¯©ÀÐ'ÐEˆÜ# D§O¡OÖ4‰JˆAà—+‘+“-ˆCð3Ø$×.Ñ.¨wÓ7�ð
 �|�|ØÑ*×1Ñ1Ó3�à‘ˆAØ‘ˆAà $§¡× 2Ñ 2Ö 4‘�Ø"™+�“ñ !5à�N‰N˜7 D§L¡L°¡OÔ4Ø�}‰}Ñ(Ø&�G‘ä�4—?‘?Ó#×.Ñ.¨y×9Ñ9ÙÐ%�qÑ% Ô%á�QÑ!˜SÔ!ñ5 5ð8 	× Ñ  Õ$øô+ ó 3ÜŸš¨iÜ,1ñ3’ð3ús   Â0FÆ#F?Æ>F?c                ó  • [        U R                  SSS24   U R                  5       H  u  pUR                  U5        M     [        U R                  SS2S4   U R                  5       H  u  pUR                  U5        M     g)z'Add labels to the left and bottom Axes.rx  Nr   )r�   r$   r²  r`  r³  re  )r'   r)   rŽ   s      r*   rÂ  ÚPairGrid._add_axis_labels  sa   € ä˜TŸY™Y rª1 uÑ-¨t¯{©{Ö;‰IˆBØ�M‰M˜%Ö ñ <ä˜TŸY™Y¢q¨! t™_¨d¯k©kÖ:‰IˆBØ�M‰M˜%Ö ò ;r,   c                ód   • / nU H'  n[        X   5      S:X  d  M  UR                  U5        M)     U$ )z0Find which variables in a DataFrame are numeric.Únumeric)r	   rv   )r'   rŸ   rË  rÇ   s       r*   r»  ÚPairGrid._find_numeric_cols†  s6   € àˆÛˆCÜ˜T™YÓ'¨9Õ4Ø×#Ñ# CÖ(ñ ð Ðr,   )r¾  rÊ  rù   rT   r/   rÉ  rr   rh   rÈ  rS   rR   r$   rŸ   rÁ  rµ  rÀ  rÌ   ri   rÅ  r¬   r½  r²  r³  )rG   rH   rI   rJ   rK   rU   rl   r×  rÚ  rÝ  rì  ræ  rÐ  r  r  rÂ  r»  rM   r­  r®  s   @r*   r   r   ™  sw   ø† ñð   d°4ÀØ ¨d¸5ÈdØ˜1¨°TÀ%÷m*ð m*ò^ò"òòò0Pòd%òN5ò,%%òN*%òX!÷ð r,   r   c                  ó~   • \ rS rSrSr SSSSSSSSSSSSSSS.S	 jjrS
 rS rS rS r	SSSSSSS.S jr
SS jrSrg)r   i�  zËGrid for drawing a bivariate plot with marginal univariate plots.

Many plots can be drawn by using the figure-level interface :func:`jointplot`.
Use this class directly when you need more flexibility.

Né   é   çš™™™™™É?F)r>  r?  rª   r¿   ÚratioÚspacer¬   r«   Úhue_normrÍ   rÏ   rÐ   Úmarginal_ticksc          	     ó¶  ^^• [         R                  " XU4S9n[         R                  " US-   US-   5      nUR                  USS 2S S24   5      nUR                  USS S24   US9nUR                  USS 2S4   US9nXðl        UU l        UU l        UU l        [         R                  " UR                  5       SS9  [         R                  " UR                  5       SS9  [         R                  " UR                  S	S
9SS9  [         R                  " UR                  S	S
9SS9  U(       Gdt  [         R                  " UR                  R                  5       SS9  [         R                  " UR                  R                  5       SS9  [         R                  " UR                  R                  5       SS9  [         R                  " UR                  R                  5       SS9  [         R                  " UR                  5       SS9  [         R                  " UR                  5       SS9  [         R                  " UR                  S	S
9SS9  [         R                  " UR                  S	S
9SS9  UR                  R                  S5        UR                  R                  S5        [!        U[#        X#US9S9mTR$                  R&                  S S 2TR$                  R)                  5       R+                  5       4   mU(       a  TR-                  5       mUU4S jnU" S5      U l        U" S5      U l        U" S5      U l        S H:  nTR4                  R7                  US 5      nUc  M$  [9        USU S35      " U5        M<     Ub  UR;                  U5        Ub  UR=                  U5        [#        X‰U
S9U l        [@        RB                  " U5        U(       d*  [@        RB                  " US	S9  [@        RB                  " US	S9  UU4 H=  nUR                  UR                  4 H  nURD                  RG                  S5        M      M?     URI                  5         URK                  XwS9  g )NrÔ   r   rx  r   )rÈ   )rÉ   F)ÚvisibleT)Úminor)r>  r?  rª   )rŸ   Ú	variablesc                óˆ   >• TR                  U S 5      nUb+  UR                  TR                  R                  U S 5      5      nU$ rE  )rq   Úrenamer  )rê  rë  Úpr9  s     €€r*   Úget_varÚ#JointGrid.__init__.<locals>.get_varÇ  s;   ø€ Ø—]‘] 3¨Ó-ˆFØÑ!ØŸ™ q§{¡{§¡°s¸DÓ'AÓB�ØˆMr,   r>  r?  rª   r}  Úset_rŽ   )r¬   r«   r  rà  )r)   Úbottom)ÚhspaceÚwspace)&rå   r4   ÚGridSpecrë   r/   Úax_jointÚ	ax_marg_xÚ	ax_marg_yÚsetprý   r  r  Úget_majorticklinesÚget_minorticklinesrÿ   Úgridr   r©   r9  ra   rç  ÚanyrÍ   r>  r?  rª   r  rq   r'  Úset_xlimÚset_ylimÚ_hue_paramsr   rÎ   rŽ   rþ   rZ   r‚   )r'   rŸ   r>  r?  rª   r¿   r  r  r¬   r«   r  rÍ   rÏ   rÐ   r  ÚfÚgsr(  r)  r*  r!  r·   Únamer$   r   r9  s                           @@r*   rU   ÚJointGrid.__init__—  sw  ù€ ô �JŠJ Ð/Ñ0ˆÜ�\Š\˜% !™) U¨Q¡YÓ/ˆà—=‘=  A¡B¨¨¨ G¡Ó-ˆØ—M‘M " Q¨¨¨ V¡*°X�MÐ>ˆ	Ø—M‘M " Q¡R¨ V¡*°X�MÐ>ˆ	àŒØ ˆŒØ"ˆŒØ"ˆŒô 	�Š�×*Ñ*Ó,°eÒ<Ü�Š�×*Ñ*Ó,°eÒ<Ü�Š�×*Ñ*°Ð*Ð6ÀÒFÜ�Š�×*Ñ*°Ð*Ð6ÀÒF÷ Ü�HŠH�Y—_‘_×7Ñ7Ó9À5ÒIÜ�HŠH�Y—_‘_×7Ñ7Ó9À5ÒIÜ�HŠH�Y—_‘_×7Ñ7Ó9À5ÒIÜ�HŠH�Y—_‘_×7Ñ7Ó9À5ÒIÜ�HŠH�Y×.Ñ.Ó0¸%Ò@Ü�HŠH�Y×.Ñ.Ó0¸%Ò@Ü�HŠH�Y×.Ñ.°TÐ.Ð:ÀEÒJÜ�HŠH�Y×.Ñ.°TÐ.Ð:ÀEÒJØ�O‰O× Ñ  Ô'Ø�O‰O× Ñ  Ô'ô ˜t¬t°aÀ#Ñ/FÑGˆØ—K‘K—O‘O¢A q§{¡{×'8Ñ'8Ó':×'>Ñ'>Ó'@Ð$@ÑAˆ	ö Ø!×(Ñ(Ó*ˆIö	ñ ˜“ˆŒÙ˜“ˆŒÙ˜5“>ˆŒãˆDØ—;‘;—?‘? 4¨Ó.ˆDØÓÜ˜ D¨¨¨eÐ"4Ô5°dÖ;ñ ð
 ÑØ×Ñ˜dÔ#ØÑØ×Ñ˜dÔ#ô  ¨ÈxÑXˆÔô 	�Š�aÔÞÜ�MŠM˜Y¨TÒ2Ü�MŠM˜Y¨tÒ4Ø 	Ó*ˆDØŸ™ T§Z¡ZÓ0�Ø—
‘
×&Ñ& uÖ-ó 1ñ +ð 	
�‰ÔØ	×Ñ ÐÒ5r,   c                ó�   • [        U5      R                  nUR                  5        H  u  pVXT;   d  M  UR                  XV5        M     g)z/Add params to kws if they are accepted by func.N)r   rå  r-  rC   )r'   r8   r  r   Úfunc_paramsrL  rA  s          r*   Ú_inject_kwargsÚJointGrid._inject_kwargsé  s5   € ä “o×0Ñ0ˆØŸ™ž‰HˆCØÕ!Ø—‘˜sÖ(ò 'r,   c                óR   • U R                   " U40 UD6  U R                  " U40 UD6  U $ )a‹  Draw the plot by passing functions for joint and marginal axes.

This method passes the ``kwargs`` dictionary to both functions. If you
need more control, call :meth:`JointGrid.plot_joint` and
:meth:`JointGrid.plot_marginals` directly with specific parameters.

Parameters
----------
joint_func, marginal_func : callables
    Functions to draw the bivariate and univariate plots. See methods
    referenced above for information about the required characteristics
    of these functions.
kwargs
    Additional keyword arguments are passed to both functions.

Returns
-------
:class:`JointGrid` instance
    Returns ``self`` for easy method chaining.

)Úplot_marginalsÚ
plot_joint)r'   Ú
joint_funcÚmarginal_funcr(   s       r*   ÚplotÚJointGrid.plotð  s-   € ð, 	×Ò˜MÑ4¨VÒ4Ø�Š˜
Ñ- fÒ-Øˆr,   c                ó  • UR                  5       n[        UR                  5      R                  S5      (       a  U R                  US'   O [
        R                  " U R                  5        U R                  b+  U R                  US'   U R                  XU R                  5        [        UR                  5      R                  S5      (       a!  U" SU R                  U R                  S.UD6  U $ U" U R                  U R                  40 UD6  U $ )a;  Draw a bivariate plot on the joint axes of the grid.

Parameters
----------
func : plotting callable
    If a seaborn function, it should accept ``x`` and ``y``. Otherwise,
    it must accept ``x`` and ``y`` vectors of data as the first two
    positional arguments, and it must plot on the "current" axes.
    If ``hue`` was defined in the class constructor, the function must
    accept ``hue`` as a parameter.
kwargs
    Keyword argument are passed to the plotting function.

Returns
-------
:class:`JointGrid` instance
    Returns ``self`` for easy method chaining.

r#  r)   rª   r  r#   )rB   r&  rH   r*  r(  rå   rS  rª   r9  r2  r>  r?  )r'   r8   r(   s      r*   r=  ÚJointGrid.plot_joint
  sÌ   € ð( —‘“ˆÜˆt�‰Ó×*Ñ*¨9×5Ñ5ØŸ=™=ˆF�4ŠLä�GŠG�D—M‘MÔ"Ø�8‰8ÑØ ŸH™HˆF�5‰MØ×Ñ ¨d×.>Ñ.>Ô?äˆt�‰Ó×*Ñ*¨9×5Ñ5ÙÐ.�4—6‘6˜TŸV™VÑ. vÒ.ð ˆñ �—‘˜Ÿ™Ñ* 6Ò*àˆr,   c                óÜ  • [        UR                  5      R                  S5      =(       a    UR                  S:X  + n[	        U5      R
                  nUR                  5       nU R                  b+  U R                  US'   U R                  XU R                  5        SU;   a  UR                  SS5        SU;   a	  SS0nSS0nOSU;   a  SS0nSS	0nU(       a   U" SU R                  U R                  S
.UD6  O5[        R                  " U R                  5        U" U R                  40 WDUD6  U(       a   U" SU R                  U R                   S.UD6  O5[        R                  " U R                   5        U" U R                  40 WDUD6  U R                  R"                  R%                  5       R'                  S5        U R                   R(                  R%                  5       R'                  S5        U $ )aƒ  Draw univariate plots on each marginal axes.

Parameters
----------
func : plotting callable
    If a seaborn function, it should  accept ``x`` and ``y`` and plot
    when only one of them is defined. Otherwise, it must accept a vector
    of data as the first positional argument and determine its orientation
    using the ``vertical`` parameter, and it must plot on the "current" axes.
    If ``hue`` was defined in the class constructor, it must accept ``hue``
    as a parameter.
kwargs
    Keyword argument are passed to the plotting function.

Returns
-------
:class:`JointGrid` instance
    Returns ``self`` for easy method chaining.

r#  Údistplotrª   rx   FÚorientationÚverticalÚ
horizontalT)r>  r)   )r?  r)   r#   )r&  rH   r*  rG   r   rå  rB   rª   r9  r2  rC   r>  r)  rå   rS  r?  r*  r  Ú	get_labelrþ   rÿ   )r'   r8   r(   Úseaborn_funcr8  Úorient_kw_xÚorient_kw_ys          r*   r<  ÚJointGrid.plot_marginals.  s—  € ô, �—‘Ó ×+Ñ+¨IÓ6÷ 0à—M‘M ZÒ/ð 	ô
   “o×0Ñ0ˆØ—‘“ˆØ�8‰8ÑØ ŸH™HˆF�5‰MØ×Ñ ¨d×.>Ñ.>Ô?à�{Ó"Ø×Ñ˜h¨Ô.à˜KÓ'à(¨*Ð5ˆKØ(¨,Ð7‰KØ˜;Ó&à% uÐ-ˆKØ% tÐ,ˆKæÙÐ7�4—6‘6˜dŸn™nÑ7°Ó7ä�GŠG�D—N‘NÔ#Ù�—‘Ñ1˜;Ð1¨&Ò1æÙÐ7�4—6‘6˜dŸn™nÑ7°Ó7ä�GŠG�D—N‘NÔ#Ù�—‘Ñ1˜;Ð1¨&Ò1à�‰×Ñ×&Ñ&Ó(×4Ñ4°UÔ;Ø�‰×Ñ×&Ñ&Ó(×4Ñ4°UÔ;àˆr,   Tr‹  rŒ  )r>  r?  ÚjointÚmarginalr   r�  c               óB  • XWS'   XgS'   UbH  U(       a  U R                   R                  " U40 UD6  U(       a  U R                  R                  " U40 UD6  UbH  U(       a  U R                   R                  " U40 UD6  U(       a  U R                  R                  " U40 UD6  U $ )a²  Add a reference line(s) to joint and/or marginal axes.

Parameters
----------
x, y : numeric
    Value(s) to draw the line(s) at.
joint, marginal : bools
    Whether to add the reference line(s) to the joint/marginal axes.
color : :mod:`matplotlib color <matplotlib.colors>`
    Specifies the color of the reference line(s).
linestyle : str
    Specifies the style of the reference line(s).
line_kws : key, value mappings
    Other keyword arguments are passed to :meth:`matplotlib.axes.Axes.axvline`
    when ``x`` is not None and :meth:`matplotlib.axes.Axes.axhline` when ``y``
    is not None.

Returns
-------
:class:`JointGrid` instance
    Returns ``self`` for easy method chaining.

r   r�  )r(  r�  r)  r�  r*  )r'   r>  r?  rN  rO  r   r�  r‘  s           r*   r’  ÚJointGrid.reflinek  s‹   € ð6 "�ÑØ )�Ñà‰=ÞØ—‘×%Ò% aÑ4¨8Ò4ÞØ—‘×&Ò& qÑ5¨HÒ5à‰=ÞØ—‘×%Ò% aÑ4¨8Ò4ÞØ—‘×&Ò& qÑ5¨HÒ5àˆr,   c                óz   • U R                   R                  " U40 UD6  U R                   R                  " U40 UD6  U $ )aœ  Set axis labels on the bivariate axes.

Parameters
----------
xlabel, ylabel : strings
    Label names for the x and y variables.
kwargs : key, value mappings
    Other keyword arguments are passed to the following functions:

    - :meth:`matplotlib.axes.Axes.set_xlabel`
    - :meth:`matplotlib.axes.Axes.set_ylabel`

Returns
-------
:class:`JointGrid` instance
    Returns ``self`` for easy method chaining.

)r(  r`  re  )r'   ÚxlabelÚylabelr(   s       r*   rO  ÚJointGrid.set_axis_labels—  s7   € ð& 	�‰× Ò  Ñ2¨6Ò2Ø�‰× Ò  Ñ2¨6Ò2Øˆr,   )r/   r2  r(  r)  r*  rª   r>  r?  rE  )r!  r!  )rG   rH   rI   rJ   rK   rU   r9  r@  r=  r<  r’  rO  rM   r#   r,   r*   r   r   �  sh   † ñð ðP6à
�$˜DØ˜ Ø ¨tØ˜4 d¸5öP6òd)òò4"òH;ð| ˜4 t°dØ˜dõ*÷Xr,   r   aÍ  Set up the grid of subplots and store data internally for easy plotting.

Parameters
----------
{params.core.data}
{params.core.xy}
height : number
    Size of each side of the figure in inches (it will be square).
ratio : number
    Ratio of joint axes height to marginal axes height.
space : number
    Space between the joint and marginal axes
dropna : bool
    If True, remove missing observations before plotting.
{{x, y}}lim : pairs of numbers
    Set axis limits to these values before plotting.
marginal_ticks : bool
    If False, suppress ticks on the count/density axis of the marginal plots.
{params.core.hue}
    Note: unlike in :class:`FacetGrid` or :class:`PairGrid`, the axes-level
    functions must support ``hue`` to use it in :class:`JointGrid`.
{params.core.palette}
{params.core.hue_order}
{params.core.hue_norm}

See Also
--------
{seealso.jointplot}
{seealso.pairgrid}
{seealso.pairplot}

Examples
--------

.. include:: ../docstrings/JointGrid.rst

Úseealso)r   rV  ÚscatterÚautor°  F)rª   r«   r¬   r±  r²  r³  ÚkindÚ	diag_kindÚmarkersr¿   rÀ   r´  rÍ   Úplot_kwsÚdiag_kwsÚgrid_kwsrb   c               óH  • SSK JnJn  Ub  Un
Sn[        R                  " U[
        5        [        U [        R                  5      (       d  [        S[        U 5       35      eUc  0 OUR                  5       nUc  0 OUR                  5       nUc  0 OUR                  5       nUS:X  a  Uc  US:X  a  SOSnO
US:X  a  SOSnUR                  SUS:H  5        [        U 4XEXaX#UX«US	.
UD6nU	b˜  US
:X  ad  UR                  c  SnO[        UR                  5      n[        U	[         5      (       d  U	/U-  n	[        U	5      U:w  a  [#        S5      eSU	0Ul        O.US:X  a(  [        U	[&        5      (       a  XžS'   OUb  X   US'   XžS'   UR                  5       nUR                  SS5        US:X  a  UR(                  " U40 UD6  O=US:X  a7  UR                  SS5        UR                  SS5        UR(                  " U40 UD6  Ub  UR*                  nOUR,                  nUS:X  a  SSKJn  U" U40 UD6  OSUS
:X  a  SSKJn  U" U40 UD6  O=US:X  a"  SSK Jn  UR                  SS5        U" U40 UD6  OUS:X  a  SSK Jn  U" U40 UD6  Ub  UR7                  5         UR9                  5         U$ )aY  Plot pairwise relationships in a dataset.

By default, this function will create a grid of Axes such that each numeric
variable in ``data`` will by shared across the y-axes across a single row and
the x-axes across a single column. The diagonal plots are treated
differently: a univariate distribution plot is drawn to show the marginal
distribution of the data in each column.

It is also possible to show a subset of variables or plot different
variables on the rows and columns.

This is a high-level interface for :class:`PairGrid` that is intended to
make it easy to draw a few common styles. You should use :class:`PairGrid`
directly if you need more flexibility.

Parameters
----------
data : `pandas.DataFrame`
    Tidy (long-form) dataframe where each column is a variable and
    each row is an observation.
hue : name of variable in ``data``
    Variable in ``data`` to map plot aspects to different colors.
hue_order : list of strings
    Order for the levels of the hue variable in the palette
palette : dict or seaborn color palette
    Set of colors for mapping the ``hue`` variable. If a dict, keys
    should be values  in the ``hue`` variable.
vars : list of variable names
    Variables within ``data`` to use, otherwise use every column with
    a numeric datatype.
{x, y}_vars : lists of variable names
    Variables within ``data`` to use separately for the rows and
    columns of the figure; i.e. to make a non-square plot.
kind : {'scatter', 'kde', 'hist', 'reg'}
    Kind of plot to make.
diag_kind : {'auto', 'hist', 'kde', None}
    Kind of plot for the diagonal subplots. If 'auto', choose based on
    whether or not ``hue`` is used.
markers : single matplotlib marker code or list
    Either the marker to use for all scatterplot points or a list of markers
    with a length the same as the number of levels in the hue variable so that
    differently colored points will also have different scatterplot
    markers.
height : scalar
    Height (in inches) of each facet.
aspect : scalar
    Aspect * height gives the width (in inches) of each facet.
corner : bool
    If True, don't add axes to the upper (off-diagonal) triangle of the
    grid, making this a "corner" plot.
dropna : boolean
    Drop missing values from the data before plotting.
{plot, diag, grid}_kws : dicts
    Dictionaries of keyword arguments. ``plot_kws`` are passed to the
    bivariate plotting function, ``diag_kws`` are passed to the univariate
    plotting function, and ``grid_kws`` are passed to the :class:`PairGrid`
    constructor.

Returns
-------
grid : :class:`PairGrid`
    Returns the underlying :class:`PairGrid` instance for further tweaking.

See Also
--------
PairGrid : Subplot grid for more flexible plotting of pairwise relationships.
JointGrid : Grid for plotting joint and marginal distributions of two variables.

Examples
--------

.. include:: ../docstrings/pairplot.rst

r   rý  zKThe `size` parameter has been renamed to `height`; please update your code.z-'data' must be pandas DataFrame object, not: rX  ÚkdeÚhistrµ  )
r±  r²  r³  rª   r«   r¬   r´  r¿   rÀ   rÍ   ÚregzSmarkers must be a singleton or a list of markers for each level of the hue variableÚmarkerrW  rI  r[  rx   FÚfillTÚwarn_singular©Úscatterplot)Úregplot)rÿ  )rþ  )r   rþ  rÿ  rç   rè   ÚUserWarningrt   rÃ  r  Ú	TypeErrorÚtyperB   rC   r   ri   r§   rj   rà   rÌ   r&  rì  rÝ  rl   Ú
relationalrg  Ú
regressionrh  r–   rZ   )rŸ   rª   r«   r¬   r±  r²  r³  rY  rZ  r[  r¿   rÀ   r´  rÍ   r\  r]  r^  rb   rþ  rÿ  Úmsgr.  Ú	n_markersÚplotterrg  rh  s                             r*   r   r   Ú  s¼  € ÷f 1ð ÑØˆð*ˆä�Š�cœ;Ô'ä�dœBŸL™L×)Ñ)ÜØ;¼DÀ»J¸<ÐHóJð 	Jð Ñ%‰r¨8¯=©=«?€HØÑ%‰r¨8¯=©=«?€HØÑ%‰r¨8¯=©=«?€Hð �FÓØ‰;Ø!%¨£™°F‰Ià"&¨&£.™°eˆIð ×Ñ˜ y°FÑ':Ô;Ü�Dð M˜t¸6Ø'ÀØ!¸ñMàCKñM€Dð ÑØ�5‹=à�~‰~Ñ%Ø‘	ä §¡Ó/�	Ü˜g¤t×,Ñ,Ø"˜) iÑ/�Ü�7‹|˜yÓ(Ü ð "Nó Oð Oà$ gÐ.ˆD�LØ�YÓÜ˜'¤3×'Ñ'Ø%,˜Ò"Ø‘Ø$(¡I�˜Ñ!Ø&-˜Ñ#ð �}‰}‹€HØ×Ñ˜ %Ô(Ø�FÓØ�Š�hÑ+ (Ó+Ø	�eÓ	Ø×Ñ˜F DÔ)Ø×Ñ˜O¨UÔ3Ø�Š�gÑ* Ò*ð ÑØ×"Ñ"‰à—(‘(ˆàˆyÓÝ+Ù�Ñ(˜xÓ(Ø	�‹Ý'Ù�Ñ$˜8Ó$Ø	�‹Ý*Ø×Ñ˜O¨UÔ3Ù�Ñ$˜8Ó$Ø	�‹Ý+Ù�Ñ%˜HÒ%ð �Ø�‰Ôà×ÑÔà€Kr,   r  r  r  )r>  r?  rª   rY  r¿   r  r  rÍ   rÏ   rÐ   r   r¬   r«   r  r  Ú	joint_kwsÚmarginal_kwsc               ól  • SSK Jn  SSKJnJn  SSKJnJnJn  UR                  SS 5      b  Sn[        R                  " U[        SS9  Uc  0 OUR                  5       nUR                  U5        Uc  0 OUR                  5       n/ S	Qn/ nU H-  nUU;   d  M  UR                  U5        UR                  U5        M/     U(       aA  US
:w  a;  SR!                  SR#                  U5      5      n[        R                  " U[        5        / SQn[%        SUU5        Ub  US;   a  SU S3n['        U5      eUc  Sn[(        R*                  R,                  R/                  U5      n[0        R2                  " SSS5       Vs/ s H  n[5        UUS9PM     n n[7        U SS9n!US:X  a  Sn[9        XX#XÍUX…XgXšUS9n"U"R:                  b  UR=                  SS5        UR?                  S5      (       a‚  UR=                  SU5        U"R@                  " U40 UD6  U"R:                  c  Un#O&Un#UR=                  SS5        UR=                  SS5        UR=                  SU5        U"RB                  " U#40 UD6  GO©UR?                  S 5      (       aú  UR=                  SU5        U"R@                  " U40 UD6  UR=                  S
S5        UR=                  SU5        UR                  5       n$UR                  5       n%S!n&U& HU  n[E        URG                  U5      [H        5      (       d  M)  UU   u  n'n(U$R=                  UU'5        U%R=                  UU(5        MW     U" S+XUS".U$DSU"RJ                  0D6  U" S+XUS#.U%DSU"RL                  0D6  GO™UR?                  S
5      (       ay  UR=                  SU5        UR=                  SS5        U"R@                  " U40 UD6  UR=                  SU5        SU;   a  UR=                  SUS   5        U"RB                  " U40 UD6  GO
UR?                  S5      (       a×  [O        U" U"RP                  5      S$5      n)[O        U" U"RR                  5      S$5      n*[U        [0        RV                  " U)U*/5      5      n+UR=                  S%U+5        UR=                  S&U!5        U"R@                  " [X        RZ                  40 UD6  UR=                  S
S5        UR=                  SU5        U"RB                  " U40 UD6  GOUR?                  S'5      (       a]  UR=                  SU5        UR=                  S
S5        U"RB                  " U40 UD6  UR=                  SU5        U"R@                  " U40 UD6  OªUR?                  S(5      (       a”  UR=                  SU5        U"R@                  " U40 UD6  U"R\                  R^                  S   Ra                  5       Rb                  u  pUR=                  SU5        U" S+XU"RJ                  S).UD6  U" S+X#U"RL                  S*.UD6  [X        Rd                  " U"R\                  5        U"$ s  snf ),Nr   rf  )rh  Ú	residplot)rþ  rÿ  Ú_freedman_diaconis_binsr)   z4Ignoring `ax`; jointplot is a figure-level function.rf   )Ú
stacklevel)ÚrugÚfitÚhist_kwsÚnorm_histhist_kwsÚrug_kwsr`  znThe marginal plotting function has changed to `histplot`, which does not accept the following argument(s): {}.z, )rW  ra  Úhexr`  rb  ÚresidrY  )r|  rb  r}  zUse of `hue` with `kind='z'` is not currently supported.ÚC0r   é   )ÚlT)Úas_cmapr|  )rŸ   r>  r?  rª   r¬   r«   r  rÍ   r¿   r  r  rÏ   rÐ   r  rx   FrW  r   re  rd  ra  )ÚbinsÚbinwidthÚbinrange)rŸ   r>  rª   )rŸ   r?  rª   é2   ÚgridsizeÚcmaprb  r}  )r>  rª   r)   )r?  rª   r)   r#   )3rl  rg  rm  rh  rt  r   rþ  rÿ  ru  r%  rç   rè   ri  rB   rœ   rv   r(  rƒ  r   rà   rn   r®   ÚcolorConverterÚto_rgbrÚ   Úlinspacer   r   r   rª   rC   r*  r=  r<  rt   rq   ru   r)  r*  Úminr>  r?  rá   Úmeanrå   Úhexbinr(  ÚcollectionsÚget_offsetsÚTrS  ),rŸ   r>  r?  rª   rY  r¿   r  r  rÍ   rÏ   rÐ   r   r¬   r«   r  r  rq  rr  r(   rg  rh  rt  rþ  rÿ  ru  rn  Údistplot_keysÚunused_keysrL  Ú
plot_kindsÚ	color_rgbrA  r®   r‡  r.  Ú	marg_funcÚ
marg_x_kwsÚ
marg_y_kwsÚ	pair_keysÚx_valÚy_valÚx_binsÚy_binsr†  s,                                               r*   r   r   ˆ  s“  € õ (ß.ßIÑIà‡z�z�$˜ÓÑ)ØDˆÜ�Š�cœ;°1Ò5ð  Ñ'‘¨Y¯^©^Ó-=€IØ×Ñ�VÔØ%Ñ-‘2°<×3DÑ3DÓ3F€Lò€Mð €KÛˆØ�,ÕØ×Ñ˜sÔ#Ø×Ñ˜SÖ!ñ ö �t˜u“}ðDç
‰&�—‘˜;Ó'Ó
(ð 	ô 	�Š�cœ;Ô'ò C€JÜ�F˜J¨Ô-ð �˜4Ð#:Ó:Ø)¨$¨Ð/MÐNˆÜ˜‹oÐð �}ØˆÜ—
‘
×)Ñ)×0Ñ0°Ó7€IÜ:<¿+º+ÀaÈÈBÔ:OÓPÒ:O°3Œn˜Y¨#Ô.Ñ:O€FÐPÜ˜¨Ñ.€Dð ˆuƒ}Øˆô Ø˜!Ø°xØ¨EØ¨^ñ	€Dð ‡x�xÑØ×Ñ ¨%Ô0ð ‡��y×!Ñ!à×Ñ˜W eÔ,Ø�Š˜Ñ1 yÒ1à�8‰8ÑØ ‰IàˆIØ×#Ñ# O°UÔ;Ø×#Ñ# F¨DÔ1à×Ñ ¨Ô/Ø×Ò˜IÑ6¨Ô6à	�‰˜×	 Ñ	 ð
 	×Ñ˜W eÔ,Ø�Š˜Ñ. IÒ.à×Ñ  uÔ-Ø×Ñ ¨Ô/à!×&Ñ&Ó(ˆ
Ø!×&Ñ&Ó(ˆ
à2ˆ	ÛˆCÜ˜)Ÿ-™-¨Ó,¬e×4Ó4Ø(¨™~‘��uØ×%Ñ% c¨5Ô1Ø×%Ñ% c¨5Ö1ñ	 ñ 	ÐJ�d SÑJ¨JÑJ¸4¿>¹>ÓJÙÐJ�d SÑJ¨JÑJ¸4¿>¹>ÕJà	�‰˜×	Ñ	à×Ñ˜W eÔ,Ø×Ñ˜_¨eÔ4Ø�Š˜Ñ- 9Ò-à×Ñ ¨Ô/Ø�YÓØ×#Ñ# F¨I°fÑ,=Ô>à×Ò˜GÑ4 |Ô4à	�‰˜×	Ñ	äÑ,¨T¯V©VÓ4°bÓ9ˆÜÑ,¨T¯V©VÓ4°bÓ9ˆÜ”r—w’w ¨Ð/Ó0Ó1ˆà×Ñ˜Z¨Ô2Ø×Ñ˜V TÔ*Ø�ŠœŸ
™
Ñ0 iÒ0à×Ñ  uÔ-Ø×Ñ ¨Ô/Ø×Ò˜HÑ5¨Ô5à	�‰˜×	Ñ	à×Ñ ¨Ô/Ø×Ñ  tÔ,Ø×Ò˜HÑ5¨Ò5à×Ñ˜W eÔ,Ø�Š˜Ñ- 9Ó-à	�‰˜×	!Ñ	!à×Ñ˜W eÔ,Ø�Š˜	Ñ/ YÒ/à�}‰}×(Ñ(¨Ñ+×7Ñ7Ó9×;Ñ;‰ˆØ×Ñ ¨Ô/ÙÐA�1 $§.¡.ÑA°LÒAÙÐA�1 $§.¡.ÑA°LÒAô ‡G‚GˆD�M‰MÔà€KùòU Qs   Å7X1aæ  Draw a plot of two variables with bivariate and univariate graphs.

This function provides a convenient interface to the :class:`JointGrid`
class, with several canned plot kinds. This is intended to be a fairly
lightweight wrapper; if you need more flexibility, you should use
:class:`JointGrid` directly.

Parameters
----------
{params.core.data}
{params.core.xy}
{params.core.hue}
kind : {{ "scatter" | "kde" | "hist" | "hex" | "reg" | "resid" }}
    Kind of plot to draw. See the examples for references to the underlying functions.
height : numeric
    Size of the figure (it will be square).
ratio : numeric
    Ratio of joint axes height to marginal axes height.
space : numeric
    Space between the joint and marginal axes
dropna : bool
    If True, remove observations that are missing from ``x`` and ``y``.
{{x, y}}lim : pairs of numbers
    Axis limits to set before plotting.
{params.core.color}
{params.core.palette}
{params.core.hue_order}
{params.core.hue_norm}
marginal_ticks : bool
    If False, suppress ticks on the count/density axis of the marginal plots.
{{joint, marginal}}_kws : dicts
    Additional keyword arguments for the plot components.
kwargs
    Additional keyword arguments are passed to the function used to
    draw the plot on the joint Axes, superseding items in the
    ``joint_kws`` dictionary.

Returns
-------
{returns.jointgrid}

See Also
--------
{seealso.jointgrid}
{seealso.pairgrid}
{seealso.pairplot}

Examples
--------

.. include:: ../docstrings/jointplot.rst

Úreturns)r   r�  rV  rE  )7Ú
__future__r   Ú	itertoolsr   Úinspectr   rç   Útextwrapr   ÚnumpyrÚ   ÚpandasrÃ  r$  rn   Úmatplotlib.pyplotÚpyplotrå   Ú_baser   r	   r
   Ú
_core.datar   Ú_compatr   r   r!  r   r   r   r   r   r   Úpalettesr   r   Ú_docstringsr   r   Ú__all__Úfrom_nested_componentsÚ_param_docsr    rO   r©   r¬  r   r   r   r(  rU   rK   r   r   r#   r,   r*   Ú<module>r®     s*  ðÝ "Ý Ý Û Ý ã Û Û Ý ç BÑ BÝ *ß 3Ý ÷õ ÷ 3÷ò
 J€ð "×8Ò8Ø	�HÑ	ñ€÷
?-ñ ?-ôDKˆ9ô Kñ\ á	ð ó 
	ñ
 ð ó 	ñ ð ó 	ñ
 ð ó 	ñ
 ð ó 	ñ
 ð ó 	ñ ð ó 	ñ
 ð ó 	ñ ð ó 	ñ
 ð ó 	ñ ð ó 	ñi8€ôvf/�ô f/ôRsˆtô sôl]�	ô ]ð@	%÷J �FØØ�yÑ!ð ð ðK 
× Ñ Ô ðZ 	˜ dØ	�d 4Ø	˜f¨dØ�q ¨uØ˜D¨4°dõkð^ 
ð]Ø˜D d°Ø�A˜R¨°D¸tØ
˜¨°tÈEØ ö	]ð@5÷j �FØØ�yÑ!Ø�yÑ!ð ð ðk 
Õ r,   