Ë
    ¤ehçA  ã                  ó  — d Z ddlmZ ddlmZ ddlZddlmZ ddl	Z
ddl	mZ ddlmZ erddlmZ ddlmZ dd	„Zdd
„Zd„ Zdd„Zdd d„Zd„ Zd!d„Zd„ Zd"d„Zd#d„Zd!d„Zd$d„Zd%d„Z	 dd„Z i fd„Z!d&d„Z"d„ Z#d„ Z$d'd„Z%d„ Z&d„ Z'y)(zF
Module consolidating common testing functions for checking plotting.
é    )Úannotations)ÚTYPE_CHECKINGN)Úis_list_like)ÚSeries)ÚSequence©ÚAxesc                óä   — |r|€t        d«      ‚t        | «      } | D ]Q  }|r;|j                  «       €J ‚t        |j                  «       j	                  «       |«       Œ@|j                  «       €ŒQJ ‚ y)a)  
    Check each axes has expected legend labels

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like
    labels : list-like
        expected legend labels
    visible : bool
        expected legend visibility. labels are checked only when visible is
        True
    Nz-labels must be specified when visible is True)Ú
ValueErrorÚ_flatten_visibleÚ
get_legendÚ_check_text_labelsÚ	get_texts)ÚaxesÚlabelsÚvisibleÚaxs       úZ/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/pandas/tests/plotting/common.pyÚ_check_legend_labelsr      sp   € ñ �F�NÜÐHÓIÐIÜ˜DÓ!€DØò +ˆÙØ—=‘=“?Ð.Ð.Ð.Ü˜rŸ}™}›×8Ñ8Ó:¸FÕCà—=‘=“?Ñ*Ð*Ð*ñ+ó    c                óÄ   — |r|€t        d«      ‚|r8| j                  «       \  }}|D �cg c]  }|j                  «       ‘Œ }}||k(  sJ ‚y| j                  «       �J ‚yc c}w )a  
    Check ax has expected legend markers

    Parameters
    ----------
    ax : matplotlib Axes object
    expected_markers : list-like
        expected legend markers
    visible : bool
        expected legend visibility. labels are checked only when visible is
        True
    Nz.Markers must be specified when visible is True)r   Úget_legend_handles_labelsÚ
get_markerr   )r   Úexpected_markersr   ÚhandlesÚ_ÚhandleÚmarkerss          r   Ú_check_legend_markerr   /   sp   € ñ Ð$Ð,ÜÐIÓJÐJÙØ×1Ñ1Ó3‰
ˆ�Ø5<Ö=¨6�6×$Ñ$Õ&Ð=ˆÐ=ØÐ*Ò*Ð*Ñ*à�}‰}‹Ð&Ð&Ñ&ùò >s   ©Ac                ó8  — ddl m} | j                  «       }|j                  «       }t        |«      t        |«      k(  sJ ‚t	        ||«      D ];  \  }}|j                  «       }|j                  «       }t        j                  ||«       Œ= |j                  d«       y)zŒ
    Check each axes has identical lines

    Parameters
    ----------
    xp : matplotlib Axes object
    rs : matplotlib Axes object
    r   NÚall)	Úmatplotlib.pyplotÚpyplotÚ	get_linesÚlenÚzipÚ
get_xydataÚtmÚassert_almost_equalÚclose)	ÚxpÚrsÚpltÚxp_linesÚrs_linesÚxplÚrslÚxpdataÚrsdatas	            r   Ú_check_datar4   F   sƒ   € õ $à�|‰|‹~€HØ�|‰|‹~€Häˆx‹=œC ›MÒ)Ð)Ð)Ü˜ (Ó+ò /‰ˆˆSØ—‘Ó!ˆØ—‘Ó!ˆÜ
×Ñ˜v vÕ.ð/ð
 ‡I�IˆeÕr   c                ó|   — ddl m} t        | |«      st        | «      s| g} | D ]  }|j	                  «       |k(  rŒJ ‚ y)zà
    Check each artist is visible or not

    Parameters
    ----------
    collections : matplotlib Artist or its list-like
        target Artist or its list or collection
    visible : bool
        expected visibility
    r   )Ú
