o
    ·¶ßdGx  ã                   @   sÖ   d Z ddlmZ ddlmZ ddlZddlZddlmZ ddl	m
Z
 ddlm  mZ ddlZddlmZmZmZmZ ddlmZ ddlmZmZ ejd	d
„ ƒZejdd„ ƒZejdd„ ƒZejG dd„ deƒƒZ dS )z Test cases for Series.plot é    )Údatetime)ÚchainN)Úis_platform_linux)Únp_version_gte1p24)Ú	DataFrameÚSeriesÚ
date_rangeÚplotting)ÚTestPlotBaseÚ_check_plot_worksc                   C   ó   t jddS )NÚts©Úname)ÚtmZmakeTimeSeries© r   r   úU/app/.heroku/python/lib/python3.10/site-packages/pandas/tests/plotting/test_series.pyr      ó   r   c                   C   r   )NÚseriesr   )r   ZmakeStringSeriesr   r   r   r   r      r   r   c                   C   r   )NÚiseriesr   )r   ZmakePeriodSeriesr   r   r   r   r   $   r   r   c                
   @   s|  e Zd Zejjdd„ ƒZdd„ Zej ddddej	d	e
jd
ddg¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd „ Zd!d"„ Zej d#d$ejd%d&g¡d'd(„ ƒZd)d*„ Zejjeokeƒ d+d,d-d.d/„ ƒZd0d1„ Zd2d3„ Z d4d5„ Z!d6d7„ Z"d8d9„ Z#d:d;„ Z$d<d=„ Z%d>d?„ Z&ej d@dAdBg¡dCdD„ ƒZ'dEdF„ Z(e
jdGdH„ ƒZ)e
jdIdJ„ ƒZ*ejjdKdLdMdN„ ƒZ+e
jej de,j-j.e,j-j/ ¡dOdP„ ƒƒZ0ej de,j-j.¡dQdR„ ƒZ1e
jej de,j-j.¡dSdT„ ƒƒZ2ej de,j-j.¡dUdV„ ƒZ3dWdX„ Z4dYdZ„ Z5d[d\„ Z6ejjd]d^„ ƒZ7ejjd_d`„ ƒZ8ejje
jdadb„ ƒƒZ9ej dcg dd¢¡dedf„ ƒZ:dgdh„ Z;didj„ Z<dkdl„ Z=dmdn„ Z>dodp„ Z?dqdr„ Z@dsdt„ ZAejjdudLdvdw„ ƒZBej dddxg¡dydz„ ƒZCd{d|„ ZDd}d~„ ZEej dg d€¢g d¢fg d‚¢g dƒ¢fg¡d„d…„ ƒZFd†d‡„ ZGej dˆg d‰¢¡ej dg dŠ¢¡d‹dŒ„ ƒƒZHej d#eIjJddŽddeIjKd‘d’eIjKdŽd’gg¡d“d”„ ƒZLd$S )•ÚTestSeriesPlotsc                 C   s¼   t |jdd t |jdd t |jdd}| j|dd t |jdd	d
}| j|dd t |jdd	d}| j|dd t |jdd	d}| j|ddd t |d d… jjƒ t |jjdd d S )NZfoo)ÚlabelF)Ú	use_indexr   )Úrot©ZxrotÚ.T)ÚstyleÚlogyÚlog©Úyaxis)r   Zlogx)Úxaxis)r   Zloglog)r!   r    é
   ©Ústacked)r   ÚplotÚ_check_ticks_propsÚ_check_ax_scalesÚbarÚarea)Úselfr   ÚaxesÚaxr   r   r   Ú	test_plot+   s   zTestSeriesPlots.test_plotc                 C   s   t |jƒ d S ©N©r   r%   )r*   r   r   r   r   Útest_plot_iseries>   s   z!TestSeriesPlots.test_plot_iseriesÚkindÚliner(   ÚbarhÚkde)ZmarksÚhistÚboxc                 C   s   t |d d… j|d d S )Né   ©r1   r/   )r*   r   r1   r   r   r   Útest_plot_series_kindsA   s   z&TestSeriesPlots.test_plot_series_kindsc                 C   s   t |d d… jjƒ d S )Nr"   )r   r%   r3   ©r*   r   r   r   r   Útest_plot_series_barhO   s   z%TestSeriesPlots.test_plot_series_barhc                 C   s8   t ttj d¡ƒjjdd}| j|jd gdgd d S )Nr"   Úblack©Úcolorr   ©Z
facecolors)	r   r   ÚnpÚrandomÚrandnr%   r(   Ú_check_colorsÚpatches)r*   r,   r   r   r   Útest_plot_series_bar_axR   s   z'TestSeriesPlots.test_plot_series_bar_axc                 C   sb   t |jdd}| j|ddd t |jddd}| j|ddd t |jddd}| j|ddd d S )	NT)Úsubplotsé   ©rG   rG   )Úaxes_numÚlayout)éÿÿÿÿrG   )rF   rJ   )rG   rK   )r   r%   Ú_check_axes_shape)r*   r   r,   r   r   r   Útest_plot_6951V   s   zTestSeriesPlots.test_plot_6951c                 C   sB   | j  ¡ \}}|jdd|d}|  |jd¡ | j|dddd d S )NZTest)é   é   )ÚtitleÚfigsizer,   rG   rH   )rI   rJ   rQ   )ÚpltrF   r%   Ú_check_text_labelsrP   rL   )r*   r   Ú_r,   r   r   r   Útest_plot_figsize_and_title`   s   z+TestSeriesPlots.test_plot_figsize_and_titlec                 C   sJ   d}| j j| }| j  ¡ \}}tg d¢ƒj|d || j j| ks#J ‚d S )Nzaxes.prop_cycle©rG   é   é   ©r,   )rR   ÚrcParamsrF   r   r%   )r*   ÚkeyÚcolorsrT   r,   r   r   r   Útest_dont_modify_rcParamsg   s
   z)TestSeriesPlots.test_dont_modify_rcParamsc                 C   sÜ   | j  ¡ \}}|j|d}| ¡ \}}| ¡ }||d jddd d ks'J ‚||d jddd d ks7J ‚t ¡  |jd|d}| ¡ \}}| ¡ }||d jddd d ks\J ‚||d jddd d kslJ ‚d S )NrY   r   F©ÚorigrK   T©Úsecondary_yr,   )rR   rF   r%   Úget_xlimÚ	get_linesÚget_datar   Úclose)r*   r   Úfigr,   ÚxminÚxmaxÚlinesr   r   r   Útest_ts_line_limo   s      $z TestSeriesPlots.test_ts_line_limc                 C   sü  | j  ¡ \}}|jjd|d}| ¡ \}}| ¡ d jddd }||d ks)J ‚||d ks1J ‚| j|dd t 	¡  | j  ¡ \}}|jjdd|d}| ¡ \}}| ¡ d jddd }||d ksfJ ‚||d ksnJ ‚| j|d	d t 	¡  | 
