o
    ҷhE                     @   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)tmmakeTimeSeries r   r   T/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/plotting/test_series.pyr   &      r   c                   C   r   )Nseriesr   )r   makeStringSeriesr   r   r   r   r   +   r   r   c                   C   r   )Niseriesr   )r   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(oe) 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<dd Z=dd Z>ejdddgdd Z?dd Z@ejdddgdLdgdLeABdgdeACdddggdd ZDdd ZEdd ZFdd ZGejj'dddd ZHejdeIjJjKeIjJjL dd ZMejdeIjJjKeIjJjL dd ZNejdeIjJjKdd ZOejdeIjJjKdd ZPejdeIjJjKdd ZQdd ZRdd ZSdd ZTejjejdddgejdeUeAVeAjWXdYdeAVeAjWXdYdeZeAVeAjWXdYde[eAVeAjWXdYdddgdgdd Z\ejjdd Z]ejjejdeUeAVeAjWXdYde[eAVeAjWXdYdddgdgdd Z^ejjdd Z_ejjdd Z`ejjddĄ ZaejjddƄ ZbejjddȄ Zcejdg dʢdd̄ Zddd΄ ZeddЄ Zfdd҄ ZgddԄ Zhddք Zidd؄ Zjddڄ Zkejj'dddd݄ Zlejdddgdd Zmdd Zndd Zoejdg dg dfg dg dfgdd Zpdd Zqejdg dejdg ddd ZrejdKesjtddddesjuddesjuddggdd Zvdd Zwejjdd ZxdLS )TestSeriesPlotskwargslabel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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loglogxxaxisloglog)r6   r3   c                 C   s*   t |jfddi|}t|fi | d S )Nstyle.)r   r*   r
   )r+   r   scale	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*   arearB   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linerA   barhkde)markshistboxc                 C   s   t |d d j|d d S )N   rI   r)   )r+   r   rI   r   r   r   test_plot_series_kindsX   s   z&TestSeriesPlots.test_plot_series_kindsc                 C   r>   r?   )r   r*   rK   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   r@   blackcolorr   
