o
    ýòTiYˆ  ã                   @   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mZmZmZmZmZm Z m!Z!m"Z"m#Z# e $d	¡Z%e $d
¡Z&ej'dd„ ƒZ(ej'dd„ ƒZ)ej'dd„ ƒZ*G dd„ dƒZ+dS )z Test cases for Series.plot é    )Údatetime)ÚchainN)Úis_platform_linux)Únp_version_gte1p24)Ú	DataFrameÚSeriesÚ
date_rangeÚplotting)Ú_check_ax_scalesÚ_check_axes_shapeÚ_check_colorsÚ_check_grid_settingsÚ_check_has_errorbarsÚ_check_legend_labelsÚ_check_plot_worksÚ_check_text_labelsÚ_check_ticks_propsÚ_unpack_cyclerÚ
get_y_axisÚ
matplotlibzmatplotlib.pyplotc                   C   ó   t jddS )NÚts©Úname)ÚtmZmakeTimeSeries© r   r   úa/var/www/html/evchargy.com/venv/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   0   r   r   c                   @   s   e Zd Zejjej dddiddig¡dd„ ƒƒZejjdd	„ ƒZejjej d
ddiddigddiddigddidddœgg¡dd„ ƒƒZ	ejjd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ej di d)d*id)d+ig¡d,d-„ ƒZd.d/„ Zd0d1„ Zej di d2dig¡d3d4„ ƒZd5d6„ Zd7d8„ Zd9d:„ Zd;d<„ Zd=d>„ Zd?d@„ ZdAdB„ ZdCdD„ ZdEdF„ ZdGdH„ Z dIdJ„ Z!ej dKdLe"j#dMdNg¡dOdP„ ƒZ$dQdR„ Z%dSdT„ Z&ejj'e(oîe)ƒ dUddVej dWdXdYg¡dZd[„ ƒƒZ*ejj'e(oe)ƒ dUddVej d\g d]¢g d^¢g¡d_d`„ ƒƒZ+dadb„ Z,dcdd„ Z-dedf„ Z.dgdh„ Z/didj„ Z0dkdl„ Z1dmdn„ Z2dodp„ Z3dqdr„ Z4dsdt„ Z5dudv„ Z6dwdx„ Z7dydz„ Z8d{d|„ Z9d}d~„ Z:dd€„ Z;dd‚„ Z<dƒd„„ Z=d…d†„ Z>ej d‡dˆd‰g¡dŠd‹„ ƒZ?dŒd„ Z@ej dŽddgdLdgdLeA Bd¡gd‘eA Cd’d“d¡gg¡d”d•„ ƒZDd–d—„ ZEd˜d™„ ZFdšd›„ ZGejj'dœddždŸ„ ƒZHej deIjJjKeIjJjL ¡d d¡„ ƒZMej deIjJjKeIjJjL ¡d¢d£„ ƒZNej deIjJjK¡d¤d¥„ ƒZOej deIjJjK¡d¦d§„ ƒZPej deIjJjK¡d¨d©„ ƒZQdªd«„ ZRd¬d­„ ZSd®d¯„ ZTejjej dddg¡ej d°eUeA VeAjW Xd±¡ Yd²¡¡ƒeA VeAjW Xd±¡ Yd²¡¡eZeA VeAjW Xd±¡ Yd²¡¡ƒe[eA VeAjW Xd±¡ Yd³¡¡d´dµgd¶g¡d·d¸„ ƒƒƒZ\ejjd¹dº„ ƒZ]ejjej d°eUeA VeAjW Xd±¡ Yd»¡¡ƒe[eA VeAjW Xd±¡ Yd¼¡¡d´dµgd¶g¡d½d¾„ ƒƒZ^ejjd¿dÀ„ ƒZ_ejjdÁdÂ„ ƒZ`ejjdÃdÄ„ ƒZaejjdÅdÆ„ ƒZbejjdÇdÈ„ ƒZcej dÉg dÊ¢¡dËdÌ„ ƒZddÍdÎ„ ZedÏdÐ„ ZfdÑdÒ„ ZgdÓdÔ„ ZhdÕdÖ„ Zid×dØ„ ZjdÙdÚ„ Zkejj'dÛddÜdÝ„ ƒZlej dddÞg¡dßdà„ ƒZmdádâ„ Zndãdä„ Zoej dåg dæ¢g dç¢fg dè¢g dé¢fg¡dêdë„ ƒZpdìdí„ Zqej dîg dï¢¡ej dg dð¢¡dñdò„ ƒƒZrej dKesjtdód±dôdõesjudöd÷esjud±d÷gg¡dødù„ ƒZvdúdû„ ZwdLS )üÚTestSeriesPlotsÚkwargsÚlabelZfooÚ	use_indexFc                 C   s   t |jfi |¤Ž d S ©N©r   Úplot)Úselfr   r!   r   r   r   Ú	test_plot6   s   zTestSeriesPlots.test_plotc                 C   s   t |jdd}t|dd d S )Nr   )Úrot©Zxrot)r   r&   r   )r'   r   Úaxesr   r   r   Útest_plot_tick_props;   s   z$TestSeriesPlots.test_plot_tick_propszscale, exp_scaleÚlogyTÚyaxisÚlogZlogxÚxaxisZloglog)r0   r.   c                 C   s*   t |jfddi|¤Ž}t|fi |¤Ž d S )NÚstyleÚ.)r   r&   r
   )r'   r   ÚscaleZ	exp_scaleÚaxr   r   r   Útest_plot_scales@   s   
