o
    թZh                     @   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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*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period_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   s"   t tjdtjdtdddddS )N
   dtype
2020-01-01periodstsindexname)r   nparangefloat64r    r$   r$   X/var/www/html/lang_env/lib/python3.10/site-packages/pandas/tests/plotting/test_series.pyr   '   s
   
r   c                   C   s$   t tdtjddd tdD dS )N   seriesc                 S   s   g | ]}d | qS )Zi_r$   .0ir$   r$   r%   
<listcomp>3   s    zseries.<locals>.<listcomp>)r   r    r   )r   ranger!   r#   r$   r$   r$   r%   r'   0   s   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d 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/d0 Zd1d2 Zejdi d3digd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI Z dJdK Z!ejdLdMe"dNdOdPgdQdR Z#dSdT Z$dUdV Z%ejj&e'oe( dWddXejdYdZd[gd\d] Z)ejj&e'o
e( dWddXejd^g d_g d`gdadb Z*dcdd Z+dedf Z,dgdh Z-didj Z.dkdl Z/dmdn Z0dodp Z1dqdr Z2dsdt Z3dudv Z4dwdx Z5dydz Z6d{d| Z7d}d~ Z8dd Z9dd Z:dd Z;dd Z<dd Z=ejdddgdd Z>dd Z?ejdddgdMdgdMe@Adgde@Bdddggdd ZCdd ZDdd ZEdd ZFejj&dddd ZGejdeHjIjJeHjIjK dd ZLejdeHjIjJeHjIjK dd ZMejdeHjIjJdd ZNejdeHjIjJdd ZOejdeHjIjJdd ZPdd ZQdd ZRdd ZSejjejdddgejdeTe@Ue@jVWdXde@Ue@jVWdXdeYe@Ue@jVWdXdeZe@Ue@jVWdXdddgdgdd Z[ejjdd Z\ejjejdeTe@Ue@jVWdXdeZe@Ue@jVWdXdddgdgdd Z]ejjdd Z^ejjddĄ Z_ejjddƄ Z`ejjddȄ Zaejjddʄ Zbejdg d̢dd΄ ZcddЄ Zddd҄ ZeddԄ Zfddք Zgdd؄ Zhddڄ Zidd܄ Zjejj&dddd߄ Zkejdddgdd Zldd Zmdd Znejdg dg dfg dg dfgdd Zodd Zpejdg dejdg ddd ZqejdLerjsdddderjtdderjtddggdd Zudd Zvejjdd ZwdMS (   TestSeriesPlotskwargslabelZfoo	use_indexFc                 C   s   t |jfi | d S Nr   plot)selfr   r.   r$   r$   r%   	test_plot8   s   zTestSeriesPlots.test_plotc                 C   s   t |jdd}t|dd d S )Nr   )rotZxrot)r   r3   r   )r4   r   axesr$   r$   r%   test_plot_tick_props=   s   z$TestSeriesPlots.test_plot_tick_propszscale, exp_scalelogyTyaxislogZlogxxaxisZloglog)r=   r;   c                 C   s*   t |jfddi|}t|fi | d S )Nstyle.)r   r3   r   )r4   r   scaleZ	exp_scaleaxr$   r$   r%   test_plot_scalesB   s   
z TestSeriesPlots.test_plot_scalesc                 C      t |d d jj d S Nr   )r   r3   barr4   r   r$   r$   r%   test_plot_ts_barO   s   z TestSeriesPlots.test_plot_ts_barc                 C   s   t |jjdd d S )NFstacked)r   r3   arearF   r$   r$   r%   test_plot_ts_area_stackedS   s   z)TestSeriesPlots.test_plot_ts_area_stackedc                 C   s$   t tdtddd}t|j d S )N   r   r   )r   r,   r	   r   r3   )r4   serr$   r$   r%   test_plot_iseriesW   s   z!TestSeriesPlots.test_plot_iserieskindlinerE   barhkdescipy)Zmarkshistboxc                 C   s   t |d d j|d d S )NrL   rO   r2   )r4   r'   rO   r$   r$   r%   test_plot_series_kinds[   s   z&TestSeriesPlots.test_plot_series_kindsc                 C   rC   rD   )r   r3   rQ   r4   r'   r$   r$   r%   test_plot_series_barhi   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   r   blackcolorr   Z
facecolors)
r   r   r!   randomdefault_rngstandard_normalr3   rE   r   patches)r4   rA   r$   r$   r%   test_plot_series_bar_axl   s   z'TestSeriesPlots.test_plot_series_bar_axlayout)   )rf   re   c                 C   s(   t |jfddi|}t|ddd d S )NsubplotsTrf   rf   rf   )axes_numrd   )r   r3   r   )r4   r   r.   rA   r$   r$   r%   test_plot_6951r   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figsizerA   rf   rh   )ri   rd   rn   )mplpyplotrg   r3   r   rm   r   )r4   r'   _rA   r$   r$   r%   test_plot_figsize_and_titlex   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rf   rZ      rA   )ro   rp   rcParamsrg   r   r3   )r4   keycolorsrq   rA   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 )NrA   r   Forigre   r$   )ro   rp   rg   r3   get_xlim	get_linesget_data)r4   r   r.   rq   rA   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)rI   rA   r   r{   re   r7   	ro   rp   rg   r3   rJ   r}   r~   r   r   r4   r   rq   rA   r   r   rP   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rI   Zx_compatrA   r   r{   re      r7   r   r   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CETFTr   r   r{   re   r7   copyZtz_localizeZ
tz_convertr   ro   rp   rg   r3   rJ   r}   r~   r   r   r4   r   Ztz_tsrq   rA   r   r   rP   r$   r$   r%   test_ts_tz_area_lim_xcompat      z+TestSeriesPlots.test_ts_tz_area_lim_xcompatc                 C   r   )
Nr   r   FT)rI   rz   rA   r   r{   re   r7   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 )Nrf   rZ   T)ZshareyrJ   )rA   rO   )	ro   rp   rg   absr3   r   Zjoinedpltclose)r4   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 )Nrf   rZ   LABELT)r/   legendrA   labelsallr   ro   rp   rg   r3   r   r   r4   srq   rA   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 )Nrf   rZ   Tr   rA    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 )	Nrf   rZ   NAMEr    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 )
Nrf   rZ   r   r   Tr   r   r/   rA   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 )
Nrf   rZ   r   r   Fr   r   r   r   )	r   ro   rp   rg   r3   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   r3   pytestraises	TypeError)r4   r   msgr$   r$   r%   test_boolean   s   "zTestSeriesPlots.test_booleanr   Nr      r   c                 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 )Nrf   rZ   rt   r   r   rs   r   )FFTF)rf   rZ   r   rt   TrH   F)r!   nanr   r   r3   r   	get_ydataarrayr#   tmassert_numpy_array_equaldeletedatamaskrJ   )r4   r   valuesdrA   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 Nrs   abcr   z	The IndexFr0   rA   r   )r   r   r    ro   rp   rg   r3   
get_xlabel)r4   r   rq   rA   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    ro   rp   rg   r3   rE   r   )r4   r   rq   rA   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;   rE   )r=   rQ   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<   rA   )r!   r   ro   rp   rg   getattrr   r3   r   r   get_ticklocs)r4   axismethr   rq   rA   r$   r$   r%   test_bar_log  s   zTestSeriesPlots.test_bar_logzaxis, kind, res_meth)r;   rE   Zget_ylim)r=   rQ   r}   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)gh㈵>g-C6?MbP?{Gz?r   r   r   )r   r   r   T)r<   rO   rA   g!,NJ?gЄ-??r   rf   )r!   r   ro   rp   rg   r   r3   r   r   Zassert_almost_equalr   r   )
r4   r   rO   Zres_methr   rq   rA   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rf   rZ   rt   r   r   r   r   r   r   Fr   )0123)r   ro   rp   rg   r3   rE   r   get_xticklabels)r4   dfrq   rA   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)r)   pr$   r$   r%   r+   C      z8TestSeriesPlots.test_bar_user_colors.<locals>.<listcomp>)r           r   r   r   r   r   r   r   r   )r   r3   rE   rb   )r4   r   rA   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 )NrZ   rL   rL   ru   r   r7   
r   r!   r_   r`   ra   ro   rp   rg   r3   r   r4   r   rq   rA   r8   r$   r$   r%   test_rotation_defaultL  s   z%TestSeriesPlots.test_rotation_defaultc                 C   sB   t tjdd}tj \}}|jd|d}t	|dd d S )NrZ   r   r   )r6   rA   r7   r   r   r$   r$   r%   test_rotation_30S  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   rf   rZ   rt   rL   	   r         rZ   ru   i  rf   r   z1/1/19991/1/2001r   r7   )Z%pandas.plotting._matplotlib.converterr   r   r   r!   r_   r`   ra   lenro   rp   rg   r3   convertr   Zset_xlimr}   r   )r4   r   rngrM   rq   rA   Zxpr$   r$   r%   test_irregular_datetimeY  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   ru   r   Fr{   )r   r!   r   ro   rp   rg   r3   r}   r~   Znanminr   Znanmax)r4   rM   rq   rA   r   r   r   r$   r$   r%   test_unsorted_index_xlimf  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 )NrZ   rf   rL   r   r   r   r   eYLABELr   )r   r!   r_   r`   integersr   r3   pier   textsr   
get_ylabelr4   r'   rA   r$   r$   r%   test_pie_seriesr  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 )	NrZ   rf   rL   r   r  r   r   r   )
r   r!   r_   r`   r  r   r3   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 )NrZ   rf   rL   r   r  r   )rgr   rx   )r	  r
  r   r	  r
  r^   )