facecolors)
r   r   nprandomdefault_rngstandard_normalr*   rA   r   patches)r+   r<   r   r   r   test_plot_series_bar_axi   s   z'TestSeriesPlots.test_plot_series_bar_axlayout)   )rc   rb   c                 C   s(   t |jfddi|}t|ddd d S )NsubplotsTrc   rc   rc   )axes_numra   )r   r*   r   )r+   r   r$   r<   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 )NTest)      )titlefigsizer<   rc   re   )rf   ra   rl   )mplpyplotrd   r*   r   rk   r   )r+   r   _r<   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rc   rU      r<   )rm   rn   rcParamsrd   r   r*   )r+   keycolorsro   r<   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 )Nr<   r   Forigrb   r   )rm   rn   rd   r*   get_xlim	get_linesget_data)r+   r   r$   ro   r<   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)rE   r<   r   ry   rb   r.   	rm   rn   rd   r*   rF   r{   r|   r}   r   r+   r   ro   r<   r~   r   rJ   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rE   x_compatr<   r   ry   rb      r.   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   ry   rb   r.   copytz_localize
tz_convertindexrm   rn   rd   r*   rF   r{   r|   r}   r   r+   r   tz_tsro   r<   r~   r   rJ   r   r   r   test_ts_tz_area_lim_xcompat      z+TestSeriesPlots.test_ts_tz_area_lim_xcompatc                 C   r   )
Nr   r   FT)rE   rx   r<   r   ry   rb   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 )Nrc   rU   T)shareyrF   )r<   rI   )	rm   rn   rd   absr*   r   joinedpltclose)r+   r   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 )Nrc   rU   LABELT)r%   legendr<   labelsallr   rm   rn   rd   r*   r   r   r+   sro   r<   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 )Nrc   rU   Tr   r<    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 )	Nrc   rU   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 )
Nrc   rU   r   r   Tr   r   r%   r<   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 )
Nrc   rU   r   r   Fr   r   r   r   )	r   rm   rn   rd   r*   
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)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 )Nrc   rU   rr   r   r   rq   dtype)FFTF)rc   rU   r   rr   TrD   F)r[   nanr   r   r*   r   	get_ydataarrayfloat64r   assert_numpy_array_equaldeletedatamaskrF   )r+   r   valuesdr<   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 Nrq   abcr   z	The IndexFr'   r<   r   )r   r   r   rm   rn   rd   r*   
get_xlabel)r+   r   ro   r<   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   rm   rn   rd   r*   rA   r   )r+   r   ro   r<   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)r3   rA   )r6   rK   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)r4   r<   )r[   r   rm   rn   rd   getattrr   r*   r   r   get_ticklocs)r+   axismethr   ro   r<   r   r   r   test_bar_log  s   zTestSeriesPlots.test_bar_logzaxis, kind, res_meth)r3   rA   get_ylim)r6   rK   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)r4   rI   r<   g!,NJ?gЄ-??r   rc   )r[   r   rm   rn   rd   r   r*   r   r   assert_almost_equalr   r   )
r+   r   rI   res_methr   ro   r<   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rc   rU   rr   r   r   r   r   r   r   Fr   )0123)r   rm   rn   rd   r*   rA   r   get_xticklabels)r+   dfro   r<   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   rW   c                 S      g | ]}|  qS r   )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*   rA   r_   )r+   r   r<   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 )NrU   rP   rP   rs   r   r.   
r   r[   r\   r]   r^   rm   rn   rd   r*   r   r+   r   ro   r<   r0   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 )NrU   r  r   )r-   r<   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   rc   rU   rr   rP   	   r@         rU   rs   i  rc   r   z1/1/19991/1/2001r   r.   )%pandas.plotting._matplotlib.converterr  r   r   r[   r\   r]   r^   lenrm   rn   rd   r*   convertr   set_xlimr{   r   )r+   r  rngserro   r<   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   rs   r   Fry   )r   r[   r   rm   rn   rd   r*   r{   r|   nanminr}   nanmax)r+   r  ro   r<   r~   r   r   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 )NrU   rc   rP   r   r   r   r   eYLABELr   r   )r   r[   r\   r]   integersr   r*   pier   textsr   
get_ylabelr+   r   r<   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 )	NrU   rc   rP   r  r  r  r   r   )
r   r[   r\   r]   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 )NrU   rc   rP   r  r  r  )rgr   rv   )r"  r#  r   r"  r#  rY   )
r   r[   r\   r]   r  r   r*   r  r   r_   )r+   r   
color_argsr<   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 )NrU   rc   rP   r  r  r  )ABCDEr"  r#  r   r   m)r   rv   rY   )r   r[   r\   r]   r  r   r*   r  r   r  r   r_   )r+   r   r   r%  r<   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 )NrU   rc   rP   r  r  r  r-  z%.2f   )rv   autopct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   r*   r  r   sumlistr   from_iterablezipr   r   r  get_fontsize)r+   r   r%  r<   pcts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)rc   rU   r   r   rb   r  r   z&pie plot doesn't allow negative valuesr   )r   r   r   
ValueErrorr*   r  rS   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 )Nrc   rU   r   r   r  r  )r   r   r   r   )r   r[   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 )Nrc   Tr   )r   r   r   r   c                 S   r   r   )get_text)r   xr   r   r   r     r   z0TestSeriesPlots.test_pie_nan.<locals>.<listcomp>)	r   r[   r   rm   rn   rd   r*   r  r  )r+   r   ro   r<   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 )NrU   r   rr   abccolumnsr   rB  r   rs   Tr   rx   r<   r   r   r   	x (right)r   r   r[   r\   r]   r^   r6  r   rm   rn   rd   r*   r   	get_yaxisget_visibleright_axr+   r   r   ro   r<   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 )NrU   rD  rE  rF  r   rB  r   rs   Tr<   r   rx   rI  r   rK  rO  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 )NrU   rD  rE  rF  r   rB  r   Trx   r<   rH  z	a (right)z	b (right)z	c (right)rJ  r   r   r[   r\   r]   r^   r6  r   rm   rn   rd   r*   r   left_axrL  rM  r+   r   r   ro   r<   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 )NrU   rD  rE  rF  r   rB  r   TrS  rQ  rT  rU  rW  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 )NrU   rD  rE  rF  r   rB  r   TF)rx   
mark_rightr<   rQ  rI  rU  rW  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)Tr4   )sym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 )NrU   r3  )r2   T)rx   r2   )r   r[   r\   r]   r^   r*   
get_yscale)r+   
input_logy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 )NrU   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   )r8   rX   r<   )r   r[   r\   r]   r^   rm   rn   rd   r   r   r>  r*   )r+   rB  ro   r<   r   r   r   r   )test_plot_fails_with_dupe_color_and_style$  s   "z9TestSeriesPlots.test_plot_fails_with_dupe_color_and_stylezbw_method, indscott         ?r3  c                 C   s    t d t|jj||d d S )Nscipy	bw_methodind)r   importorskipr   r*   rL   )r+   r   rk  rl  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 )Nri  rh  r3  rf  rg  rj  )r   rm  r[   linspacer   r*   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 )Nri  rh  r3  rf  Trg  )r2   rk  rl  r<   r4   r3   Density)r   rm  rm   rn   rd   r[   ro  r*   rL   r
   r   r3   	get_label)r+   r   ro   r<   rq  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 )Nri  rU   2   )sizer   )r   rm  r   r[   r\   r]   uniformr   r   r*   rL   anyisnanr   	get_xdata)r+   r   r0   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)r2   r<   r4   rs  r   )rm   rn   rd   r*   rO   r
   r   r   r   get_yticklabelsr  )r+   r   ro   r<   xlabels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 )Nri  rr   rI   r<   )	r   rm  r   rangerm   rn   rd   r*   r   r+   rI   r   ro   r<   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 )Nri  rr   )