z TestSeriesPlots.test_plot_scalesc                 C   ó   t |d d… jjƒ d S ©Né
   )r   r&   Úbar©r'   r   r   r   r   Útest_plot_ts_barM   s   z TestSeriesPlots.test_plot_ts_barc                 C   s   t |jjdd d S )NF©Ústacked)r   r&   Úarear:   r   r   r   Útest_plot_ts_area_stackedQ   s   z)TestSeriesPlots.test_plot_ts_area_stackedc                 C   s   t |jƒ d S r$   r%   )r'   r   r   r   r   Útest_plot_iseriesU   s   z!TestSeriesPlots.test_plot_iseriesÚkindÚliner9   ÚbarhÚkde)ZmarksÚhistÚboxc                 C   s   t |d d… j|d d S )Né   ©rA   r%   )r'   r   rA   r   r   r   Útest_plot_series_kindsX   s   z&TestSeriesPlots.test_plot_series_kindsc                 C   r6   r7   )r   r&   rC   ©r'   r   r   r   r   Útest_plot_series_barhf   s   z%TestSeriesPlots.test_plot_series_barhc                 C   s<   t ttj d¡ d¡ƒjjdd}t|j	d gdgd d S )Né   r8   Úblack©Úcolorr   ©Z
facecolors)
r   r   ÚnpÚrandomÚdefault_rngÚstandard_normalr&   r9   r   Úpatches)r'   r4   r   r   r   Útest_plot_series_bar_axi   s   ÿz'TestSeriesPlots.test_plot_series_bar_axÚlayout)éÿÿÿÿé   )rY   rX   c                 C   s(   t |jfddi|¤Ž}t|ddd d S )NÚsubplotsTrY   ©rY   rY   )Úaxes_numrW   )r   r&   r   )r'   r   r!   r4   r   r   r   Útest_plot_6951o   s   zTestSeriesPlots.test_plot_6951c                 C   s>   t j ¡ \}}|jdd|d}t|jdƒ t|dddd d S )NZTest)é   é   )ÚtitleÚfigsizer4   rY   r[   )r\   rW   ra   )ÚmplÚpyplotrZ   r&   r   r`   r   )r'   r   Ú_r4   r   r   r   Útest_plot_figsize_and_titleu   s   z+TestSeriesPlots.test_plot_figsize_and_titlec                 C   sJ   d}t jj| }t j ¡ \}}tg d¢ƒj|d |t jj| ks#J ‚d S )Nzaxes.prop_cycle©rY   rL   é   ©r4   )rb   rc   ÚrcParamsrZ   r   r&   )r'   ÚkeyÚcolorsrd   r4   r   r   r   Útest_dont_modify_rcParams|   s
   z)TestSeriesPlots.test_dont_modify_rcParamsÚsecondary_yc                 C   sz   t j ¡ \}}|jdd|i|¤Ž}| ¡ \}}| ¡ }||d jddd d ks+J ‚||d jddd d ks;J ‚d S )Nr4   r   F©ÚorigrX   r   )rb   rc   rZ   r&   Úget_xlimÚ	get_linesÚget_data)r'   r   r!   rd   r4   ÚxminÚxmaxÚlinesr   r   r   Útest_ts_line_lim„   s    $z TestSeriesPlots.test_ts_line_limc                 C   sr   t j ¡ \}}|jjd|d}| ¡ \}}| ¡ d jddd }||d ks)J ‚||d ks1J ‚t|dd d S )NF)r=   r4   r   rn   rX   r*   ©	rb   rc   rZ   r&   r>   rp   rq   rr   r   ©r'   r   rd   r4   rs   rt   rB   r   r   r   Útest_ts_area_lim   s   z TestSeriesPlots.test_ts_area_limc                 C   st   t j ¡ \}}|jjdd|d}| ¡ \}}| ¡ d jddd }||d ks*J ‚||d ks2J ‚t|dd d S )	NFT©r=   Zx_compatr4   r   rn   rX   é   r*   rw   rx   r   r   r   Útest_ts_area_lim_xcompat–   s   z(TestSeriesPlots.test_ts_area_lim_xcompatc                 C   óŽ   |  ¡ }| d¡ d¡|_tj ¡ \}}|jjdd|d}| 	¡ \}}| 