r   r!   r_   r`   r  r   r3   r  r   rb   )r4   r'   
color_argsrA   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 )NrZ   rf   rL   r   r  r   )ABCDEr	  r
  r   r   m)r   rx   r^   )r   r!   r_   r`   r  r   r3   r  r   r  r   rb   )r4   r'   r   r  rA   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 )NrZ   rf   rL   r   r  r   r  z%.2f   )rx   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   r!   r_   r`   r  r   r3   r  r   sumlistr   from_iterablezipr   r   r  Zget_fontsize)r4   r'   r  rA   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)rf   rZ   r   r   re   r   r   z&pie plot doesn't allow negative valuesr   )r   r   r   
ValueErrorr3   r  rX   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 )Nrf   rZ   r   r   r  r   )r   r   r   r   )r   r!   r   r   r3   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 )Nrf   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   r!   r   ro   rp   rg   r3   r  r  )r4   r   rq   rA   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 )NrZ   r   rt   abccolumnsr   r"  r   ru   Tr   rz   rA   r   r   r   	x (right)r   r   r!   r_   r`   ra   r  r   ro   rp   rg   r3   r   	get_yaxisget_visibleZright_axr4   r   r   rq   rA   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 )NrZ   r$  r%  r&  r   r"  r   ru   TrA   r   rz   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 )NrZ   r$  r%  r&  r   r"  r   Trz   rA   r(  z	a (right)z	b (right)z	c (right)r*  r   r   r!   r_   r`   ra   r  r   ro   rp   rg   r3   r   Zleft_axr,  r-  r4   r   r   rq   rA   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 )NrZ   r$  r%  r&  r   r"  r   Tr2  r0  r3  r4  r5  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 )NrZ   r$  r%  r&  r   r"  r   TF)rz   Z
mark_rightrA   r0  r)  r4  r5  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<   )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 )NrZ   r  )r:   T)rz   r:   )r   r!   r_   r`   ra   r3   Z
get_yscale)r4   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 )NrZ   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--k)r>   r]   rA   )r   r!   r_   r`   ra   ro   rp   rg   r   r   r  r3   )r4   r"  rq   rA   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scottr&         ?r  c                 C   s    t d t|jj||d d S )NrS   	bw_methodind)r   importorskipr   r3   rR   )r4   r   rB  rC  r$   r$   r%   test_kde_kwargs2  s   