r   rm  r   r  rm   rn   rd   r   r*   r   r  r   r   r   test_kind_attrg  r  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   r  )	r   r6  rm   rn   rd   r   r   r   r*   r+   rI   r   ro   r<   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 )Nri  r@   r   rQ   )r   rm  r   r  objectr   r*   )r+   rI   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   rU   r   r   r  )r   rm   rn   rd   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 )Nrc   rU   z%invalid_kind is not a valid plot kindr   invalid_kindrQ   )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/2009rU   r   )
r   appendr[   r\   r]   r^   rx  r   r   r*   )r+   dr1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@   rB  r   rU   )rU   r@   )yerrxerrc                 S   s   g | ]}|j d d df qS )Nrc   )verticesr   ir   r   r   r     s    z>TestSeriesPlots.test_errorbar_asymmetrical.<locals>.<listcomp>rc   rb   z?Asymmetrical error bars should be provided with the shape \(2, z\)r   )rU   r	  r  )r   r[   aranger\   r]   r*   vstackcollections	get_pathsTr   to_numpyreshaper   r   r  r   r   r>  )r+   r   errr<   r   r   r   r   r   r   test_errorbar_asymmetrical  s   $"z*TestSeriesPlots.test_errorbar_asymmetricalr  rU   r@   )r@   rU   rB  yrF  c                 C   s4   t tddd}t|j||d}t|ddd d S )Nr@   rB  r   )r  rI   r   rc   r  r  )r   r[   r  r   r*   r   )r+   rI   r  r   r<   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@   rB  r   rU   )r  rc   r   r  )
r   r[   r  r   r\   r]   r^   r   r*   r   )r+   r   s_errr<   r   r   r   test_errorbar_plot_yerr_0  s   z)TestSeriesPlots.test_errorbar_plot_yerr_0r
  )r
  rU   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
  rB  r  r  r   rc   r  )r   r   r[   r  r   r   r*   r   )r+   r  ixr   r<   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@   rB  r   r	  r  )r   r[   r  r   external_error_raisedr>  r*   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@   rB  r   zzzr  )r   r[   r  r   r  r   r*   )r+   r   r  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)   rS   r   r   r   test_table_true     zTestSeriesPlots.test_table_truec                 C   s   t |j|d d S )Nr  r)   rS   r   r   r   test_table_self  r  zTestSeriesPlots.test_table_selfc                 C   s,   t d ttg dtjjtjj  d S )Nri  rq   )r   rm  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_colorsrc   rW   rr   )!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sJ qPd S )Nr   r$  r  rc   )
num_colorsrX   rr   )r   rv   r  r  cnamesColorConverter)r+   rv   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
  rc   r  rX   r<   