CollectionN)Úmatplotlib.collectionsr6   Ú
isinstancer   Úget_visible)Úcollectionsr   r6   Úpatchs       r   Ú_check_visibler<   ]   sE   € õ 2ä�k :Ô.´|ÀKÔ7PØ"�mˆàò .ˆØ× Ñ Ó" gÓ-Ð-Ð-ñ.r   c                ól   — t        | «      } | D ]$  }|j                  D ]  }|j                  |k(  rŒJ ‚ Œ& y)z¹
    Check for each artist whether it is filled or not

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like
    filled : bool
        expected filling
    N)r   ÚpatchesÚfill)r   Úfilledr   r;   s       r   Ú_check_patches_all_filledrA   q   sB   € ô ˜DÓ!€DØò (ˆØ—Z‘Zò 	(ˆEØ—:‘: Ó'Ð'Ð'ñ	(ñ(r   c                ó�   — | j                  «       }t        t        ||«      «      }| j                  D �cg c]  }||   ‘Œ	 c}S c c}w ©N)ÚuniqueÚdictr&   Úvalues)ÚseriesÚcolorsrD   ÚmappedÚvs        r   Ú_get_colors_mappedrK   ‚   s<   € Ø�]‰]‹_€Fô ”#�f˜fÓ%Ó&€FØ%Ÿ}™}Ö-˜!ˆF�1‹IÒ-Ð-ùÒ-s   ´Ac                óR  — ddl m} ddlm}m}m} ddlm} |j                  }	|�Ê|�t        ||«      }|dt        | «       }t        | «      t        |«      k(  sJ ‚t        | |«      D ]†  \  }
}t        |
|«      r"|
j                  «       }|	j                  |«      }n;t        |
||f«      rt        |
j!                  «       d   «      }n|
j!                  «       }|	j                  |«      }||k(  rŒ†J ‚ |�·|�t        ||«      }|dt        | «       }t        | «      t        |«      k(  sJ ‚t        | |«      D ]r  \  }
}t        |
|«      r|
j#                  «       d   }n|
j#                  «       }t        |t$        j&                  «      rt        |«      }|	j                  |«      }||k(  rŒrJ ‚ yy)aÿ  
    Check each artist has expected line colors and face colors

    Parameters
    ----------
    collections : list-like
        list or collection of target artist
    linecolors : list-like which has the same length as collections
        list of expected line colors
    facecolors : list-like which has the same length as collections
        list of expected face colors
    mapping : Series
        Series used for color grouping key
        used for andrew_curves, parallel_coordinates, radviz test
    r   )rH   )r6   ÚLineCollectionÚPolyCollection)ÚLine2DN)Ú