¡ }| d
¡ d¡|_| j  ¡ \}}|jjdd|d}| ¡ \}}| ¡ d jddd }||d ks°J ‚||d ks¸J ‚| j|dd t 	¡  | j  ¡ \}}|jjdd|d}| ¡ \}}| ¡ d jddd }||d ksíJ ‚||d ksõJ ‚| j|dd d S )NF)r$   r,   r   r^   rK   r   T)r$   Zx_compatr,   é   ÚGMTZCET)r$   ra   r,   )rR   rF   r%   r)   rb   rc   rd   r&   r   re   ÚcopyZtz_localizeZ
tz_convertÚindex)r*   r   rT   r,   rg   rh   r2   Ztz_tsr   r   r   Útest_ts_area_lim~   sB   z TestSeriesPlots.test_ts_area_limc                 C   sn   | j jdddd\}\}}t|ƒj|dd t|ƒj|dd |  |¡ ||¡s*J ‚|  |¡ ||¡s5J ‚d S )NrG   rW   T)Zshareyr)   )r,   r1   )rR   rF   Úabsr%   Z
get_y_axisZjoined)r*   r   rf   Úax1Úax2r   r   r   Útest_area_sharey_dont_overwrite¥   s
   z/TestSeriesPlots.test_area_sharey_dont_overwritec                 C   s8  t ddgƒ}| j ¡ \}}|jdd|d}| j|dgd | j ¡  | j ¡ \}}|jd|d}| j|dgd | j ¡  d	|_| j ¡ \}}|jd|d}| j|d	gd | j ¡  | j ¡ \}}|jdd|d
}| j|dgd | j ¡  | j ¡ \}}|jdd|d
}| ¡ d u sŽJ ‚| ¡  | j|dgd d S )NrG   rW   ZLABELT)r   Úlegendr,   ©Úlabels©rt   r,   Ú ÚNAME)rt   r   r,   F)	r   rR   rF   r%   Ú_check_legend_labelsre   r   Z
get_legendrt   )r*   ÚsrT   r,   r   r   r   Ú
test_label¯   s.   