¡ d jddd }||d ks7J ‚||d ks?J ‚t|dd	 d S )
NÚGMTÚCETFTrz   r   rn   rX   r*   ©ÚcopyZtz_localizeZ
tz_convertÚindexrb   rc   rZ   r&   r>   rp   rq   rr   r   ©r'   r   Ztz_tsrd   r4   rs   rt   rB   r   r   r   Útest_ts_tz_area_lim_xcompat    ó   z+TestSeriesPlots.test_ts_tz_area_lim_xcompatc                 C   r}   )
Nr~   r   FT)r=   rm   r4   r   rn   rX   r*   r€   rƒ   r   r   r   Ú'test_ts_tz_area_lim_xcompat_secondary_y«   r…   z7TestSeriesPlots.test_ts_tz_area_lim_xcompat_secondary_yc                 C   st   t jjdddd\}\}}t|ƒj|dd t|ƒj|dd t|ƒ ||¡s)J ‚t|ƒ ||¡s3J ‚t |¡ d S )NrY   rL   T)Zshareyr>   )r4   rA   )	rb   rc   rZ   Úabsr&   r   ZjoinedÚpltÚclose)r'   r   ZfigÚax1Úax2r   r   r   Útest_area_sharey_dont_overwrite¶   s   z/TestSeriesPlots.test_area_sharey_dont_overwritec                 C   sH   t ddgƒ}tj ¡ \}}|jdd|d}t|dgd tj d¡ d S )NrY   rL   ÚLABELT)r"   Úlegendr4   ©ÚlabelsÚall©r   rb   rc   rZ   r&   r   r‰   ©r'   Úsrd   r4   r   r   r   Ú
test_labelÁ   s
   zTestSeriesPlots.test_labelc                 C   sF   t ddgƒ}tj ¡ \}}|jd|d}t|dgd tj d¡ d S )NrY   rL   T©rŽ   r4   Ú r   r‘   r’   r“   r   r   r   Útest_label_noneÈ   s
   zTestSeriesPlots.test_label_nonec                 C   sJ   t ddgdd}tj ¡ \}}|jd|d}t|dgd tj d¡ d S )	NrY   rL   ÚNAMEr   Tr–   r   r‘   r’   r“   r   r   r   Útest_label_ser_nameÏ   s
   z#TestSeriesPlots.test_label_ser_namec                 C   sL   t ddgdd}tj ¡ \}}|jdd|d}t|dgd tj d	¡ d S )
NrY   rL   r™   r   Tr   ©rŽ   r"   r4   r   r‘   r’   r“   r   r   r   Útest_label_ser_name_overrideÖ   s
   z,TestSeriesPlots.test_label_ser_name_overridec                 C   sd   t ddgdd}tj ¡ \}}|jdd|d}| ¡ d u sJ ‚| ¡  t|dgd tj d	¡ d S )
NrY   rL   r™   r   Fr   r›   r   r‘   )	r   rb   rc   rZ   r&   Z
get_legendrŽ   r   r‰   r“   r   r   r   Ú&test_label_ser_name_override_dont_drawÞ   s   z6TestSeriesPlots.test_label_ser_name_override_dont_drawc                 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_booleanr‚   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 )NrY   rL   rg   ©r‚   r   rf   ©Zdtype)FFTF)rY   rL   r   rg   Tr<   F)rQ   Únanr   r   r&   ru   Ú	get_ydataÚarrayZfloat64r   Úassert_numpy_array_equalÚdeleteÚdataÚmaskr>   )r'   r‚   ÚvaluesÚdr4   ZmaskedÚexpÚexpectedr   r   r   Útest_line_area_nan_seriesñ   s   
z)TestSeriesPlots.test_line_area_nan_seriesc                 C   sP   t g d¢g d¢d}d|j_tj ¡ \}}|jd|d}| ¡ }|dks&J ‚d S ©Nrf   ©ÚaÚbÚcr¨   z	The IndexF©r#   r4   r—   )r   r‚   r   rb   rc   rZ   r&   Ú
get_xlabel)r'   r”   rd   r4   r"   r   r   r   Útest_line_use_index_false  s   z)TestSeriesPlots.test_line_use_index_falsec                 C   sR   t g d¢g d¢d}d|j_tj ¡ \}}|jjd|d}| ¡ }|dks'J ‚d S r¶   )	r   r‚   r   rb   rc   rZ   r&   r9   r¼   )r'   r”   rd   r4   r‹   Úlabel2r   r   r   Ú"test_line_use_index_false_diff_var  s   z2TestSeriesPlots.test_line_use_index_false_diff_varzWeird rounding problems)ÚreasonÚstrictz
axis, meth)r.   r9   )r0   rC   c                 C   sR   t  g d¢¡}tj ¡ \}}ttddgƒj|ƒd|d}t 	t||ƒ 
¡ |¡ d S )N)çš™™™™™¹?ç      ð?ç      $@g      Y@g     @@g     ˆÃ@éÈ   iô  T)r/   r4   )rQ   r¬   rb   rc   rZ   Úgetattrr   r&   r   r­   Úget_ticklocs)r'   ÚaxisÚmethr´   rd   r4   r   r   r   Útest_bar_log  s   zTestSeriesPlots.test_bar_logzaxis, kind, res_meth)r.   r9   Zget_ylim)r0   rC   rp   c           
      C   s‚   t  g d¢¡}tj ¡ \}}tg d¢ƒjd||d}d}d}t||ƒƒ }	t 	|	d |¡ t 	|	d |¡ t 
t||ƒ ¡ |¡ d S )	N)gñhãˆµøä>g-Cëâ6?çü©ñÒMbP?ç{®Gáz„?rÂ   rÃ   rÄ   )rÂ   rÌ   rË   T)r/   rA   r4   g!Ñ,åNJ?gÐ„–-?À?r   rY   )rQ   r¬   rb   rc   rZ   r   r&   rÆ   r   Zassert_almost_equalr­   rÇ   )
r'   rÈ   rA   Zres_methr´   rd   r4   ZyminÚymaxÚresr   r   r   Útest_bar_log_kind_bar!  s   z%TestSeriesPlots.test_bar_log_kind_barc                 C   sH   t g d¢g d¢d}tj ¡ \}}|jjd|d}t| ¡ g d¢ƒ d S )N©rY   rL   rg   r¦   ©r¸   r¹   rº   r²   r¨   Fr»   )Ú0Ú1Ú2Ú3)r   rb   rc   rZ   r&   r9   r   Úget_xticklabels)r'   Údfrd   r4   r   r   r   Útest_bar_ignore_index7  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Ù   rN   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&   r9   rU   )r'   r”   r4   Úresultr´   r   r   r   Útest_bar_user_colors=  s
   z$TestSeriesPlots.test_bar_user_colorsc                 C   s@   t tj d¡ d¡ƒ}tj ¡ \}}|j|d}t	|dd d S )NrL   ©rG   rG   rh   r   r*   ©