matplotlibrH   r7   r6   rM   rN   Úmatplotlib.linesrO   ÚColorConverterrK   r%   r&   r8   Ú	get_colorÚto_rgbaÚtupleÚget_edgecolorÚget_facecolorÚnpÚndarray)r:   Ú
linecolorsÚ
facecolorsÚmappingrH   r6   rM   rN   rO   Úconvr;   ÚcolorÚresultÚexpecteds                 r   Ú_check_colorsra   Š   s±  € õ  "÷ñ õ
 (à× Ñ €DØÐØÐÜ+¨G°ZÓ@ˆJØ#Ð$6¤c¨+Ó&6Ð7ˆJä�;Ó¤3 z£?Ò2Ð2Ð2Ü ¨ZÓ8ò 	&‰LˆE�5Ü˜% Ô(ØŸ™Ó*�àŸ™ fÓ-‘Ü˜E N°NÐ#CÔDÜ˜u×2Ñ2Ó4°QÑ7Ó8‘à×,Ñ,Ó.�à—|‘| EÓ*ˆHØ˜XÓ%Ð%Ð%ð	&ð ÐØÐÜ+¨G°ZÓ@ˆJØ#Ð$6¤c¨+Ó&6Ð7ˆJä�;Ó¤3 z£?Ò2Ð2Ð2Ü ¨ZÓ8ò 	&‰LˆE�5Ü˜% Ô,à×,Ñ,Ó.¨qÑ1‘à×,Ñ,Ó.�ä˜&¤"§*¡*Ô-Ü˜v›�à—|‘| EÓ*ˆHØ˜XÓ%Ð%Ð%ñ	&ð r   c                óò   — t        | «      s| j                  «       |k(  sJ ‚y| D �cg c]  }|j                  «       ‘Œ }}t        |«      t        |«      k(  sJ ‚t        ||«      D ]  \  }}||k(  rŒJ ‚ yc c}w )a  
    Check each text has expected labels

    Parameters
    ----------
    texts : matplotlib Text object, or its list-like
        target text, or its list
    expected : str or list-like which has the same length as texts
        expected text label, or its list
    N)r   Úget_textr%   r&   )Útextsr`   Útr   ÚlabelÚes         r   r   r   Ê   s{   € ô ˜ÔØ�~‰~Ó 8Ò+Ð+Ñ+à(-Ö. 1�!—*‘*•,Ð.ˆÐ.Ü�6‹{œc (›mÒ+Ð+Ð+Ü˜F HÓ-ò 	‰HˆE�1Ø˜A“:Ð�:ñ	ùò /s   ¦A4c                óú  — ddl m} t        | «      } | D �]d  }|€|�¬t        |j                  j                  «       |«      r|j                  «       }n#|j                  «       |j                  d¬«      z   }|D ]O  }|�$t        j                  |j                  «       |«       |€Œ,t        j                  |j                  «       |«       ŒQ |€|€Œ¹t        |j                  j                  «       |«      r|j                  «       }n#|j                  «       |j                  d¬«      z   }|D ]O  }|�$t        j                  |j                  «       |«       |€Œ,t        j                  |j                  «       |«       ŒQ �Œg y)ac  
    Check each axes has expected tick properties

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like
    xlabelsize : number
        expected xticks font size
    xrot : number
        expected xticks rotation
    ylabelsize : number
        expected yticks font size
    yrot : number
        expected yticks rotation
    r   )ÚNullFormatterNT)Úminor)Úmatplotlib.tickerri   r   r8   ÚxaxisÚget_minor_formatterÚget_xticklabelsr(   r)   Úget_fontsizeÚget_rotationÚyaxisÚget_yticklabels)	r   Ú
xlabelsizeÚxrotÚ
ylabelsizeÚyrotri   r   r   rf   s	            r   Ú_check_ticks_propsrw   Þ   sf  € õ  0ä˜DÓ!€DØó GˆØÐ! TÐ%5Ü˜"Ÿ(™(×6Ñ6Ó8¸-ÔHð ×+Ñ+Ó-‘à×+Ñ+Ó-°×0BÑ0BÈÐ0BÓ0NÑN�àò G�ØÐ)Ü×*Ñ*¨5×+=Ñ+=Ó+?ÀÔLØÑ#Ü×*Ñ*¨5×+=Ñ+=Ó+?ÀÕFð	Gð Ð! TÑ%5Ü˜"Ÿ(™(×6Ñ6Ó8¸-ÔHØ×+Ñ+Ó-‘à×+Ñ+Ó-°×0BÑ0BÈÐ0BÓ0NÑN�àò G�ØÐ)Ü×*Ñ*¨5×+=Ñ+=Ó+?ÀÔLØÑ#Ü×*Ñ*¨5×+=Ñ+=Ó+?ÀÕFò	Gñ+Gr   c                ó¤   — t        | «      } | D ]@  }|j                  j                  «       |k(  sJ ‚|j                  j                  «       |k(  rŒ@J ‚ y)zö
    Check each axes has expected scales

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like
    xaxis : {'linear', 'log'}
        expected xaxis scale
    yaxis : {'linear', 'log'}
        expected yaxis scale
    N)r   rl   Ú	get_scalerq   )r   rl   rq   r   s       r   Ú_check_ax_scalesrz     sS   € ô ˜DÓ!€DØò -ˆØ�x‰x×!Ñ!Ó# uÒ,Ð,Ð,Ø�x‰x×!Ñ!Ó# uÓ,Ð,Ð,ñ-r   c                ó\  — ddl m} |€d}t        | «      }|�5t        |«      |k(  sJ ‚|D ]   }t        |j	                  «       «      dkD  rŒ J ‚ |�Št        «       }t        «       } || «      D ]N  }|j                  «       j                  «       }	|j                  |	d   d   «       |j                  |	d   d   «       ŒP t        |«      t        |«      f}
|
|k(  sJ ‚t        j                  |d   j                  j                  «       t        j                  |t        j                  ¬«      «       y)až  
    Check expected number of axes is drawn in expected layout

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like
    axes_num : number
        expected number of axes. Unnecessary axes should be set to
        invisible.
    layout : tuple
        expected layout, (expected number of rows , columns)
    figsize : tuple
        expected figsize. default is matplotlib default
    r   ©Úflatten_axesN)gš™™™™™@g333333@é   )Údtype)Ú!pandas.plotting._matplotlib.toolsr}   r   r%   Úget_childrenÚsetÚget_positionÚ
get_pointsÚaddr(   Úassert_numpy_array_equalÚfigureÚget_size_inchesrX   ÚarrayÚfloat64)r   Úaxes_numÚlayoutÚfigsizer}   Úvisible_axesr   Úx_setÚy_setÚpointsr_   s              r   Ú_check_axes_shaper’     s  € õ ?à€ØˆÜ# DÓ)€LàÐÜ�<Ó  HÒ,Ð,Ð,Øò 	.ˆBä�r—‘Ó(Ó)¨AÓ-Ð-Ð-ð	.ð ÐÜ“ˆÜ“ˆÙ˜tÓ$ò 	$ˆBà—_‘_Ó&×1Ñ1Ó3ˆFØ�I‰I�f˜Q‘i ‘lÔ#Ø�I‰I�f˜Q‘i ‘lÕ#ð		$ô
 �e“*œc %›jÐ)ˆØ˜ÒÐÐä×ÑØ�Q‰×Ñ×.Ñ.Ó0Ü
�‰�¤§
¡
Ô+õr   c                ól   — ddl m}  || «      }|D �cg c]  }|j                  «       sŒ|‘Œ } }| S c c}w )zƒ
    Flatten axes, and filter only visible

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like

    r   r|   )r€   r}   r9   )r   r}   Úaxes_ndarrayr   s       r   r   r   K  s7   € õ ?á Ó%€LØ%Ö:�2¨¯©Õ)9ŠBÐ:€DÐ:Ø€Kùò ;s   “1©1c                óÄ   — t        | «      } | D ]P  }|j                  }d}d}|D ]+  }t        |dd«      }t        |dd«      }	|r|dz  }|	sŒ'|dz  }Œ- ||k(  sJ ‚||k(  rŒPJ ‚ y)zø
    Check axes has expected number of errorbars

    Parameters
    ----------
    axes : matplotlib Axes object, or its list-like
    xerr : number
        expected number of x errorbar
    yerr : number
        expected number of y errorbar
    r   Úhas_xerrFÚhas_yerrr~   N)r   Ú
containersÚgetattr)
r   ÚxerrÚyerrr   r˜   Ú
xerr_countÚ
yerr_countÚcr–   r—   s
             r   Ú_check_has_errorbarsrŸ   [  s‘   € ô ˜DÓ!€DØò "ˆØ—]‘]ˆ
Øˆ
Øˆ
Øò 	 ˆAÜ˜q *¨eÓ4ˆHÜ˜q *¨eÓ4ˆHÙØ˜a‘�
ÚØ˜a‘‘
ð	 ð �zÒ!Ð!Ð!Ø�zÓ!Ð!Ð!ñ"r   c                ó6  — ddl m} t        |t        dœ}|€P|€d}t	        | ||   «      sJ ‚|dk(  r5t	        | j
                  |«      sJ ‚t	        | j                  t        «      sJ ‚yy|€t        | «      D ]  }t	        ||«      rŒJ ‚ yt	        | t        «      sJ ‚t        | j                  «       «      t        |«      k(  sJ ‚| j                  «       D ]Æ  \  }}t	        |||   «      sJ ‚|dk(  r|sŒ|j                  «       |k(  rŒ3J ‚|dk(  rV|r|j
                  j                  «       |k(  sJ ‚t	        |j
                  |«      sJ ‚t	        |j                  t        «      rŒŽJ ‚|dk(  r-|d   d   }	|	j                  }
|sŒ¬|
j                  «       |k(  rŒÀJ ‚t        ‚ y)	a<  
    Check box returned type is correct

    Parameters
    ----------
    returned : object to be tested, returned from boxplot
    return_type : str
        return_type passed to boxplot
    expected_keys : list-like, optional
        group labels in subplot case. If not passed,
        the function checks assuming boxplot uses single ax
    check_ax_title : bool
        Whether to check the ax.title is the same as expected_key
        Intended to be checked by calling from ``boxplot``.
        Normal ``plot`` doesn't attach ``ax.title``, it must be disabled.
    r   r   )rE   r   ÚbothNrE   r¡   r   Úmedians)Úmatplotlib.axesr	   rE   rU   r8   r   Úlinesr   r   ÚsortedÚkeysÚitemsÚ	get_titler   ÚAssertionError)ÚreturnedÚreturn_typeÚexpected_keysÚcheck_ax_titler	   ÚtypesÚrÚkeyÚvalueÚliner   s              r   Ú_check_box_return_typer³   w  s¦  € õ& %ä 4´Ñ7€EØÐàÐØ ˆKä˜( E¨+Ñ$6Ô7Ð7Ð7Ø˜&Ò Ü˜hŸk™k¨4Ô0Ð0Ð0Ü˜hŸn™n¬dÔ3Ð3Ñ3ð !ð
 ÐÜ% hÓ/ò +�Ü! ! TÕ*Ð*Ð*ð+àä˜(¤FÔ+Ð+Ð+ä�h—m‘m“oÓ&¬&°Ó*?Ò?Ð?Ð?Ø"Ÿ.™.Ó*ò 	%‰JˆC�Ü˜e U¨;Ñ%7Ô8Ð8Ð8à˜fÒ$Ú!Ø Ÿ?™?Ó,°Ó3Ð3Ð3Ø Ò&Ù!Ø Ÿ8™8×-Ñ-Ó/°3Ò6Ð6Ð6Ü! %§(¡(¨DÔ1Ð1Ð1Ü! %§+¡+¬tÕ4Ð4Ð4Ø Ò&Ø˜YÑ'¨Ñ*�Ø—y‘y�Ú!ØŸ>™>Ó+¨sÓ2Ð2Ð2ä$Ð$ñ#	%r   c                óü  ‡— dd l Šˆfd„}d}|D �]ê  }‰j                  j                  ddt        |«      z  |«       |dz  }‰j	                  dd¬«        | j
                  dd|i|¤Ž  |«       rJ ‚‰j                  j                  «        ‰j                  j                  ddt        |«      z  |«       |dz  }‰j	                  dd	¬«        | j
                  d|dd
œ|¤Ž  |«       rJ ‚‰j                  j                  «        |dvsŒú‰j                  j                  ddt        |«      z  |«       |dz  }‰j	                  dd	¬«        | j
                  dd|i|¤Ž  |«       sJ ‚‰j                  j                  «        ‰j                  j                  ddt        |«      z  |«       |dz  }‰j	                  dd¬«        | j
                  d|d	d
œ|¤Ž  |«       sJ ‚‰j                  j                  «        �Œí y )Nr   c                 ó"  •— ‰j                   j                  «       j                  j                  «       } ‰j                   j                  «       j                  j                  «       }t        d„ | D «       «      }t        d„ |D «       «      }|xr | S )Nc              3  óR   K  — | ]  }|j                   j                  «        –— Œ! y ­wrC   ©Úgridliner9   ©Ú.0Úgs     r   ú	<genexpr>z;_check_grid_settings.<locals>.is_grid_on.<locals>.<genexpr>¼  ó    è ø€ Ò@°A�q—z‘z×-Ñ-Ó/Ô/Ñ@ùó   ‚%'c              3  óR   K  — | ]  }|j                   j                  «        –— Œ! y ­wrC   r·   r¹   s     r   r¼   z;_check_grid_settings.<locals>.is_grid_on.<locals>.<genexpr>½  r½   r¾   )r#   Úgcarl   Úget_major_ticksrq   r!   )ÚxticksÚyticksÚxoffÚyoffÚmpls       €r   Ú
is_grid_onz(_check_grid_settings.<locals>.is_grid_on¹  sn   ø€ Ø—‘—‘Ó!×'Ñ'×7Ñ7Ó9ˆØ—‘—‘Ó!×'Ñ'×7Ñ7Ó9ˆÜÑ@¸Ô@Ó@ˆÜÑ@¸Ô@Ó@ˆà’M˜TÐ"Ð"r   r~   é   r   F)ÚgridÚkindT)rÊ   rÉ   )ÚpieÚhexbinÚscatter© )rP   r#   Úsubplotr%   ÚrcÚplotÚclf)ÚobjÚkindsÚkwsrÇ   ÚspndxrÊ   rÆ   s         @r   Ú_check_grid_settingsr×   ´  sÆ  ø€ ó ô#ð €EØó ˆØ�
‰
×Ñ˜1˜a¤# e£*™n¨eÔ4Ø�‰
ˆØ�‰ˆv˜EˆÔ"Øˆ�‰Ñ"�dÐ"˜cÒ"Ù”<ÐÐØ�
‰
�‰Ôà�
‰
×Ñ˜1˜a¤# e£*™n¨eÔ4Ø�‰
ˆØ�‰ˆv˜DˆÔ!Øˆ�‰Ð.�d Ñ.¨#Ò.Ù”<ÐÐØ�
‰
�‰ÔàÐ3Ò3Ø�J‰J×Ñ˜q !¤c¨%£j¡.°%Ô8Ø�Q‰JˆEØ�F‰F�6 ˆFÔ%ØˆC�H‰HÑ&˜$Ð& #Ò&Ù”<Ð�<Ø�J‰J�N‰NÔà�J‰J×Ñ˜q !¤c¨%£j¡.°%Ô8Ø�Q‰JˆEØ�F‰F�6 ˆFÔ&ØˆC�H‰HÐ1˜$ TÑ1¨SÒ1Ù”<Ð�<Ø�J‰J�N‰NÖñ9r   c                ó8   — | d   D �cg c]  }||   ‘Œ	 c}S c c}w )zL
    Auxiliary function for correctly unpacking cycler after MPL >= 1.5
    zaxes.prop_cyclerÎ   )ÚrcParamsÚfieldrJ   s      r   Ú_unpack_cyclerrÛ   á  s"   € ð 'Ð'8Ñ9Ö:˜ˆAˆe‹HÒ:Ð:ùÒ:s   ˆc                ó    — | j                   d   S )NÚx©Ú_shared_axes©r   s    r   Ú
get_x_axisrá   è  ó   € Ø�?‰?˜3ÑÐr   c                ó    — | j                   d   S )NÚyrÞ   rà   s    r   Ú
get_y_axisrå   ì  râ   r   c                ó.  — ddl m} |rt        }nt        }d}	 |j	                  d|j                  «       «      }|j                  «         || |fi |¤ŽD ]  }t        j                  |«       Œ 	 |j                  |«       |S # |j                  «       w xY w)a×  
    Create plot and ensure that plot return object is valid.

    Parameters
    ----------
    f : func
        Plotting function.
    default_axes : bool, optional
        If False (default):
            - If `ax` not in `kwargs`, then create subplot(211) and plot there
            - Create new subplot(212) and plot there as well
            - Mind special corner case for bootstrap_plot (see `_gen_two_subplots`)
        If True:
            - Simply run plotting function with kwargs provided
            - All required axes instances will be created automatically
            - It is recommended to use it when the plotting function
            creates multiple axes itself. It helps avoid warnings like
            'UserWarning: To output multiple subplots,
            the figure containing the passed axes is being cleared'
    **kwargs
        Keyword arguments passed to the plotting function.

    Returns
    -------
    Plot object returned by the last plotting.
    r   Nr‡   )
r"   r#   Ú_gen_default_plotÚ_gen_two_subplotsÚgetÚgcfrÒ   r(   Ú"assert_is_valid_plot_return_objectr*   )ÚfÚdefault_axesÚkwargsr-   Ú	gen_plotsÚretÚfigs          r   Ú_check_plot_worksrò   ð  s‡   € õ6 $áÜ%‰	ä%ˆ	à
€CðØ�j‰j˜ 3§7¡7£9Ó-ˆØ�‰Œ	á˜Q Ñ. vÑ.ò 	7ˆCÜ×1Ñ1°#Õ6ñ	7ð 	�	‰	�#Œà€Jøð 	�	‰	�#�ús   ™AB ÂBc              +  ó    K  —  | di |¤Ž–— y­w)z'
    Create plot in a default way.
    NrÎ   rÎ   ©rì   rñ   rî   s      r   rç   rç      s   è ø€ ñ ‰+ˆf‰+Óùs   ‚c              +  óÊ   K  — d|vr|j                  d«        | di |¤Ž–— | t        j                  j                  u rd|vsJ ‚|j                  d«      |d<    | di |¤Ž–— y­w)z9
    Create plot on two subplots forcefully created.
    r   éÓ   éÔ   NrÎ   )Úadd_subplotÚpdÚplottingÚbootstrap_plotrô   s      r   rè   rè   '  sf   è ø€ ð �6ÑØ�‰˜ÔÙ
‰+ˆf‰+ÒàŒB�K‰K×&Ñ&Ñ&Ø˜6Ñ!Ð!Ð!à—‘ sÓ+ˆˆt‰Ù
‰+ˆf‰+Óùs   ‚A!A#)NT)T)r   úAxes | Sequence[Axes]r@   ÚboolÚreturnÚNone)NNN)NNNN)Úlinearr   )r   rü   rþ   zSequence[Axes])r   r   )r^   )F)(Ú__doc__Ú
__future__r   Útypingr   ÚnumpyrX   Úpandas.core.dtypes.apir   Úpandasrù   r   Úpandas._testingÚ_testingr(   Úcollections.abcr   r£   r	   r   r   r4   r<   rA   rK   ra   r   rw   rz   r’   r   rŸ   r³   r×   rÛ   rá   rå   rò   rç   rè   rÎ   r   r   ú<module>r
     s¥   ðñõ #å  ã å /ã Ý Ý áÝ(å$ó+ó0'ò.ó..ô((ò".ó=&ò@ó(,Gó^-ó$)óXó "ð: ?Có:%ðz *,ó *óZ;ò ò ó-ò`ór   