zTestSeriesPlots.test_labelc                 C   s\   t g d¢ƒ}t|jdd d}tjt|d t|jƒ W d   ƒ d S 1 s'w   Y  d S )N)FFTT)Zinclude_boolúno numeric data to plot©Úmatch)r   r   r%   ÚpytestÚraisesÚ	TypeError)r*   r{   Úmsgr   r   r   Útest_booleanË   s   "ÿzTestSeriesPlots.test_booleanrn   Né   )Úkc                 C   sø   ddt jdg}t||d}t|jƒ}|jd  ¡ }t jg d¢t jd}t	 
t  |jd¡|¡ t	 
|jt  g d¢¡¡ t jg d	¢t jd}t|jd
d}t	 
|jd  ¡ |¡ t|jjƒ}t	 
|jd  ¡ |¡ t|jjdd}t	 
|jd  ¡ |¡ d S )NrG   rW   rX   ©rn   r   rV   ©Zdtype)FFTF)rG   rW   r   rX   Tr#   F)r@   Únanr   r   r%   ri   Ú	get_ydataÚarrayZfloat64r   Úassert_numpy_array_equalÚdeleteÚdataÚmaskr)   )r*   rn   ÚvaluesÚdr,   ZmaskedÚexpÚexpectedr   r   r   Útest_line_area_nan_seriesÔ   s   
z)TestSeriesPlots.test_line_area_nan_seriesc                 C   s‚   t g d¢g d¢d}d|j_| j ¡ \}}|jd|d}| ¡ }|dks&J ‚| j ¡ \}}|jjd|d}| ¡ }|dks?J ‚d S )NrV   ©ÚaÚbÚcr‡   z	The IndexF©r   r,   rx   )r   rn   r   rR   rF   r%   Ú
get_xlabelr(   )r*   r{   rT   r,   r   rr   Úlabel2r   r   r   Útest_line_use_index_falseç   s   z)TestSeriesPlots.test_line_use_index_falsezWeird rounding problemsF)ÚreasonÚstrictc                 C   sp  t  g d¢¡}| j ¡ \}}tddgƒjjd|d}t |j	 
¡ |¡ t ¡  | j ¡ \}}tddgƒjjd|d}t |j 
¡ |¡ t ¡  t  g d¢¡}| j ¡ \}}tg d¢ƒjdd|d	}d
}d}| ¡ }t |d |¡ t |d |¡ t |j	 
¡ |¡ t ¡  | j ¡ \}}tg d¢ƒjdd|d	}| ¡ }t |d |¡ t |d |¡ t |j 
¡ |¡ d S )N)çš™™™™™¹?ç      ð?ç      $@g      Y@g     @@g     ˆÃ@éÈ   iô  T)r   r,   )gñhãˆµøä>g-Cëâ6?çü©ñÒMbP?ç{®Gáz„?rŸ   r    r¡   )rŸ   r¤   r£   r(   )r   r1   r,   g!Ñ,åNJ?gÐ„–-?À?r   rG   r3   )r@   r‹   rR   rF   r   r%   r(   r   rŒ   r    Úget_ticklocsre   r3   r!   Zget_ylimZassert_almost_equalrb   )r*   r“   rT   r,   ZyminÚymaxÚresr   r   r   Útest_bar_logó   s2   zTestSeriesPlots.test_bar_logc                 C   sJ   t g d¢g d¢d}| j ¡ \}}|jjd|d}|  | ¡ g d¢¡ d S )N©rG   rW   rX   r…   ©r–   r—   r˜   r‘   r‡   Fr™   )Ú0Ú1Ú2Ú3)r   rR   rF   r%   r(   rS   Úget_xticklabels)r*   ÚdfrT   r,   r   r   r   Útest_bar_ignore_index  s   z%TestSeriesPlots.test_bar_ignore_indexc                 C   sF   t g d¢ƒ}|jjg d¢d}dd„ |jD ƒ}g d¢}||ks!J ‚d S )Nr©   )ÚredÚbluer³   r²   r=   c                 S   ó   g | ]}|  ¡ ‘qS r   )Zget_facecolor)Ú.0Úpr   r   r   Ú
<listcomp>"  ó    z8TestSeriesPlots.test_bar_user_colors.<locals>.<listcomp>)©r    ç        rº   r    ©rº   rº   r    r    r»   r¹   )r   r%   r(   rD   )r*   r{   r,   Úresultr“   r   r   r   Útest_bar_user_colors  s
   z$TestSeriesPlots.test_bar_user_colorsc                 C   sh   t tj dd¡ƒ}| j ¡ \}}|j|d}| j|dd | j ¡ \}}|jd|d}| j|dd d S )Nr7   rY   r   r   rk   )r   r,   )r   r@   rA   rB   rR   rF   r%   r&   )r*   r°   rT   r,   r+   r   r   r   Útest_rotation+  s   zTestSeriesPlots.test_rotationc                 C   sš   ddl m} tddƒ}|g d¢ }ttj t|ƒ¡|ƒ}| j 	¡ \}}|j