r   rQ   rR   rS   rT   rb   rc   rZ   r&   r   ©r'   r×   rd   r4   r+   r   r   r   Útest_rotation_defaultI  s   z%TestSeriesPlots.test_rotation_defaultc                 C   sB   t tj d¡ d¡ƒ}tj ¡ \}}|jd|d}t	|dd d S )NrL   rå   r{   )r)   r4   r*   ræ   rç   r   r   r   Útest_rotation_30P  s   z TestSeriesPlots.test_rotation_30c                 C   sž   ddl m} tddƒ}|g d¢ }ttj d¡ t|ƒ¡|ƒ}t	j
 ¡ \}}|j|d}| tdd	d	ƒd
|¡}| dd¡ || ¡ d ksGJ ‚t|dd d S )Nr   )ÚDatetimeConverterú1/1/2000z3/1/2000)	r   rY   rL   rg   rG   é	   r8   é   é   rL   rh   iÏ  rY   r—   z1/1/1999ú1/1/2001r{   r*   )Z%pandas.plotting._matplotlib.converterrê   r   r   rQ   rR   rS   rT   Úlenrb   rc   rZ   r&   Úconvertr   Zset_xlimrp   r   )r'   rê   ÚrngÚserrd   r4   Zxpr   r   r   Útest_irregular_datetimeV  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}t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¨   rh   r   Frn   )r   rQ   rª   rb   rc   rZ   r&   rp   rq   Znanminrr   Znanmax)r'   ró   rd   r4   rs   rt   ru   r   r   r   Útest_unsorted_index_xlimc  s   þ"&z(TestSeriesPlots.test_unsorted_index_xlimc                 C   sP   t tj d¡ dd¡g d¢dd}t|jjƒ}t|j	|j
ƒ | ¡ dks&J ‚d S )NrL   rY   rG   ©r¸   r¹   rº   r²   ÚeÚYLABEL©r‚   r   )r   rQ   rR   rS   Úintegersr   r&   Úpier   Útextsr‚   Ú
get_ylabel©r'   r   r4   r   r   r   Útest_pie_serieso  s   ýzTestSeriesPlots.test_pie_seriesc                 C   sH   t tj d¡ dd¡g d¢dd}t|jjd d}t|j	dgd ƒ d S )	NrL   rY   rG   rö   rø   rù   r   r—   )
r   rQ   rR   rS   rú   r   r&   rû   r   rü   rþ   r   r   r   Útest_pie_series_no_label{  s   ýz(TestSeriesPlots.test_pie_series_no_labelc                 C   sT   t tj d¡ dd¡g d¢dd}g d¢}t|jj|d}g d	¢}t|j	|d
 d S )NrL   rY   rG   rö   rø   rù   )ÚrÚgr¹   ©rk   )r  r  r¹   r  r  rP   )