zTestSeriesPlots.test_kde_kwargsc                 C   s.   t d tddd}t|jjd|d d S )NrS   r@  r  r&   r?  rA  )r   rD  r!   linspacer   r3   Zdensity)r4   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 )NrS   r@  r  r&   Tr?  )r:   rB  rC  rA   r<   r;   ZDensity)r   rD  ro   rp   rg   r!   rF  r3   rR   r   r   r;   Z	get_label)r4   r   rq   rA   rG  r$   r$   r%   test_kde_kwargs_check_axesD  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 )NrS   rZ   2   )sizer   )r   rD  r   r!   r_   r`   uniformr   r   r3   rR   anyisnanr   	get_xdata)r4   r   r8   r$   r$   r%   test_kde_missing_valsL  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:   rA   r<   rI  r   )ro   rp   rg   r3   rU   r   r   r   r    Zget_yticklabelsr   )r4   r   rq   rA   ZxlabelsZylabelsr$   r$   r%   test_boxplot_seriesU  s   z#TestSeriesPlots.test_boxplot_seriesc                 C   s@   t d ttd}tj \}}|j||d tj  d S )NrS   rt   rO   rA   )	r   rD  r   r,   ro   rp   rg   r3   r   r4   rO   r   rq   rA   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 )NrS   rt   )
r   rD  r   r,   ro   rp   rg   r   r3   r   rT  r$   r$   r%   test_kind_attrj  rV  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   rS  )	r   r  ro   rp   rg   r   r   r   r3   r4   rO   r   rq   rA   r   r$   r$   r%   test_invalid_plot_datau     "z&TestSeriesPlots.test_invalid_plot_datac                 C   s,   t d ttdtd}t|j|d d S )NrS   r   r   rV   )r   rD  r   r,   objectr   r3   )r4   rO   r   r$   r$   r%   test_valid_object_plot}  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   rZ   r   r   rS  )r   ro   rp   rg   r   r   r   r3   rY  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 )Nrf   rZ   z%invalid_kind is not a valid plot kindr   Zinvalid_kindrV   )r   r   r   r  r3   r4   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   r   z1/2/2009rZ   r   )
r   appendr!   r_   r`   ra   rL  r   r   r3   )r4   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 )Nr   r"  r   rZ   )rZ   r   )yerrxerrc                 S   s   g | ]}|j d d df qS )Nrf   )Zverticesr(   r$   r$   r%   r+     s    z>TestSeriesPlots.test_errorbar_asymmetrical.<locals>.<listcomp>rf   re   z?Asymmetrical error bars should be provided with the shape \(2, z\)r   )rZ   r   rc  )r   r!   r"   r_   r`   r3   Zvstackcollections	get_pathsTr   Zto_numpyZreshaper   r   r   r   r   r  )r4   r   errrA   r   r   r   r$   r$   r%   test_errorbar_asymmetrical  s   $"z*TestSeriesPlots.test_errorbar_asymmetricalrc  rZ   r   )r   rZ   r"  yr&  c                 C   s4   t tddd}t|j||d}t|ddd d S )Nr   r"  r   )rc  rO   r   rf   rd  rc  )r   r!   r"   r   r3   r   )r4   rO   rc  r   rA   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 )	Nr   r"  r   rZ   )rd  rf   r   rl  )
r   r!   r"   r   r_   r`   ra   r   r3   r   )r4   r   s_errrA   r$   r$   r%   test_errorbar_plot_yerr_0  s   z)TestSeriesPlots.test_errorbar_plot_yerr_0r   )r   rZ   c                 C   sH   t dddd}ttd|dd}||_t|j|d}t|d	d
d d S )Nr   r   ZME)freqr   r"  r   re  r   rf   rl  )r   r   r!   r"   r   r   r3   r   )r4   rc  Zixr   rA   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 )Nr   r"  r   r   re  )r   r!   r"   r   external_error_raisedr  r3   r_  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 )Nr   r"  r   zzzre  )r   r!   r"   r   rr  r   r3   )r4   r   rn  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tabler2   rX   r$   r$   r%   test_table_true     zTestSeriesPlots.test_table_truec                 C   s   t |j|d d S )Nrv  r2   rX   r$   r$   r%   test_table_self  ry  zTestSeriesPlots.test_table_selfc                 C   s,   t d ttg dtjjtjj  d S )NrS   rs   )r   rD  r   r   r
   PlotAccessor_series_kinds_common_kinds)r4   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_colorsrf   r\   rt   )!pandas.plotting._matplotlib.styler  )r4   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sJ qPd S )Nr   r  r  rf   )Z