|d}| tdddƒd	|¡}| d
d¡ || ¡ d ksDJ ‚| j|dd d S )Nr   )ÚDatetimeConverterú1/1/2000z3/1/2000)	r   rG   rW   rX   r7   é	   r"   é   é   rY   iÏ  rG   rx   z1/1/1999ú1/1/2001rk   r   )Z%pandas.plotting._matplotlib.converterr¿   r   r   r@   rA   rB   ÚlenrR   rF   r%   Úconvertr   Zset_xlimrb   r&   )r*   r¿   ÚrngÚserrT   r,   Zxpr   r   r   Útest_irregular_datetime6  s   
z'TestSeriesPlots.test_irregular_datetimec              	   C   s¢   t ddtjddddgddddtjddgd}| j ¡ \}}|j|d	}| ¡ \}}| ¡ }|t |d
 j	ddd
 ¡ks>J ‚|t 
|d
 j	ddd
 ¡ksOJ ‚d S )Nrº   r    g      @g      @g      @g      @g       @r‡   rY   r   Fr^   )r   r@   r‰   rR   rF   r%   rb   rc   Znanminrd   Znanmax)r*   rÈ   rT   r,   rg   rh   ri   r   r   r   Útest_unsorted_index_xlimC  s   þ"&z(TestSeriesPlots.test_unsorted_index_xlimc           	      C   sÒ  t tj dd¡g d¢dd}t|jjƒ}|  |j|j	¡ | 