r   rQ   rR   rS   rú   r   r&   rû   r   rU   )r'   r   Ú
color_argsr4   Zcolor_expectedr   r   r   Ú)test_pie_series_less_colors_than_elements„  s   ýz9TestSeriesPlots.test_pie_series_less_colors_than_elementsc                 C   sb   t tj d¡ dd¡g d¢dd}g d¢}g d¢}t|jj||d	}t|j	|ƒ t
|j|d
 d S )NrL   rY   rG   rö   rø   rù   )ÚAÚBÚCÚDÚE©r  r  r¹   rº   Úm)r   rk   rP   )r   rQ   rR   rS   rú   r   r&   rû   r   rü   r   rU   )r'   r   r   r  r4   r   r   r   Ú!test_pie_series_labels_and_colors  s   ýz1TestSeriesPlots.test_pie_series_labels_and_colorsc                 C   s˜   t tj d¡ dd¡g d¢dd}g d¢}t|jj|dd	d
}dd„ |j| 	¡  D ƒ}t
t t|j|ƒ¡ƒ}t|j|ƒ |jD ]
}| ¡ d	ksIJ ‚q?d S )NrL   rY   rG   rö   rø   rù   r  z%.2fé   )rk   ZautopctZfontsizec                 S   s   g | ]}|d  d›‘qS )éd   z.2fr   )rÜ   r”   r   r   r   rÞ   §  ó    zHTestSeriesPlots.test_pie_series_autopct_and_fontsize.<locals>.<listcomp>)r   rQ   rR   rS   rú   r   r&   rû   r±   ÚsumÚlistr   Úfrom_iterableÚzipr‚   r   rü   Zget_fontsize)r'   r   r  r4   ZpctsZexpected_textsÚtr   r   r   Ú$test_pie_series_autopct_and_fontsize  s   ýÿ
ÿz4TestSeriesPlots.test_pie_series_autopct_and_fontsizec                 C   sR   t g d¢g d¢d}tjtdd |j ¡  W d   ƒ d S 1 s"w   Y  d S )N)rY   rL   r   r¦   rX   rö   r¨   z&pie plot doesn't allow negative valuesrŸ   )r   r¡   r¢   Ú
ValueErrorr&   rû   rJ   r   r   r   Útest_pie_series_negative_raises­  s   "ÿz/TestSeriesPlots.test_pie_series_negative_raisesc                 C   s<   t ddtjdgg d¢dd}t|jjƒ}t|jg d¢ƒ d S )NrY   rL   r¦   rÑ   rø   rù   )r¸   r¹   r—   r²   )r   rQ   rª   r   r&   rû   r   rü   rþ   r   r   r   Útest_pie_series_nan³  s   z#TestSeriesPlots.test_pie_series_nanc                 C   sX   t dtjddgƒ}tj ¡ \}}|jjd|d}g d¢}dd„ |jD ƒ}||ks*J ‚d S )NrY   Tr–   )rÒ   r—   rÔ   rÕ   c                 S   rÛ   r   )Zget_text)rÜ   Úxr   r   r   rÞ   ¾  rß   z0TestSeriesPlots.test_pie_nan.<locals>.<listcomp>)	r   rQ   rª   rb   rc   rZ   r&   rû   rü   )r'   r”   rd   r4   r´   rã   r   r   r   Útest_pie_nan¹  s   zTestSeriesPlots.test_pie_nanc                 C   s˜   t tj d¡ d¡tdƒd}ttj d¡ d¡dd}tj 	¡ \}}|j
|d}|j
d	d	|d
 t|g d¢d | ¡  ¡ sAJ ‚|j ¡  ¡ sJJ ‚d S )NrL   ©r{   rg   Úabc©Úcolumnsr{   r  r   rh   T©rŽ   rm   r4   ©r¸   r¹   rº   ú	x (right)r   ©r   rQ   rR   rS   rT   r  r   rb   rc   rZ   r&   r   Ú	get_yaxisÚget_visibleZright_ax©r'   r×   r”   rd   r4   r   r   r   Útest_df_series_secondary_legendÁ  s   ÿz/TestSeriesPlots.test_df_series_secondary_legendc                 C   s˜   t tj d¡ d¡tdƒd}ttj d¡ d¡dd}tj 	¡ \}}|j
|d}|j
|d	d	d
 t|g d¢d | ¡  ¡ sAJ ‚|j ¡  ¡ sJJ ‚d S )NrL   r  r  r  r{   r  r   rh   T©r4   rŽ   rm   r!  r   r#  r&  r   r   r   Ú)test_df_series_secondary_legend_with_axesÒ  s   ÿz9TestSeriesPlots.test_df_series_secondary_legend_with_axesc                 C   s    t tj d¡ d¡tdƒd}ttj d¡ d¡dd}tj 	¡ \}}|j
d|d	}|j
dd|d
 g d¢}t|j|d |j ¡  ¡ rFJ ‚| ¡  ¡ sNJ ‚d S )NrL   r  r  r  r{   r  r   T©rm   r4   r   ©z	a (right)z	b (right)z	c (right)r"  r   ©r   rQ   rR   rS   rT   r  r   rb   rc   rZ   r&   r   Zleft_axr$  r%  ©r'   r×   r”   rd   r4   r´   r   r   r   Ú$test_df_series_secondary_legend_bothâ  s   ÿz4TestSeriesPlots.test_df_series_secondary_legend_bothc                 C   sž   t tj d¡ d¡tdƒd}ttj d¡ d¡dd}tj 	¡ \}}|j
d|d	}|j
|ddd
 g d¢}t|j|ƒ |j ¡  ¡ rEJ ‚| ¡  ¡ sMJ ‚d S )NrL   r  r  r  r{   r  r   Tr*  r(  r+  r,  r-  r   r   r   Ú.test_df_series_secondary_legend_both_with_axisó  s   ÿz>TestSeriesPlots.test_df_series_secondary_legend_both_with_axisc                 C   s    t tj d¡ d¡tdƒd}ttj d¡ d¡dd}tj 	¡ \}}|j
dd	|d
}|j
|ddd g d¢}t|j|ƒ |j ¡  ¡ rFJ ‚| ¡  ¡ sNJ ‚d S )NrL   r  r  r  r{   r  r   TF)rm   Z
mark_rightr4   r(  r!  r,  r-  r   r   r   Ú0test_df_series_secondary_legend_both_with_axis_2  s   ÿz@TestSeriesPlots.test_df_series_secondary_legend_both_with_axis_2zinput_logy, expected_scale)Tr/   )ZsymZsymlogc                 C   sj   t tj d¡ d¡ƒ}t tj d¡ d¡ƒ}|j|d}|jd|d}| ¡ |ks+J ‚| ¡ |ks3J ‚d S )NrL   r  )r-   T)rm   r-   )r   rQ   rR   rS   rT   r&   Z
get_yscale)r'   Z
input_logyZexpected_scaleÚs1Ús2rŠ   r‹   r   r   r   Útest_secondary_logy  s   z#TestSeriesPlots.test_secondary_logyc                 C   sl   t tj d¡ d¡ƒ}tj ¡ \}}d}tj	t
|d |jdd|d W d   ƒ d S 1 s/w   Y  d S )NrL   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§   )r1   rO   r4   )r   rQ   rR   rS   rT   rb   rc   rZ   r¡   r¢   r  r&   )r'   r  rd   r4   r¤   r   r   r   Ú)test_plot_fails_with_dupe_color_and_style$  s   ÿ"ÿz9TestSeriesPlots.test_plot_fails_with_dupe_color_and_stylezbw_method, indZscotté   ç      à?éœÿÿÿr  c                 C   s    t  d¡ t|jj||d d S )NÚscipy©Ú	bw_methodÚind)r¡   Úimportorskipr   r&   rD   )r'   r   r:  r;  r   r   r   Útest_kde_kwargs/  s   