num_colorsr]   rt   )r   rx   r  r  ZcnamesZColorConverter)r4   rx   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   rf   r  r]   rA   Z
linecolors)	ro   rp   rg   r   r!   r"   r3   r   r~   r4   rq   rA   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   rf   r   r   r   r  r  r  )
ro   rp   rg   r   r!   r"   r   r3   r   r~   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   r   rf      r   rt   ru   r  )r   r   rv   r   r   r!   r"   rp   rg   r,   r3   r   r~   )	r4   ro   Z
def_colorsr   r   Zncolorsrq   rA   r*   r$   r$   r%   -test_time_series_plot_color_with_empty_kwargs6  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 )Nr   c                 S      g | ]}d |dqS P02dr$   r(   r$   r$   r%   r+   F  r  z4TestSeriesPlots.test_xticklabels.<locals>.<listcomp>r   )r   rt   rL   r   )xticksrA   c                 S   r  r  r$   r(   r$   r$   r%   r+   I  r  )
r   r!   r"   r,   ro   rp   rg   r3   r   r   )r4   r   rq   rA   r   r$   r$   r%   test_xticklabelsD  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   r  r  r$   r(   r$   r$   r%   r+   N  r  z6TestSeriesPlots.test_xtick_barPlot.<locals>.<listcomp>r   r   r   rZ   )r  )
r   r,   r3   rE   r!   r   r  r   r   Z
get_xticks)r4   r   rA   r   r$   r$   r%   test_xtick_barPlotL  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endrp  r   )Zpandas.tseries.offsetsr  r   r,   pdZbdate_ranger   r3   )r4   r  r   r$   r$   r%   test_custom_business_day_freqS  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   ru   r   rf   T)Zinplace)
r   ro   rp   rg   r3   r=   r   Zdropr   r   )r4   rM   rq   rA   beforeafterr$   r$   r%   %test_plot_accessor_updates_on_inplaceb  s   