¡ dks$J ‚t|jjd d}|  |jdgd ¡ g d¢}t|jj|d	}g d
¢}| j|j|d g d¢}g d¢}t|jj||d}|  |j|¡ | j|j|d t|jj|ddd}dd„ |j| ¡  D ƒ}tt t|j	|ƒ¡ƒ}|  |j|¡ |jD ]
}| ¡ dks£J ‚q™t g d¢g d¢d}tjtdd |j ¡  W d   ƒ n1 sÅw   Y  t ddtjdgg d¢dd}t|jjƒ}|  |jg d¢¡ d S )NrG   r7   )r–   r—   r˜   r‘   ÚeZYLABEL©rn   r   ru   rx   )ÚrÚgr—   ©r\   )rÍ   rÎ   r—   rÍ   rÎ   r?   )ÚAÚBÚCÚDÚE)rÍ   rÎ   r—   r˜   Úm)rv   r\   z%.2fé   )r\   ZautopctZfontsizec                 S   s   g | ]}|d  d›‘qS )éd   z.2fr   )rµ   r{   r   r   r   r·   o  ó    z3TestSeriesPlots.test_pie_series.<locals>.<listcomp>)rG   rW   r   r…   rK   r‡   z&pie plot doesn't allow negative valuesr~   rW   r…   rª   )r–   r—   rx   r‘   )r   r@   rA   Úrandintr   r%   ÚpierS   Útextsrn   Ú
get_ylabelrC   rD   r   ÚsumÚlistr   Úfrom_iterableÚzipZget_fontsizer€   r   Ú
ValueErrorr‰   )	r*   r   r,   Z
color_argsZcolor_expectedrv   ZpctsZexpected_textsÚtr   r   r   Útest_pie_seriesO  s@   ÿÿ
ÿzTestSeriesPlots.test_pie_seriesc                 C   sX   t dtjddgƒ}| j ¡ \}}|jjd|d}g d¢}dd„ |jD ƒ}||ks*J ‚d S )NrG   Trw   )r«   rx   r­   r®   c                 S   r´   r   )Zget_text)rµ   Úxr   r   r   r·   „  r¸   z0TestSeriesPlots.test_pie_nan.<locals>.<listcomp>)r   r@   r‰   rR   rF   r%   rÚ   rÛ   )r*   r{   rT   r,   r“   r¼   r   r   r   Útest_pie_nan  s   zTestSeriesPlots.test_pie_nanc                 C   sJ  t tj dd¡tdƒd}ttj d¡dd}| j ¡ \}}|j|d}|jdd|d	 | j	|g d
¢d | 
¡  ¡ s=J ‚|j 
¡  ¡ sFJ ‚t ¡  | j ¡ \}}|j|d}|j|ddd | j	|g d
¢d | 
¡  ¡ spJ ‚|j 
¡  ¡ syJ ‚t ¡  | j ¡ \}}|jd|d}|jdd|d	 g d¢}| j	|j|d |j 
¡  ¡ r¨J ‚| 
¡  ¡ s°J ‚t ¡  | j ¡ \}}|jd|d}|j|ddd g d¢}|  	|j|¡ |j 
¡  ¡ rÞJ ‚| 
¡  ¡ sæJ ‚t ¡  | j ¡ \}}|jdd|d}|j|ddd g d
¢}|  	|j|¡ |j 
¡  ¡ rJ ‚| 
¡  ¡ sJ ‚t ¡  d S )Nrk   rX   Úabc)Úcolumnsrä   r   rY   T)rt   ra   r,   )r–   r—   r˜   ú	x (right)ru   )r,   rt   ra   r`   )z	a (right)z	b (right)z	c (right)rè   F)ra   Z
mark_rightr,   )r   r@   rA   rB   rÞ   r   rR   rF   r%   rz   Z	get_yaxisZget_visibleZright_axr   re   Zleft_ax)r*   r°   r{   rT   r,   r“   r   r   r   Útest_df_series_secondary_legend‡  sP   z/TestSeriesPlots.test_df_series_secondary_legendzinput_logy, expected_scale)Tr   )ÚsymZsymlogc                 C   s^   t tj d¡ƒ}t tj d¡ƒ}|j|d}|jd|d}| ¡ |ks%J ‚| ¡ |ks-J ‚d S )Nrk   )r   T)ra   r   )r   r@   rA   rB   r%   Z
get_yscale)r*   Z
input_logyZexpected_scaleÚs1Ús2rq   rr   r   r   r   Útest_secondary_logyÆ  s   z#TestSeriesPlots.test_secondary_logyc                 C   sf   t tj d¡ƒ}| j ¡ \}}d}tjt|d |j	dd|d W d   ƒ d S 1 s,w   Y  d S )NrW   zCannot pass 'style' string with a color symbol and 'color' keyword argument. Please use one or the other or pass 'style' without a color symbolr~   zk--r†   )r   r>   r,   )
r   r@   rA   rB   rR   rF   r€   r   rá   r%   )r*   rä   rT   r,   rƒ   r   r   r   Ú)test_plot_fails_with_dupe_color_and_styleÕ  s   ÿ"ÿz9TestSeriesPlots.test_plot_fails_with_dupe_color_and_stylec                 C   s´   t  ddd¡}t|jjddd t|jjd dd t|jjd t  d¡d t|jjd|d t|jjd|d | j ¡ \}}|jjdd||d}| j	|d	d
 |  
|j ¡ d¡ d S )Niœÿÿÿr×   é   Zscott)Ú	bw_methodÚindg      à?T)r   rð   rñ   r,   r   r   ZDensity)r@   Zlinspacer   r%   r4   Úint_ZdensityrR   rF   r'   rS   r    Z	get_label)r*   r   Zsample_pointsrT   r,   r   r   r   Útest_kde_kwargsà  s   zTestSeriesPlots.test_kde_kwargsc                 C   sJ   t tjjddƒ}tj|d< t|jjƒ}tt 	|j
d  ¡ ¡ ƒs#J ‚d S )Né2   )Úsizer   )r   r@   rA   Úuniformr‰   r   r%   r4   ÚanyÚisnanri   Ú	get_xdata)r*   r{   r+   r   r   r   Útest_kde_missing_valsí  s   
"z%TestSeriesPlots.test_kde_missing_valszApi changed in 3.6.0)r   c                 C   sf   | j  ¡ \}}|jjd|d}| j|dd | ¡ }|  ||jg¡ | ¡ }|  |dgt	|ƒ ¡ d S )NT)r   r,   r   r   rx   )
rR   rF   r%   r6   r'   r¯   rS   r   Zget_yticklabelsrÅ   )r*   r   rT   r,   ZxlabelsZylabelsr   r   r   Útest_boxplot_seriesö  s   z#TestSeriesPlots.test_boxplot_seriesc                 C   s\   t tdƒƒ}| j ¡ \}}|j||d | j ¡  | j ¡ \}}t|j|ƒƒ  | j ¡  d S )NrX   ©r1   r,   )r   ÚrangerR   rF   r%   re   Úgetattr)r*   r1   r{   rT   r,   r   r   r   Útest_kind_both_ways   s   
z#TestSeriesPlots.test_kind_both_waysc                 C   s`   t tdƒƒ}| j ¡ \}}d}tjt|d |j||d W d   ƒ d S 1 s)w   Y  d S )NÚabcdr}   r~   rü   )r   rÞ   rR   rF   r€   r   r‚   r%   ©r*   r1   r{   rT   r,   rƒ   r   r   r   Útest_invalid_plot_data  ó   "ÿz&TestSeriesPlots.test_invalid_plot_datac                 C   s"   t tdƒtd}t|j|d d S )Nr"   rˆ   r8   )r   rý   Úobjectr   r%   )r*   r1   r{   r   r   r   Útest_valid_object_plot  s   z&TestSeriesPlots.test_valid_object_plotc                 C   s`   t g d¢ƒ}| j ¡ \}}d}tjt|d |j||d W d   ƒ d S 1 s)w   Y  d S )N)r–   r—   r    rW   r}   r~   rü   )r   rR   rF   r€   r   r‚   r%   r  r   r   r   Ú test_partially_invalid_plot_data  r  z0TestSeriesPlots.test_partially_invalid_plot_datac                 C   sL   t ddgƒ}tjtdd |jdd W d   ƒ d S 1 sw   Y  d S )NrG   rW   z%invalid_kind is not a valid plot kindr~   Zinvalid_kindr8   )r   r€   r   rá   r%   )r*   r{   r   r   r   Útest_invalid_kind$  s   "ÿz!TestSeriesPlots.test_invalid_kindc                 C   sJ   t ddd}t ddd}| |¡}tj |j¡}t||d}t|jƒ d S )Nz1/1/2009r…   ©Úperiodsz1/2/2009r‡   )	r   Úappendr@   rA   rB   rõ   r   r   r%   )r*   Zdr1Zdr2rn   r   r{   r   r   r   Útest_dup_datetime_index_plot)  s   
z,TestSeriesPlots.test_dup_datetime_index_plotc                 C   sÜ   t t d¡dd}tj dd¡}|j||d}t dd„ |jd  ¡ D ƒ¡}|j	t 
d	dg¡ | ¡  d	d¡ }t ||¡ d
t|ƒ› d}tjt|d |jtj dd¡d W d   ƒ n1 scw   Y  t ¡  d S )Nr"   rä   r   rW   )ÚyerrÚxerrc                 S   s   g | ]}|j d d …df ‘qS )NrG   )Zvertices©rµ   Úir   r   r   r·   8  s    z>TestSeriesPlots.test_errorbar_asymmetrical.<locals>.<listcomp>rG   rK   z?Asymmetrical error bars should be provided with the shape \(2, z\)r~   rÂ   ©r  )r   r@   ÚarangerA   Zrandr%   ZvstackÚcollectionsÚ	get_pathsÚTr‹   Zto_numpyZreshaper   rŒ   rÅ   r€   r   rá   re   )r*   r{   Úerrr,   r¼   r“   rƒ   r   r   r   Útest_errorbar_asymmetrical1  s   $ÿÿÿz*TestSeriesPlots.test_errorbar_asymmetricalc                 C   s@  t t d¡dd}t tj d¡¡}tt tj dd¡¡|jddgd}ddg}|D ]W}t|j	t |ƒ|d	}| j
|d
dd t|j	||d	}| j
|d
dd t|j	| ¡ |d	}| j
|d
dd t|j	||d	}| j
|d
dd t|j	dd|d}| j
|ddd q*t|j	|d}| j
|dd
d tdddd}t t d¡|dd}t t tj d¡¡|d}	tt tj dd¡¡|ddgd}
t|j	|	d}| j
|d
dd t|j	|
d}| j
|d
dd t t¡ |j	t d¡d W d   ƒ n1 s÷w   Y  dgd }t t¡ |j	|d W d   ƒ d S 1 sw   Y  d S )Nr"   rä   r   rW   Úy)rn   rç   r2   r(   )r  r1   r   rG   )r  r  gš™™™™™É?)r  r  r1   )r  rÀ   rÄ   ÚM)ÚfreqrÃ   rÌ   r‡   r  rÂ   Úzzz)r   r@   r  rp   rA   rB   r   rn   r   r%   Z_check_has_errorbarsÚtolistr   r   Zexternal_error_raisedrá   r‚   )r*   r{   Zs_errZd_errÚkindsr1   r,   Zixr   Zts_errZtd_errr   r   r   Útest_errorbar_plotE  sD   ÿ"ÿ
$ÿz"TestSeriesPlots.test_errorbar_plotc                 C   s    t |jdd t |j|d d S )NT)Útabler/   r:   r   r   r   Ú
test_tablep  s   zTestSeriesPlots.test_tablec                 C   s$   |   tg d¢ƒtjjtjj ¡ d S )NrV   )Z_check_grid_settingsr   r	   ÚPlotAccessorÚ_series_kindsÚ_common_kinds)r*   r   r   r   Útest_series_grid_settingsu  s   
þz)TestSeriesPlots.test_series_grid_settingsr˜   )rÍ   r²   Úgreenz#FF0000c                 C   s„   ddl m} |d|d}||gksJ ‚|d|gd}||gks!J ‚|d|d}||gd ks0J ‚|d|gd}||gd ks@J ‚d S )Nr   ©Úget_standard_colorsrG   r=   rX   )Ú!pandas.plotting._matplotlib.styler&  )r*   r˜   r&  r¼   r   r   r   Útest_standard_colors~  s   z$TestSeriesPlots.test_standard_colorsc                 C   s  ddl m} ddlm} |jD ]<}|d|d}||gksJ ‚|d|gd}||gks,J ‚|d|d}||gd ks;J ‚|d|gd}||gd ksKJ ‚q|jjD ]<}|d|d}||gks_J ‚|d|gd}||gksmJ ‚|d|d}||gd ks|J ‚|d|gd}||gd ksŒJ ‚qPd S )Nr   rÏ   r%  rG   )Z
num_colorsr>   rX   )Ú
matplotlibr\   r'  r&  ZcnamesZColorConverter)r*   r\   r&  r˜   r¼   r   r   r   Útest_standard_colors_allŽ  s*   
õz(TestSeriesPlots.test_standard_colors_allc                 C   sB   | j  ¡ \}}tt d¡d ƒjd|d}| j| ¡ dgd d S )NrÃ   rG   r$  ©r>   r,   ©Z
linecolors)rR   rF   r   r@   r  r%   rC   rc   ©r*   rT   r,   r   r   r   Útest_series_plot_color_kwargs¯  s   z-TestSeriesPlots.test_series_plot_color_kwargsc                 C   sN   | j  ¡ \}}tt d¡d tddddjd|d}| j| ¡ dgd d S )	NrÃ   rG   rÀ   r  r‡   r$  r+  r,  )	rR   rF   r   r@   r  r   r%   rC   rc   r-  r   r   r   Ú"test_time_series_plot_color_kwargsµ  s
   ÿz2TestSeriesPlots.test_time_series_plot_color_kwargsc           	      C   s~   dd l }|  |j¡}tddd}tt dd¡|d}d}| j ¡ \}}t	|ƒD ]}|j