zTestSeriesPlots.test_kde_kwargsc                 C   s.   t  d¡ t ddd¡}t|jjd|d d S )Nr8  r7  r  r5  r6  r9  )r¡   r<  rQ   Úlinspacer   r&   Zdensity)r'   r   Úsample_pointsr   r   r   Útest_density_kwargs<  s   
z#TestSeriesPlots.test_density_kwargsc                 C   sZ   t  d¡ tj ¡ \}}t ddd¡}|jjdd||d}t	|dd	 t
|j ¡ d
ƒ d S )Nr8  r7  r  r5  Tr6  )r-   r:  r;  r4   r/   ©r.   ZDensity)r¡   r<  rb   rc   rZ   rQ   r>  r&   rD   r
   r   r.   Z	get_label)r'   r   rd   r4   r?  r   r   r   Útest_kde_kwargs_check_axesA  s   
z*TestSeriesPlots.test_kde_kwargs_check_axesc                 C   sZ   t  d¡ ttj d¡jddƒ}tj|d< t|j	j
ƒ}tt |jd  ¡ ¡ ƒs+J ‚d S )Nr8  rL   é2   )Úsizer   )r¡   r<  r   rQ   rR   rS   Úuniformrª   r   r&   rD   ÚanyÚisnanru   Ú	get_xdata)r'   r”   r+   r   r   r   Útest_kde_missing_valsI  s
   

"z%TestSeriesPlots.test_kde_missing_valszApi changed in 3.6.0)rÀ   c                 C   s`   t j ¡ \}}|jjd|d}t|dd | ¡ }t||jgƒ | 	¡ }t|dgt
|ƒ ƒ d S )NT)r-   r4   r/   rA  r—   )rb   rc   rZ   r&   rF   r
   rÖ   r   r   Zget_yticklabelsrð   )r'   r   rd   r4   ZxlabelsZylabelsr   r   r   Útest_boxplot_seriesR  s   z#TestSeriesPlots.test_boxplot_seriesc                 C   s@   t  d¡ ttdƒƒ}tj ¡ \}}|j||d tj ¡  d S )Nr8  rg   ©rA   r4   )	r¡   r<  r   Úrangerb   rc   rZ   r&   r‰   ©r'   rA   r”   rd   r4   r   r   r   Útest_kind_kwarg\  ó
   
zTestSeriesPlots.test_kind_kwargc                 C   s@   t  d¡ ttdƒƒ}tj ¡ \}}t|j|ƒƒ  tj 	¡  d S )Nr8  rg   )
r¡   r<  r   rL  rb   rc   rZ   rÆ   r&   r‰   rM  r   r   r   Útest_kind_attrg  rO  zTestSeriesPlots.test_kind_attrc                 C   s`   t tdƒƒ}tj ¡ \}}d}tjt|d |j||d W d   ƒ d S 1 s)w   Y  d S )NÚabcdrž   rŸ   rK  )	r   r  rb   rc   rZ   r¡   r¢   r£   r&   ©r'   rA   r”   rd   r4   r¤   r   r   r   Útest_invalid_plot_datar  ó   "ÿz&TestSeriesPlots.test_invalid_plot_datac                 C   s,   t  d¡ ttdƒtd}t|j|d d S )Nr8  r8   r©   rH   )r¡   r<  r   rL  Úobjectr   r&   )r'   rA   r”   r   r   r   Útest_valid_object_plotz  s   
z&TestSeriesPlots.test_valid_object_plotc                 C   s`   t g d¢ƒ}tj ¡ \}}d}tjt|d |j||d W d   ƒ d S 1 s)w   Y  d S )N)r¸   r¹   rÃ   rL   rž   rŸ   rK  )r   rb   rc   rZ   r¡   r¢   r£   r&   rR  r   r   r   Ú test_partially_invalid_plot_data€  rT  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 )NrY   rL   z%invalid_kind is not a valid plot kindrŸ   Zinvalid_kindrH   )r   r¡   r¢   r  r&   ©r'   r”   r   r   r   Útest_invalid_kindˆ  s   "ÿz!TestSeriesPlots.test_invalid_kindc                 C   sP   t ddd}t ddd}| |¡}tj d¡ |j¡}t||d}t|j	ƒ d S )Nz1/1/2009r¦   ©Úperiodsz1/2/2009rL   r¨   )
r   ÚappendrQ   rR   rS   rT   rD  r   r   r&   )r'   Zdr1Zdr2r‚   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   ƒ d S 1 shw   Y  d S )Nr8   r  r   rL   )rL   r8   )ÚyerrÚxerrc                 S   s   g | ]}|j d d …df ‘qS )NrY   )Zvertices©rÜ   Úir   r   r   rÞ   œ  s    z>TestSeriesPlots.test_errorbar_asymmetrical.<locals>.<listcomp>rY   rX   z?Asymmetrical error bars should be provided with the shape \(2, z\)rŸ   )rL   rí   ©r^  )r   rQ   ÚarangerR   rS   r&   ZvstackÚcollectionsÚ	get_pathsÚTr¬   Zto_numpyZreshaper   r­   rð   r¡   r¢   r  )r'   r”   Úerrr4   rã   r´   r¤   r   r   r   Útest_errorbar_asymmetrical•  s   $ÿÿ"ÿz*TestSeriesPlots.test_errorbar_asymmetricalr^  rL   r8   )r8   rL   r  Úyr  c                 C   s4   t t d¡dd}t|j||d}t|ddd d S )Nr8   r  r   )r^  rA   r   rY   ©r_  r^  )r   rQ   rc  r   r&   r   )r'   rA   r^  r”   r4   r   r   r   Útest_errorbar_plot§  s   z"TestSeriesPlots.test_errorbar_plotc                 C   sJ   t t d¡dd}t tj d¡ d¡¡}t|j|d}t	|ddd d S )	Nr8   r  r   rL   )r_  rY   r   rj  )
r   rQ   rc  r‡   rR   rS   rT   r   r&   r   )r'   r”   Ús_errr4   r   r   r   Útest_errorbar_plot_yerr_0º  s   z)TestSeriesPlots.test_errorbar_plot_yerr_0rî   )rî   rL   c                 C   sH   t dddd}tt d¡|dd}||_t|j|d}t|d	d
d d S )Nrë   rï   ÚM)Úfreqrî   r  rù   rb  r   rY   rj  )r   r   rQ   rc  r‚   r   r&   r   )r'   r^  Zixr   r4   r   r   r   Útest_errorbar_plot_tsÁ  s
   z%TestSeriesPlots.test_errorbar_plot_tsc                 C   sT   t t d¡dd}t t¡ |jt d¡d W d   ƒ d S 1 s#w   Y  d S )Nr8   r  r   rí   rb  )r   rQ   rc  r   Úexternal_error_raisedr  r&   rX  r   r   r   Ú%test_errorbar_plot_invalid_yerr_shapeÕ  s   "ÿz5TestSeriesPlots.test_errorbar_plot_invalid_yerr_shapec                 C   sX   t t d¡dd}dgd }t t¡ |j|d W d   ƒ d S 1 s%w   Y  d S )Nr8   r  r   Úzzzrb  )r   rQ   rc  r   rq  r£   r&   )r'   r”   rl  r   r   r   Útest_errorbar_plot_invalid_yerrÜ  s
   