z5TestSeriesPlots.test_plot_accessor_updates_on_inplacerJ   c                 C   sT   t ddg}tj \}}|j||d | }|d dk s J |d dks(J d S )NrZ   rt   rS  r   rf   )r   ro   rp   rg   r3   r}   )r4   rO   r   rq   rA   xlimsr$   r$   r%   test_plot_xlim_for_seriesr  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   rf   r   )r   intemptyr3   r   r~   rP  r   )r4   r   rA   rP   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   r3   )r4   r   r$   r$   r%   test_plot_no_numeric_data  s   
"z)TestSeriesPlots.test_plot_no_numeric_datazdata, indexr   )rt   rZ   rf   r   )r   rK  r&   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   rE   rV   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 r1   )r  r   )r  r$   r$   r%   <lambda>  s   
 z1TestSeriesPlots.test_plot_order.<locals>.<lambda>)rw   )r   r3   tolistsortedrb   )r4   r   r   rM   rA   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 )Nrf   rZ   r   ZC3)r>   r]   r   )r   r3   r   	get_color)r4   r   rA   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   )rP   rJ   rE   rQ   rT   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   rV   rQ   r   rT   Z	Frequency)rO   ZylabelZxlabel)r   r   r    r3   r   r  )r4   rO   Z
index_nameZ	old_labelZ	new_labelrM   rA   r$   r$   r%   test_xlabel_ylabel_series  s   z)TestSeriesPlots.test_xlabel_ylabel_seriesr   r  )r  r   rp  rf   )daysc                 C   s0   d}t ddg|dj|d}| dksJ d S )N)rt   rf   rf   rZ   r   )Zxlim)r   r3   r}   )r4   r   r  rA   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 )Nrs   r\   rf   r  )r   r3   r   ro   rp   rv   r   r~   )r4   r'   rA   r   r$   r$   r%   test_series_none_color  s   z&TestSeriesPlots.test_series_none_colorc                 C   s8   t d | }W d    d S 1 sw   Y  d S )NF)r   Zassert_produces_warningr3   )r4   r   rq   r$   r$   r%   test_plot_no_warning  s   
"z$TestSeriesPlots.test_plot_no_warning)x__name__
__module____qualname__r   markZslowZparametrizer5   r9   rB   rG   rK   rN   paramtdZ
skip_if_norW   rY   rc   rj   rr   ry   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zxfailr   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r   r!  r#  r/  r1  r6  r7  r8  r<  r>  r!   int_rF  rE  rH  rJ  rQ  rR  r
   r{  r}  r|  rU  rW  rZ  r]  r^  r`  rb  rj  r   r   r_   r`   ra   r  r   rm  ro  rq  rs  ru  rx  rz  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%   r-   7   s   





	

	

	

		
	






	





!




r-   ),__doc__r   	itertoolsr   numpyr!   r   Zpandas.compatr   Zpandas.compat.numpyr   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr  r   r   r   r	   r
   Zpandas._testingZ_testingr   Zpandas.tests.plotting.commonr   r   r   r   r   r   r   r   r   r   r   rD  ro   r   Zfixturer   r'   r-   r$   r$   r$   r%   <module>   s&    4