|d	}q'| j| ¡ |d |… d
 d S )Nr   rÀ   rÃ   r  rG   é   r‡   rX   rY   r,  )r)  Z_unpack_cyclerrZ   r   r   r@   r  rR   rF   rý   r%   rC   rc   )	r*   ZmplZ
def_colorsrn   r{   ZncolorsrT   r,   r  r   r   r   Ú-test_time_series_plot_color_with_empty_kwargs½  s   z=TestSeriesPlots.test_time_series_plot_color_with_empty_kwargsc                 C   sb   t t d¡dd„ tdƒD ƒd}| j ¡ \}}|jg d¢|d}dd„ dD ƒ}|  | ¡ |¡ d S )Nr"   c                 S   ó   g | ]}d |d›‘qS ©ÚPÚ02dr   r  r   r   r   r·   Í  rØ   z4TestSeriesPlots.test_xticklabels.<locals>.<listcomp>r‡   )r   rX   r7   rÁ   )Úxticksr,   c                 S   r2  r3  r   r  r   r   r   r·   Ð  rØ   )	r   r@   r  rý   rR   rF   r%   rS   r¯   )r*   r{   rT   r,   r’   r   r   r   Útest_xticklabelsË  s
    z TestSeriesPlots.test_xticklabelsc                 C   s^   t tdƒdd„ tdƒD ƒd}|jjtdddƒd}t ttdddƒƒ¡}t || 	¡ ¡ d S )	Nr"   c                 S   r2  r3  r   r  r   r   r   r·   Õ  rØ   z6TestSeriesPlots.test_xtick_barPlot.<locals>.<listcomp>r‡   r   rÂ   rW   )r6  )