"ÿz/TestSeriesPlots.test_errorbar_plot_invalid_yerrc                 C   s   t |jdd d S )NT©Útabler%   rJ   r   r   r   Útest_table_trueã  ó   zTestSeriesPlots.test_table_truec                 C   s   t |j|d d S )Nru  r%   rJ   r   r   r   Útest_table_selfç  rx  zTestSeriesPlots.test_table_selfc                 C   s,   t  d¡ ttg d¢ƒtjjtjj ƒ d S )Nr8  rf   )r¡   r<  r   r   r	   ÚPlotAccessorÚ_series_kindsÚ_common_kinds)r'   r   r   r   Útest_series_grid_settingsë  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_colorsrY   rN   rg   )Ú!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  rY   )Z
num_colorsrO   rg   )r   rk   r  r€  ZcnamesZColorConverter)r'   rk   r€  rº   rã   r   r   r   Útest_standard_colors_all  s*   
õz(TestSeriesPlots.test_standard_colors_allc                 C   s@   t j ¡ \}}tt d¡d ƒjd|d}t| ¡ dgd d S )Nrî   rY   r~  ©rO   r4   ©Z
linecolors)	rb   rc   rZ   r   rQ   rc  r&   r   rq   ©r'   rd   r4   r   r   r   Útest_series_plot_color_kwargs%  s   z-TestSeriesPlots.test_series_plot_color_kwargsc                 C   sL   t j ¡ \}}tt d¡d tddddjd|d}t| 	¡ dgd d S )	Nrî   rY   rë   rZ  r¨   r~  r„  r…  )
rb   rc   rZ   r   rQ   rc  r   r&   r   rq   r†  r   r   r   Ú"test_time_series_plot_color_kwargs+  s
   ÿz2TestSeriesPlots.test_time_series_plot_color_kwargsc           	      C   sz   dd l }t|jƒ}tddd}tt dd¡|d}d}|j ¡ \}}t	|ƒD ]}|j
|d	}q&t| ¡ |d |… d
 d S )Nr   rë   rî   rZ  rY   é   r¨   rg   rh   r…  )r   r   ri   r   r   rQ   rc  rc   rZ   rL  r&   r   rq   )	r'   rb   Z