linecolors)	rm   rn   rd   r   r[   r  r*   r   r|   r+   ro   r<   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
  rc   r  r  r   r  r  r  )
rm   rn   rd   r   r[   r  r   r*   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  rc      r   rr   rs   r  )r   r   rt   r   r   r[   r  rn   rd   r  r*   r   r|   )	r+   rm   
def_colorsr   r   ncolorsro   r<   r  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 )Nr@   c                 S      g | ]}d |dqS P02dr   r  r   r   r   r   C  r4  z4TestSeriesPlots.test_xticklabels.<locals>.<listcomp>r   )r   rr   rP   r  )xticksr<   c                 S   r  r  r   r  r   r   r   r   F  r4  )
r   r[   r  r  rm   rn   rd   r*   r   r   )r+   r   ro   r<   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 )	Nr@   c                 S   r  r  r   r  r   r   r   r   K  r4  z6TestSeriesPlots.test_xtick_barPlot.<locals>.<listcomp>r   r   r	  rU   )r  )
r   r  r*   rA   r[   r   r6  r   r   
get_xticks)r+   r   r<   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   )CustomBusinessDayr3  y   z
2014-05-01z
2014-06-01z
2014-05-26)holidays)startendr  r   )pandas.tseries.offsetsr  r   r  pd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   rs   r   rc   T)inplace)
r   rm   rn   rd   r*   r6   r   dropr   r   )r+   r  ro   r<   beforeafterr   r   r   %test_plot_accessor_updates_on_inplace_  s   

z5TestSeriesPlots.test_plot_accessor_updates_on_inplacerF   c                 C   sT   t ddg}tj \}}|j||d | }|d dk s J |d dks(J d S )NrU   rr   r  r   rc   )r   rm   rn   rd   r*   r{   )r+   rI   r   ro   r<   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   rc   r   )r   intemptyr*   r  r|   r|  r   )r+   r   r<   rJ   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   )rr   rU   rc   r   )r@   rw  rf  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   rA   rQ   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  r   )r  r   r   r   <lambda>  s   
 z1TestSeriesPlots.test_plot_order.<locals>.<lambda>)ru   )r   r*   tolistsortedr_   )r+   r   r   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 )Nrc   rU   r   C3)r8   rX   r   )r   r*   r   	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))Nr   new)oldr  r  )Nr   r   )rJ   rF   rA   rK   rN   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   rQ   rK   r   rN   	Frequency)rI   ylabelxlabel)r   r   r   r*   r   r  )r+   rI   
index_name	old_label	new_labelr  r<   r   r   r   test_xlabel_ylabel_series  s   z)TestSeriesPlots.test_xlabel_ylabel_seriesr   r+  )r  r  r  rc   )daysc                 C   s0   d}t ddg|dj|d}| dksJ d S )N)rr   rc   rc   rU   r   )xlim)r   r*   r{   )r+   r   r  r<   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 )Nrq   rW   rc   r  )r   r*   r   rm   rn   rt   r   r|   )r+   r   r<   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   assert_produces_warningr*   )r+   r   ro   r   r   r   test_plot_no_warning  s   
"z$TestSeriesPlots.test_plot_no_warning)y__name__
__module____qualname__r   markslowparametrizer,   r1   r=   rC   rG   rH   paramtdskip_if_no_scipyrR   rT   r`   rg   rp   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   makeDateIndexr   r   r   xfailr   r   r   r   r   r   r  r  r  r  r   r!  r'  r/  r=  r?  r@  rC  rP  rR  rX  rY  r[  rc  rd  r[   int_ro  rn  rr  rv  r}  r  r	   r  r  r  r  r  r  r  r  r  r  r  r   r   r\   r]   r^   r6  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  timedelta_range	Timedeltar   r  r  r   r   r   r   r#   5   s   





	

	

	

		
	






	





!




r#   ),__doc__r   	itertoolsr   numpyr[   r   pandas.compatr   pandas.compat.numpyr   pandas.util._test_decoratorsutil_test_decoratorsr  pandasr  r   r   r   r	   pandas._testing_testingr   pandas.tests.plotting.commonr
   r   r   r   r   r   r   r   r   r   r   rm  rm   r   fixturer   r   r!   r#   r   r   r   r   <module>   s*    4