r   rý   r%   r(   r@   r‹   rÞ   r   rŒ   Z
get_xticks)r*   r{   r,   r’   r   r   r   Útest_xtick_barPlotÓ  s   z"TestSeriesPlots.test_xtick_barPlotc                 C   s@   ddl m} ttddƒtjdd|dgdd	d
}t|jƒ d S )Nr   )ÚCustomBusinessDayr×   éy   z
2014-05-01z
2014-06-01z
2014-05-26)Zholidays)ÚstartÚendr  r‡   )Zpandas.tseries.offsetsr9  r   rý   ÚpdZbdate_ranger   r%   )r*   r9  r{   r   r   r   Útest_custom_business_day_freqÚ  s   
ýþ	z-TestSeriesPlots.test_custom_business_day_freqziGH#24426, see also github.com/pandas-dev/pandas/commit/ef1bd69fa42bbed5d09dd17f08c44fc8bfc2b685#r61470674c                 C   sj   t g d¢ƒ}| j ¡ \}}|j|d}|j ¡ }|jddgdd | j ¡ \}}|j ¡ }t ||¡ d S )Nr©   rY   r   rG   T)Zinplace)	r   rR   rF   r%   r!   r¥   Zdropr   rŒ   )r*   rÈ   rT   r,   ÚbeforeÚafterr   r   r   Ú%test_plot_accessor_updates_on_inplaceé  s   

z5TestSeriesPlots.test_plot_accessor_updates_on_inplacer)   c                 C   sT   t ddgƒ}| j ¡ \}}|j||d | ¡ }|d dk s J ‚|d dks(J ‚d S )NrW   rX   rü   r   rG   )r   rR   rF   r%   rb   )r*   r1   r{   rT   r,   Úxlimsr   r   r   Útest_plot_xlim_for_seriesù  s   z)TestSeriesPlots.test_plot_xlim_for_seriesc                 C   sh   t td}|js
J ‚| ¡ }t| ¡ ƒdksJ ‚| ¡ d }t| ¡ ƒdks(J ‚t| ¡ ƒdks2J ‚d S )Nrˆ   rG   r   )r   ÚintÚemptyr%   rÅ   rc   rù   rŠ   )r*   r°   r,   r2   r   r   r   Útest_plot_no_rows  s   