def_colorsr‚   r”   Zncolorsrd   r4   ra  r   r   r   Ú-test_time_series_plot_color_with_empty_kwargs3  s   
z=TestSeriesPlots.test_time_series_plot_color_with_empty_kwargsc                 C   s`   t t d¡dd„ tdƒD ƒd}tj ¡ \}}|jg d¢|d}dd„ dD ƒ}t| 	¡ |ƒ d S )Nr8   c                 S   ó   g | ]}d |d›‘qS ©ÚPÚ02dr   r`  r   r   r   rÞ   C  r  z4TestSeriesPlots.test_xticklabels.<locals>.<listcomp>r¨   )r   rg   rG   rì   )Úxticksr4   c                 S   r‹  rŒ  r   r`  r   r   r   rÞ   F  r  )
r   rQ   rc  rL  rb   rc   rZ   r&   r   rÖ   )r'   r”   rd   r4   r³   r   r   r   Útest_xticklabelsA  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 )	Nr8   c                 S   r‹  rŒ  r   r`  r   r   r   rÞ   K  r  z6TestSeriesPlots.test_xtick_barPlot.<locals>.<listcomp>r¨   r   rí   rL   )r  )
r   rL  r&   r9   rQ   r¬   r  r   r­   Z
get_xticks)r'   r”   r4   r³   r   r   r   Útest_xtick_barPlotI  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Úendro  r¨   )Zpandas.tseries.offsetsr’  r   rL  ÚpdZbdate_ranger   r&   )r'   r’  r”   r   r   r   Útest_custom_business_day_freqP  s   
ýþ	z-TestSeriesPlots.test_custom_business_day_freqziGH#24426, see also github.com/pandas-dev/pandas/commit/ef1bd69fa42bbed5d09dd17f08c44fc8bfc2b685#r61470674c                 C   sj   t g d¢ƒ}tj ¡ \}}|j|d}|j ¡ }|jddgdd tj ¡ \}}|j ¡ }t 	||¡ d S )NrÐ   rh   r   rY   T)Zinplace)
r   rb   rc   rZ   r&   r0   rÇ   Zdropr   r­   )r'   ró   rd   r4   Ú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ƒ}tj ¡ \}}|j||d | ¡ }|d dk s J ‚|d dks(J ‚d S )NrL   rg   rK  r   rY   )r   rb   rc   rZ   r&   rp   )r'   rA   r”   rd   r4   Úxlimsr   r   r   Útest_plot_xlim_for_serieso  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©   rY   r   )r   ÚintÚemptyr&   rð   rq   rH  r«   )r'   r×   r4   rB   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Ð   )rg   rL   rY   r   )r8   rC  r5  r{   )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¯   r‚   r9   rH   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$   )r¡  rt   )r¢  r   r   r   Ú<lambda>™  s   
 z1TestSeriesPlots.test_plot_order.<locals>.<lambda>)rj   )r   r&   ÚtolistÚsortedrU   )r'   r¯   r‚   ró   r4   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 )NrY   rL   r”   ZC3)r1   rO   r   )r   r&   ru   Ú	get_color)r'   r”   r4   r   r   r   Útest_style_single_ok  s   z$TestSeriesPlots.test_style_single_okz index_name, old_label, new_label))Nr—   Únew)Úoldrª  r©  )Nr—   r—   )rB   r>   r9   rC   rE   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Ð   rH   rC   r—   rE   Z	Frequency)rA   ZylabelZxlabel)r   r‚   r   r&   r¼   rý   )r'   rA   Z
index_nameZ	old_labelZ	new_labelró   r4   r   r   r   Útest_xlabel_ylabel_series¢  s   z)TestSeriesPlots.test_xlabel_ylabel_seriesr   r	  )r”  r[  ro  rY   )Údaysc                 C   s0   d}t ddg|dj|d}| ¡ dksJ ‚d S )N)rg   rY   rY   rL   r¨   )Zxlim)r   r&   rp   )r'   r‚   r›  r4   r   r   r   Útest_timedelta_index½  s   	z$TestSeriesPlots.test_timedelta_indexc                 C   s@   t g d¢ƒ}|jd d}ttjjƒd d… }t| ¡ |d d S )Nrf   rN   rY   r…  )r   r&   r   rb   rc   ri   r   rq   )r'   r   r4   r´   r   r   r   Útest_series_none_colorÊ  s   z&TestSeriesPlots.test_series_none_color)xÚ__name__Ú
__module__Ú__qualname__r¡   ÚmarkZslowZparametrizer(   r,   r5   r;   r?   r@   ÚparamÚtdZskip_if_no_scipyrI   rK   rV   r]   re   rl   rv   ry   r|   r„   r†   rŒ   r•   r˜   rš   rœ   r   r¥   r   ZmakeDateIndexrµ   r½   r¿   Zxfailr   r   rÊ   rÏ   rØ   rä   rè   ré   rô   rõ   rÿ   r   r  r  r  r  r  r  r'  r)  r.  r/  r0  r3  r4  rQ   Úint_r>  r=  r@  rB  rI  rJ  r	   rz  r|  r{  rN  rP  rS  rV  rW  rY  r]  rh  r   r‡   rR   rS   rT   r  r   rk  rm  rp  rr  rt  rw  ry  r}  r‚  rƒ  r‡  rˆ  rŠ  r  r‘  r—  rš  rœ  rŸ  r   r¦  r¨  r«  r–  Ztimedelta_rangeZ	Timedeltar­  r®  r   r   r   r   r    5   s˜   
ýþ

úþ


	

	
ý
ýþ	ÿ
üþ
		
	þ
þ



þüþ
þþþ
	





!ÿ


þþ
þþþ
r    ),Ú__doc__r   Ú	itertoolsr   ÚnumpyrQ   r¡   Zpandas.compatr   Zpandas.compat.numpyr   Zpandas.util._test_decoratorsÚutilZ_test_decoratorsr´  Zpandasr–  r   r   r   r	   Zpandas._testingZ_testingr   Zpandas.tests.plotting.commonr
   r   r   r   r   r   r   r   r   r   r   r<  rb   rˆ   Zfixturer   r   r   r    r   r   r   r   Ú<module>   s*    4