z!TestSeriesPlots.test_plot_no_rowsc                 C   sH   t g d¢ƒ}tjtdd | ¡  W d   ƒ d S 1 sw   Y  d S )Nr•   r}   r~   )r   r€   r   r‚   r%   )r*   r°   r   r   r   Útest_plot_no_numeric_data  s   
"ÿz)TestSeriesPlots.test_plot_no_numeric_datazdata, indexr©   )rX   rW   rG   r   )r"   rô   rï   rk   )iv  i€  i¼  iž  c                 C   sL   t ||d}|jdd}| ¡ }dd„ t|jdd„ dD ƒ}||ks$J ‚d S )	N)rŽ   rn   r(   r8   c                 S   s   g | ]}|  ¡ j‘qS r   )Úget_bboxr¦   )rµ   Úpatchr   r   r   r·   !  s    ÿÿz3TestSeriesPlots.test_plot_order.<locals>.<listcomp>c                 S   s
   |   ¡ jS r.   )rH  rh   )rI  r   r   r   Ú<lambda>#  s   
 z1TestSeriesPlots.test_plot_order.<locals>.<lambda>)r[   )r   r%   r  ÚsortedrD   )r*   rŽ   rn   rÈ   r,   r“   r¼   r   r   r   Útest_plot_order  s   	þzTestSeriesPlots.test_plot_orderc                 C   s4   t ddgƒ}|jddd}|jd  ¡ dksJ ‚d S )NrG   rW   r{   ZC3)r   r>   r   )r   r%   ri   Ú	get_color)r*   r{   r,   r   r   r   Útest_style_single_ok'  s   z$TestSeriesPlots.test_style_single_okz index_name, old_label, new_label))Nrx   Únew)ÚoldrP  rO  )Nrx   rx   )r2   r)   r(   r3   r5   c                 C   sÈ   t g d¢ƒ}||j_|j|d}|dkr%| ¡ dksJ ‚| ¡ |ks$J ‚n%|dkr:| ¡ dks1J ‚| ¡ dks9J ‚n| ¡ dksBJ ‚| ¡ |ksJJ ‚|j|||d}| ¡ |ksZJ ‚| ¡ |ksbJ ‚d S )Nr©   r8   r3   rx   r5   Z	Frequency)r1   ZylabelZxlabel)r   rn   r   r%   rš   rÜ   )r*   r1   Z
index_nameZ	old_labelZ	new_labelrÈ   r,   r   r   r   Útest_xlabel_ylabel_series,  s   z)TestSeriesPlots.test_xlabel_ylabel_seriesr   rW   rÓ   )r;  r	  r  rG   )Údaysc                 C   s0   d}t ddg|dj|d}| ¡ dksJ ‚d S )N)rX   rG   rG   rW   r‡   )Zxlim)r   r%   rb   )r*   rn   rB  r,   r   r   r   Útest_timedelta_indexG  s   	z$TestSeriesPlots.test_timedelta_index)MÚ__name__Ú
__module__Ú__qualname__r€   ÚmarkZslowr-   r0   ZparametrizeÚparamÚtdZskip_if_no_scipyr9   r;   rE   rM   rU   r]   rj   ro   rs   r|   r„   r   ZmakeDateIndexr”   rœ   Zxfailr   r   r¨   r±   r½   r¾   rÉ   rÊ   rã   rå   ré   rí   rî   ró   rú   rû   r	   r   r"  r!  rÿ   r  r  r  r  r  r  r  r  r#  r(  r*  r.  r/  r1  r7  r8  r>  rA  rC  rF  rG  rL  rN  rQ  r=  Ztimedelta_rangeZ	TimedeltarS  r   r   r   r   r   )   sä    
úþ

'
	
ý
!0?ÿ



	þ	


*

!ÿ


þþ
þþþr   )!Ú__doc__r   Ú	itertoolsr   Únumpyr@   r€   Zpandas.compatr   Zpandas.compat.numpyr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsrY  Zpandasr=  r   r   r   r	   Zpandas._testingZ_testingr   Zpandas.tests.plotting.commonr
   r   Zfixturer   r   r   Zskip_if_no_mplr   r   r   r   r   Ú<module>   s(    


