a
    Pf                    @   s   d Z ddlmZmZmZmZ ddlZddlZddlZddl	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 ddlmZ ddlmZmZmZ ddlmZmZm Z  dd	l!m"Z" dd
l#m$Z$ ddl%m&Z& e'dZ(G dd dZ)dddZ*dS )z< Test cases for time series specific (freq conversion, etc)     )datedatetimetime	timedeltaN)
BaseOffset	to_offset)freq_to_period_freqstr)	DataFrameIndexNaTSeriesconcatisnato_datetime)DatetimeIndexbdate_range
date_range)PeriodPeriodIndexperiod_range)timedelta_range)_check_ticks_props)WeekOfMonthZ
matplotlibc                   @   sH  e Zd Zejddd Zdd Zdd Zdd	 Z	d
d Z
dd Zdd Zejdg ddd Zejdg ddd Zdd Zdd Zejdddgdd Zdd  Zd!d" Zejdg dd#d$ Zejd%g d&d'd( Zejdg dd)d* Zejdg d+d,d- Zejd%g d&d.d/ Zejd0ejdg dd1d2 Zejdg dd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zejj d=d>d?d@ Z!dAdB Z"dCdD Z#dEdF Z$dGdH Z%dIdJ Z&dKdL Z'dMdN Z(dOdP Z)ejdQejdRe*e+j,dSe+j-dTe.dUdSdVdWe/e*e+j,dSe+j-dTe.dUdSdVdWe*e+j,dSe+j-dTe.dUdSdVdWdX dYgdZd[ Z0d\d] Z1d^d_ Z2d`da Z3dbdc Z4ddde Z5dfdg Z6ejj7dhdi Z8djdk Z9dldm Z:dndo Z;dpdq Z<drds Z=dtdu Z>dvdw Z?dxdy Z@dzd{ ZAd|d} ZBd~d ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOejd0dd ZPdd ZQdd ZRejj dd>dd ZSdd ZTdd ZUdd ZVdd ZWejdddgdd ZXejdddgdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd ZbddÄ Zcddń ZdddǄ ZeddɄ Zfdd˄ Zgdd̈́ Zhejj d=d>ddτ Ziddф Zjddӄ ZkddՄ Zlddׄ Zmddل Znddۄ Zodd݄ Zpdd߄ Zqdd Zrdd Zsdd Ztdd Zudd Zvdd Zwdd Zxejj dd>dd Zydd Zzdd Z{dd Z|dd Z}dd Z~dS )
TestTSPlotzignore::UserWarningc                 C   s   |}t ddd|d}tddg|d}t|j | }tt|  }|d j|d j	fd	ksfJ |d
 j|d
 j	fdksJ d S )N1/1/2011   h)periodsfreqtzg     g@g     t@indexr   r   r   )   r   )
r   r   _check_plot_worksplotnextiter	get_lines	get_xdatahourminute)selfZtz_aware_fixturer   r!   tsaxxdata r1   `/var/www/ai-form-bot/venv/lib/python3.9/site-packages/pandas/tests/plotting/test_datetimelike.pytest_ts_plot_with_tz0   s    
zTestTSPlot.test_ts_plot_with_tzc                 C   sd   t tjddtdd}tj \}}|j	d|d |
 |  D ]}| dksJJ qJd S )Nr   )
   	   r4   r    Zfontsizer/   )r	   nprandomdefault_rngstandard_normalrangemplpyplotsubplotsr&   get_xticklabelsZget_yticklabelsZget_fontsize)r-   df_r/   labelr1   r1   r2   test_fontsize_set_correctly=   s    z&TestTSPlot.test_fontsize_set_correctlyc                 C   s   t dddd}t|jd d}ttjdt|df|d}t	|j
 |d	d
 |dd }ttjdt|df|d}t	|j
 d S )N1/1/1987ZMSd   r   r   r   r      r    r   (   -   c   )r   r   valuesr	   r7   r8   r9   r:   lenr%   r&   union)r-   idxr@   df2r1   r1   r2   test_frame_inferredG   s    
zTestTSPlot.test_frame_inferredc                 C   sL   t dddd}t|jd d}ttjdt|df|d}t	|j
 d S )	Nz2008-1-1 00:15:00Z15minr4   rF   rG   r   rH   r    )r   r   rL   r	   r7   r8   r9   r:   rM   r%   r&   r-   rO   r@   r1   r1   r2   test_frame_inferred_n_gt_1X   s    z%TestTSPlot.test_frame_inferred_n_gt_1c                 C   s:   t g d}t||d}t|j|d t|j|d d S )Nr$   r   rH   r    )Zxerr)Zyerr)r7   arrayr	   r%   r&   )r-   iar1   r1   r2   test_is_error_nozeroindexa   s    z$TestTSPlot.test_is_error_nozeroindexc                 C   sd   t dddd}tg dg dd|}tj \}}|j|d t| d	ksTJ tj| d S )
NrD   YErH   rF   xyzrT   ABr/   r$   )	r   r	   r<   r=   r>   r&   rM   r)   close)r-   rO   r@   figr/   r1   r1   r2   test_nonnumeric_excludeh   s    z"TestTSPlot.test_nonnumeric_excludec                 C   sh   t dddd}tg dg dd|}d}tjt|d	 |d
   W d    n1 sZ0    Y  d S )NrD   rY   rH   rF   rZ   rT   r^   zno numeric data to plotmatchr_   )r   r	   pytestraises	TypeErrorr&   )r-   rO   r@   msgr1   r1   r2   test_nonnumeric_exclude_errorq   s
    z(TestTSPlot.test_nonnumeric_exclude_errorr   )sminr   DWMQYc                 C   sJ   t d|dd}ttjdt||}tj	 \}}t
|j|d d S N
12/31/1999rE   rF   r   ra   )r   r   r7   r8   r9   r:   rM   r<   r=   r>   r%   r&   r-   r   rO   serrA   r/   r1   r1   r2   test_tsplot_periodx   s    zTestTSPlot.test_tsplot_period)	rl   rm   r   rn   ro   MEzQE-DECrY   Z1B30Minc                 C   sJ   t d|dd}ttjdt||}tj	 \}}t
|j|d d S rs   )r   r   r7   r8   r9   r:   rM   r<   r=   r>   r%   r&   ru   r1   r1   r2   test_tsplot_datetime   s    zTestTSPlot.test_tsplot_datetimec                 C   s\   t tjdtjdtdddd}tj \}}|jd|d d}||	 d	 
 ksXJ d S )
Nr4   Zdtype
2020-01-01r   r    kstyler/   )        r   r   r$   r   )r   r7   arangefloat64r   r<   r=   r>   r&   r)   	get_color)r-   r.   rA   r/   colorr1   r1   r2   test_tsplot   s    zTestTSPlot.test_tsplotc                 C   s   t tjdtjdtdddd}d}tjt|d |jdd	d
 W d    n1 sV0    Y  |j	dd}tjt|d |jdd	d
 W d    n1 s0    Y  d S )Nr4   rz   r{   r|   r    zCannot pass 'style' string with a color symbol and 'color' keyword argument. Please use one or the other or pass 'style' without a color symbolre   zb-z#000099)r   r   T)Zdrop)
r   r7   r   r   r   rg   rh   
ValueErrorr&   Zreset_index)r-   r.   rj   rl   r1   r1   r2   test_both_style_and_color   s    ,z$TestTSPlot.test_both_style_and_colormsusc                 C   sJ   t j \}}tdd|d}ttjdt	||}t
|j|d d S )N1/1/2012rE   r   r   r   ra   )r<   r=   r>   r   r   r7   r8   r9   r:   rM   r%   r&   )r-   r   rA   r/   rngrv   r1   r1   r2   test_high_freq   s    zTestTSPlot.test_high_freqc                 C   sn   ddl m} |d dd u sJ |dddks0J |tdddtddjksPJ |ddtd	djksjJ d S )
Nr   )get_datevaluern     rr   rp   z1987-12rD   z1987-1-1)%pandas.plotting._matplotlib.converterr   r   ordinal)r-   r   r1   r1   r2   test_get_datevalue   s
     zTestTSPlot.test_get_datevaluec                 C   sr   dd }t dtddddd}tj \}}|j|d	 ||d
 t dtddddd}|j|d	 ||d d S )Nc                 S   s>   |   d }| d j}| d }|| ||ks:J d S )Nr   )r)   r*   r   	get_ydataZformat_coord)r/   Zexpected_string
first_lineZfirst_xZfirst_yr1   r1   r2   check_format_of_first_point   s    zITestTSPlot.test_ts_plot_format_coord.<locals>.check_format_of_first_pointr$   z
2014-01-01rH   zYE-DECr   r    ra   zt = 2014  y = 1.000000rn   zt = 2014-01-01  y = 1.000000)r   r   r<   r=   r>   r&   )r-   r   ZannualrA   r/   Zdailyr1   r1   r2   test_ts_plot_format_coord   s    
z$TestTSPlot.test_ts_plot_format_coordc                 C   s>   t d|dd}ttjdt||}t|j|j	j
 d S Nrt   rE   rF   r   )r   r   r7   r8   r9   r:   rM   r%   r&   r!   r   r-   r   rO   rv   r1   r1   r2   test_line_plot_period_series   s    z'TestTSPlot.test_line_plot_period_seriesfrqncy)Z1sZ3sZ5minZ7hZ4DZ8WZ11MZ3Yc                 C   s@   t d|dd}ttjdt||}t|j|j	j
j d S r   )r   r   r7   r8   r9   r:   rM   r%   r&   r!   r   	rule_code)r-   r   rO   rl   r1   r1   r2    test_line_plot_period_mlt_series   s    z+TestTSPlot.test_line_plot_period_mlt_seriesc                 C   s@   t d|dd}ttjdt||}t|j|j	j
j d S r   )r   r   r7   r8   r9   r:   rM   r%   r&   r!   r   r   r   r1   r1   r2   test_line_plot_datetime_series   s    z)TestTSPlot.test_line_plot_datetime_series)rl   rm   r   rn   ro   rx   QErY   c                 C   sJ   t d|dd}ttjdt|df|g dd}t|j|j	j
 d S )Nrt   rE   rF   r   rH   r_   r`   Cr!   columns)r   r	   r7   r8   r9   r:   rM   r%   r&   r!   r   r-   r   rO   r@   r1   r1   r2   test_line_plot_period_frame   s    z&TestTSPlot.test_line_plot_period_framec                 C   sd   t d|dd}ttjdt|df|g dd}td|jj	j
}|j|j	}t|j| d S 	Nrt   rE   rF   r   rH   r   r   r$   )r   r	   r7   r8   r9   r:   rM   r   r!   r   r   asfreqr%   r&   )r-   r   rO   r@   r   r1   r1   r2   test_line_plot_period_mlt_frame   s    z*TestTSPlot.test_line_plot_period_mlt_framez3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 C   sd   t d|dd}ttjdt|df|g dd}td|jj	j
}|j|j	}t|j| d S r   )r   r	   r7   r8   r9   r:   rM   r   r!   r   r   	to_periodr%   r&   r   r1   r1   r2   test_line_plot_datetime_frame   s    z(TestTSPlot.test_line_plot_datetime_framec                 C   sn   t d|dd}ttjdt||}t|jtt	|j
}t|j|j
j |jg d }t|j d S )Nrt   rE   rF   r   )r   rH         )r   r   r7   r8   r9   r:   rM   rL   r
   Zasarrayr!   r%   r&   Zinferred_freqilocr   r1   r1   r2   test_line_plot_inferred_freq  s    z'TestTSPlot.test_line_plot_inferred_freqc                 C   sf   t j \}}tdd}ttt||d}t|d d |dd  g}|j|d t	|drbJ d S )Nz2001-1-1z	2001-1-10r    rH   r   ra   r   )
r<   r=   r>   r   r   r;   rM   r   r&   hasattr)r-   rA   r/   r   r.   r1   r1   r2   test_fake_inferred_business  s    
z&TestTSPlot.test_fake_inferred_businessc                 C   s.   t tjdtjdtdddd}t|j d S )Nr4   rz   r{   r|   r    )r   r7   r   r   r   r%   r&   )r-   rv   r1   r1   r2   test_plot_offset_freq  s    z TestTSPlot.test_plot_offset_freqc                 C   s:   t dddd}ttjdt||d}t|j d S )Nz
2023-01-01ZBQSr4   rF   r   r    )	r   r   r7   r8   r9   r:   rM   r%   r&   r-   Zdrrv   r1   r1   r2   test_plot_offset_freq_business  s    z)TestTSPlot.test_plot_offset_freq_businessc                 C   sR   t tdddtdddtdddg}ttjdt||d}t|j	 d S )N  r$   r      r   r    )
r
   r   r   r7   r8   r9   r:   rM   r%   r&   r   r1   r1   r2    test_plot_multiple_inferred_freq#  s    &z+TestTSPlot.test_plot_multiple_inferred_freqzApi changed in 3.6.0)reasonc                 C   s   dd l m  m  m} tdddd}ttjd	t
|df|d}tj \}}|j|d | }| }| }t||D ]8\}	}
||	d	}t|
 }t
|r||ksJ qd S )
Nr   z2012-6-22 21:59:51.960928r     rF   r   r    ra   %H:%M:%S.%f)r   plotting_matplotlib	converterr   r	   r7   r8   r9   r:   rM   r<   r=   r>   r&   	get_xaxisZget_ticklocsget_ticklabelszipZ_from_ordinalstrftimestrget_text)r-   convrO   r@   rA   r/   ZaxisZtlocsZtlabelslocrB   xprsr1   r1   r2   test_uhf(  s    zTestTSPlot.test_uhfc                 C   s   t dddd}ttjdt|df|d}|jg d }tj	
 \}}|j|d t| d	  d d d	f  }d
}t|dd  ||d |g dk  sJ d S )N2012-6-22 21:59:51rl   r4   rF   r   r    )r   r$   rH      ra   r   )QΠE>r$   :0yE>)r   r	   r7   r8   r9   r:   rM   r   r<   r=   r>   r&   r   r)   
get_xydatadifffabsall)r-   rO   r@   irregrA   r/   diffssecr1   r1   r2   test_irreg_hf=  s    $zTestTSPlot.test_irreg_hfc                 C   s   t dddd}ttjdt|df|d}tj	 \}}|j
t|_
|j|d t| d  d d df  }d	}t|d
d  | dk  sJ d S )Nr   rl   r4   rF   r   r    ra   r   r   r$   r   )r   r	   r7   r8   r9   r:   rM   r<   r=   r>   r!   astypeobjectr&   r   r)   r   r   r   r   )r-   rO   rP   rA   r/   r   r   r1   r1   r2   test_irreg_hf_objectK  s    $zTestTSPlot.test_irreg_hf_objectc                 C   s   t tjdtjdtdddd}|jg d }tj \}}|j	|d}|d usTJ t
| d  |jD ]\}}||kslJ qld S )	Nr4   rz   r{   r|   r    )r   r$   r      ra   r   )r   r7   r   r   r   r   r<   r=   r>   r&   r   r)   r*   r!   )r-   rv   rA   r/   retr   r   r1   r1   r2   "test_irregular_datetime64_repr_bugW  s     z-TestTSPlot.test_irregular_datetime64_repr_bugc                 C   s   t tdtddd}d}|jd  }tjt|d$ t|t|dd|_W d    n1 s`0    Y  t	j
 \}}|j|d	 | d  d
 |jd jksJ | d  }tjt|d$ t|djdksJ W d    n1 s0    Y  d S )Nr   r{   r|   PeriodDtype\[B\] is deprecatedr   re   r`   startr   r   ra   r"   data)r   r;   r   r!   to_timestamptmassert_produces_warningFutureWarningrM   r<   r=   r>   r&   r)   r   r   r*   r   freqstr)r-   btsrj   dtrA   r/   rO   r1   r1   r2   test_business_freqe  s    2$zTestTSPlot.test_business_freqc                 C   s   t tjdtjdtdddddd}|d}tj	 \}}|j
|d	 | d
  d |jd
 jkspJ | d
  }t|djdksJ d S )Ni,  rz   r{   r`   r   r    ZBMErp   ra   r   r"   r   )r   r7   r   r   r   r   r   r<   r=   r>   r&   r)   r   r!   r   r*   r   r   )r-   r   r.   rA   r/   rO   r1   r1   r2   test_business_freq_convertr  s    
$z%TestTSPlot.test_business_freq_convertc                 C   s   t  }ttjdtjdtdddd|}tj	 \}}|j
|d | d  }d}tjt|d	 t|d
 W d    n1 s0    Y  d S )Nr4   rz   r{   r|   r    ra   r   z)freq not specified and cannot be inferredre   r   )r   r   r7   r   r   r   r   r<   r=   r>   r&   r)   r*   rg   rh   r   r   )r-   r   r   rA   r/   rO   rj   r1   r1   r2   test_freq_with_no_period_alias~  s    z)TestTSPlot.test_freq_with_no_period_aliasc                 C   sf   t ddddtdd }ttd|d}tj \}}|j|d |	 d	 
 }t|jrbJ d S )
Nz
2012-12-20   r   r      minutesr    ra   r   )r   r   r	   r7   r   r<   r=   r>   r&   r)   r*   r
   is_normalized)r-   rO   r@   rA   r/   r   r1   r1   r2   test_nonzero_base  s    zTestTSPlot.test_nonzero_basec                 C   sl   t dttjdtjdtddddi}tj \}}|j	|d |
 d  }t|j t| d S )	NrW   r4   rz   r{   r|   r    ra   r   )r	   r   r7   r   r   r   r<   r=   r>   r&   r)   r*   r   assert_index_equalr!   r   r   )r-   r   rA   r/   rO   r1   r1   r2   test_dataframe  s    
zTestTSPlot.test_dataframez8ignore:Period with BDay freq is deprecated:FutureWarningobjr4   rz   r{   r|   r    r$   rW   bc                 C   sb  t j \}}|j|d | }||d d |d d  | }|d |d d ks^J |d |d d ksvJ td|jtd|jf}|dd | }t|d |d j	ksJ t|d |d j	ksJ td|jtd|jf}|t
dddt
dd	d | }t|d |d j	ks.J t|d |d j	ksJJ | }t j| d S )
Nra   r   r   r$   r4   1/1/2000z4/1/2000r   r   )r<   r=   r>   r&   get_xlimset_xlimr   r   intr   r   
get_figurerb   )r-   r   rA   r/   Zxlimresultexpectedrc   r1   r1   r2   test_axis_limits  s&    zTestTSPlot.test_axis_limitsc                 C   s   dd l m  m  m} |td|jks0J |td|jksHJ |td|jks`J |td|jksxJ |td|j	ksJ |td|jksJ d S )Nr   r`   rn   rx   r   rY   ro   )
r   r   r   r   Z
get_finderr   Z_daily_finderZ_monthly_finderZ_quarterly_finderZ_annual_finder)r-   r   r1   r1   r2   test_get_finder  s    zTestTSPlot.test_get_finderc                 C   s"  g d}d}t jt|d, tdddjgt|  }}W d    n1 sL0    Y  g }g }|D ]}td|d}ttj	
dt||}	tj \}
}|	j|d	 | }|| d
  | \}}||d | || d
  tj|  qb||ksJ ||ksJ d S )N)r4   rI      i  i  i
  '  z#Period with BDay freq is deprecatedre   z1999-1-1r`   rG   r|   r   ra   r   ?)r   r   r   r   r   rM   r   r   r7   r8   r9   r:   r<   r=   r>   r&   r   appendget_majorticklocsr   r   rb   r   )r-   Zday_lstrj   xpl1xpl2rs1rs2nr   rv   rA   r/   xaxisvminvmaxr1   r1   r2   test_finder_daily  s&    :zTestTSPlot.test_finder_dailyc                 C   s   ddg}t djgt|  }}g }g }|D ]}tdt|d dd}ttjd	t||}t
j \}	}
|j|
d	 |
 }|| d
  |
 \}}|
|d | || d
  t
j|
  q,||ksJ ||ksJ d S )Ng      @r   1988Q11987Q2r   rq   r   r   ra   r   r   r   r   rM   r   r   r   r7   r8   r9   r:   r<   r=   r>   r&   r   r   r   r   r   rb   r   r-   Zyrsr  r  r  r  r  r   rv   rA   r/   r  r  r  r1   r1   r2   test_finder_quarterly  s"    z TestTSPlot.test_finder_quarterlyc                 C   s   g d}t djgt|  }}g }g }|D ]}tdt|d dd}ttjd	t||}t
j \}	}
|j|
d |
 }|| d	  |
 \}}|
|d
 | || d	  t
j|
  q,||ksJ ||ksJ d S )N)gffffff?g      @r   r   zJan 1988r     rp   r   r   ra   r   r   r  r  r1   r1   r2   test_finder_monthly  s"    zTestTSPlot.test_finder_monthlyc                 C   st   t dddd}ttjdt||}tj	 \}}|j
|d | }| d }tddj}||kspJ d S )	Nr
  i   rp   r   r   ra   r   Z1989Q1)r   r   r7   r8   r9   r:   rM   r<   r=   r>   r&   r   r   r   r   )r-   r   rv   rA   r/   r  r   r   r1   r1   r2   test_finder_monthly_long#  s    z#TestTSPlot.test_finder_monthly_longc           	      C   s   g d}dd |D }g }dD ]r}t d|dd}ttjdt||}tj	 \}}|j
|d	 | }|| d
  tj|  q||ksJ d S )N)r   i    r    i  i  iz  c                 S   s   g | ]}t |d djqS )rr   rG   )r   r   .0r[   r1   r1   r2   
<listcomp>/      z1TestTSPlot.test_finder_annual.<locals>.<listcomp>)r   r4      1   rK      iW  i  Z1987rr   r   r   ra   r   )r   r   r7   r8   r9   r:   rM   r<   r=   r>   r&   r   r   r   rb   r   )	r-   r   r   Znyearsr   rv   rA   r/   r  r1   r1   r2   test_finder_annual-  s    zTestTSPlot.test_finder_annualc           	      C   sz   d}t dd|d}ttjdt||}tj	 \}}|j
|d | }| d }tdddj}||ksvJ d S )	Ni@ 1/1/1999ZMinrF   r   ra   r   rG   r   r   r7   r8   r9   r:   rM   r<   r=   r>   r&   r   r   r   r   )	r-   Znminutesr   rv   rA   r/   r  r   r   r1   r1   r2   test_finder_minutely<  s    zTestTSPlot.test_finder_minutelyc           	      C   sz   d}t dd|d}ttjdt||}tj	 \}}|j
|d | }| d }tdddj}||ksvJ d S )	N   r  r   rF   r   ra   r   rG   r  )	r-   Znhoursr   rv   rA   r/   r  r   r   r1   r1   r2   test_finder_hourlyI  s    zTestTSPlot.test_finder_hourlyc                 C   s   t tjdtjdtdddd}tj|jdd< tj	 \}}|j
|d | }t|d	ksbJ |d
 }| }tjj|t|tjd}t|tjjjsJ |j}|ddd	f  sJ tj|  d S )Nr   rz   r{   r|   r    r      ra   r$   r   maskZ
fill_value)r   r7   r   r   r   nanr   r<   r=   r>   r&   r)   rM   r   maMaskedArrayr   
isinstancecorer#  r   rb   r   r-   r.   rA   r/   linesliner   r#  r1   r1   r2   	test_gapsU  s    zTestTSPlot.test_gapsc                 C   s   t tjdtjdtdddd}|jg d }tj|jdd< tj	 \}}|j
|d	}| }t|d
kspJ |d }| }tjj|t|tjd}t|tjjjsJ |j}|ddd
f  sJ tj|  d S )Nr   rz   r{   r|   r    	r   r$   r   r   r   r5   r        r   r   ra   r$   r   r"  )r   r7   r   r   r   r   r$  r<   r=   r>   r&   r)   rM   r   r%  r&  r   r'  r(  r#  r   rb   r   r)  r1   r1   r2   test_gaps_irregularh  s     zTestTSPlot.test_gaps_irregularc           	      C   s   g d}t tjdt||}tj|jdd< tj	
 \}}|j|d | }t|dksfJ |d }| }tjj|t|tjd}t|tjjjsJ |j}|dddf  sJ d S )Nr-  r   r   ra   r$   r   r"  )r   r7   r8   r9   r:   rM   r$  r   r<   r=   r>   r&   r)   r   r%  r&  r   r'  r(  r#  r   )	r-   rO   rv   rA   r/   r*  r+  r   r#  r1   r1   r2   test_gaps_non_ts}  s    zTestTSPlot.test_gaps_non_tsc           
      C   s  t tjdtjdtdddd}tj|jdd< tj	 \}}|j
|d t|jd	 |jd
 dd}t tjdt||}|j
dd | }t|dksJ t|j dksJ |d	 }| }tjj|t|tjd}t|tjjjsJ |j}	|	dddf  sJ d S )Nr   rz   r{   r|   r    r   r!  ra   r   r#   Z12hrG   r   Tsecondary_yr$   r"  )r   r7   r   r   r   r$  r   r<   r=   r>   r&   r!   r8   r9   r:   rM   r)   right_axr   r%  r&  r   r'  r(  r#  r   )
r-   lowrA   r/   idxhrl   r*  r+  r   r#  r1   r1   r2   test_gap_upsample  s$    zTestTSPlot.test_gap_upsamplec                 C   s   t tjdd}tj \}}|jdd}t	|ds>J t	|drLJ |
 }| d }t | | }t|| |  dksJ |d   rJ tj| d S )	Nr   r4   Tr2  left_axr4  r   right)r   r7   r8   r9   r:   r<   r=   r>   r&   r   get_axesr)   r   r*   r   assert_series_equal	get_yaxisget_ticks_positionget_visiblerb   )r-   rv   rc   rA   r/   axesr+  r   r1   r1   r2   test_secondary_y  s    zTestTSPlot.test_secondary_yc                 C   sn   t tjdd t tjdd}tj \}}|j|d |	 
 dksZJ tj|  d S )Nr   r4   ra   left)r   r7   r8   r9   r:   r<   r=   r>   r&   r<  r=  rb   r   )r-   ser2rA   ax2r1   r1   r2   test_secondary_y_yaxis  s    z!TestTSPlot.test_secondary_y_yaxisc                 C   s   t tjdd}t tjdd}| }|jdd}|  sPJ t|dr^J t|dslJ t|dszJ t|drJ d S )Nr   r4   Tr2  r8  r4  )	r   r7   r8   r9   r:   r&   r<  r>  r   )r-   rv   rB  r/   rC  r1   r1   r2   test_secondary_both  s    zTestTSPlot.test_secondary_bothc           	      C   s   t ddd}ttjdd|}tj \}}|j	dd}t
|dsLJ t
|drZJ | }| d	 }t| |  }t|| |  d
ksJ |d	   rJ tj| d S )Nr   r4   r|   r   Tr2  r8  r4  r   r9  )r   r   r7   r8   r9   r:   r<   r=   r>   r&   r   r:  r)   r   r*   r   r   r;  r<  r=  r>  rb   )	r-   rO   rv   rc   rA   r/   r?  r+  r   r1   r1   r2   test_secondary_y_ts  s    zTestTSPlot.test_secondary_y_tsc                 C   sf   t ddd}ttjdd|}tj \}}|j	|d |
  dksRJ tj|  d S )Nr   r4   r|   r   ra   rA  )r   r   r7   r8   r9   r:   r<   r=   r>   r&   r<  r=  rb   r   )r-   rO   rB  rA   rC  r1   r1   r2   test_secondary_y_ts_yaxis  s    z$TestTSPlot.test_secondary_y_ts_yaxisc                 C   s@   t ddd}ttjdd|}| }|  s<J d S )Nr   r4   r|   r   )	r   r   r7   r8   r9   r:   r&   r<  r>  )r-   rO   rB  r/   r1   r1   r2   test_secondary_y_ts_visible  s    z&TestTSPlot.test_secondary_y_ts_visiblec                 C   s~   t d ttjdd}tj	 \}}|j
dd|d}t|dsLJ t|drZJ | }|d	   d
kszJ d S )NZscipyr   r4   TZdensityr3  kindr/   r8  r4  r$   r9  )rg   importorskipr   r7   r8   r9   r:   r<   r=   r>   r&   r   r:  r<  r=  r-   rv   rc   r/   r?  r1   r1   r2   test_secondary_kde  s    
zTestTSPlot.test_secondary_kdec                 C   sX   t tjdd}tj \}}|jdd|d |	 }|d 
  dksTJ d S )Nr   r4   TbarrI  r$   r9  )r   r7   r8   r9   r:   r<   r=   r>   r&   r:  r<  r=  rL  r1   r1   r2   test_secondary_bar  s
    zTestTSPlot.test_secondary_barc                 C   s|   t tjddg dd}|jddgdd}|d	   d
ksHJ |d   dks`J |d   d
ksxJ d S )Nr   r   rH   rW   r   cr   rW   rR  T)r3  r>   r   r9  r$   rA  r	   r7   r8   r9   r:   r&   r<  r=  r-   r@   r?  r1   r1   r2   test_secondary_frame  s    zTestTSPlot.test_secondary_framec                 C   s~   t tjddg dd}|jdddgdd	}|d
   dksJJ |d   dksbJ |d   dkszJ d S )Nr   rP  rQ  rS  rN  rW   rR  T)rJ  r3  r>   r   r9  r$   rA  rT  rU  r1   r1   r2   test_secondary_bar_frame  s    z#TestTSPlot.test_secondary_bar_framec                 C   s  t tjdtjdtddddd}|jg d }tj \}}|j	|d |j	d	|d
}|
 }d}tjt|dn t|d  }t|d  }	t||jd t|	|jd | \}
}|j }W d    n1 s0    Y  |
|d jksJ ||d jksJ d S Nr/  rz   r{   r`   r   r    r   r   r4   r   r        r.  ra   gr~   r   re   r   r$   r#   )r   r7   r   r   r   r   r<   r=   r>   r&   r)   r   r   r   r   r*   r   r!   r   r   r   r-   s1s2rA   r/   rC  r*  rj   idx1idx2rA  r9  Zpidxr1   r1   r2   test_mixed_freq_regular_first  s&    (z(TestTSPlot.test_mixed_freq_regular_firstc                 C   s   t tjdtjdtdddd}|jg d }tj \}}|j	d|d |j	|d	 t
|d
rdJ | }|d  }t||jtj |d  }t||jtj d S Nr/  rz   r{   r|   r    rY  r\  r~   ra   r   r   r$   )r   r7   r   r   r   r   r<   r=   r>   r&   r   r)   r*   r   assert_numpy_array_equalr!   r   r   rL   r-   r^  r_  rA   r/   r*  x1Zx2r1   r1   r2   test_mixed_freq_irregular_first!  s    z*TestTSPlot.test_mixed_freq_irregular_firstc                 C   s,  t tjdtjdtddddd }|jg dd d f }tj	 \}}|j
|d |j
d	|d
}| }d}tjt|dr t|d  }t|d  }	||jdsJ |	|jdsJ | \}
}|j }W d    n1 s0    Y  |
|d jksJ ||d jks(J d S rX  )r   r7   r   r   r   to_framer   r<   r=   r>   r&   r)   r   r   r   r   r*   equalsr!   r   r   r   r]  r1   r1   r2    test_mixed_freq_regular_first_df0  s&    
(z+TestTSPlot.test_mixed_freq_regular_first_dfc                 C   s   t tjdtjdtdddd }|jg dd d f }tj	 \}}|j
d|d |j
|d	 t|d
rpJ | }|d  }t||jtj |d  }t||jtj d S rc  )r   r7   r   r   r   rh  r   r<   r=   r>   r&   r   r)   r*   r   rd  r!   r   r   rL   re  r1   r1   r2   "test_mixed_freq_irregular_first_dfF  s    
z-TestTSPlot.test_mixed_freq_irregular_first_dfc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
|d | D ]}t| d	jdksJ qd S )
Nr  m  rn   r   r  rx   r   ra   r   r   r   r7   r8   r9   r:   rM   r<   r=   r>   r&   r)   r   r*   r   r-   r6  idxlhighr5  rA   r/   r+  r1   r1   r2   test_mixed_freq_hf_firstV  s    z#TestTSPlot.test_mixed_freq_hf_firstc                 C   s   t dddd}tjdd}t||d}|d }tj	
 \}}|j|d	}|jd
|d |jd  d |jd  d ksJ d S )Nz2012-01-01 13:00
2012-01-02r   rG   r   r  r    rm   ra   rr~   r   r$   )r   r7   r8   r9   r:   r   r   Zinterpolater<   r=   r>   r&   r*  r*   )r-   Zts_indZts_datar.   Zts2rA   r/   r1   r1   r2   test_mixed_freq_alignmenta  s    z$TestTSPlot.test_mixed_freq_alignmentc           	      C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
d|d	 |j
d|d	 | D ]}t| d
jdksJ q| }t|jdksJ tj|  d S )Nr  rl  rn   r   r  rx   r   T)Zlegendr/   r   )r   r   r7   r8   r9   r:   rM   r<   r=   r>   r&   r)   r   r*   r   
get_legendZtextsrb   r   )	r-   r6  ro  rp  r5  rA   r/   r+  legr1   r1   r2   test_mixed_freq_lf_firstn  s    z#TestTSPlot.test_mixed_freq_lf_firstc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
|d | D ]}t| d	jdksJ qd S )
Nr     rm   r   r   r   r   ra   r   rm  rn  r1   r1   r2   test_mixed_freq_lf_first_hourly|  s    z*TestTSPlot.test_mixed_freq_lf_first_hourlyc                 C   s   t tjdtjdtdddd}|jg d }d}tjt|d t	d	dd
d}W d    n1 sd0    Y  t tj
dt||}tj \}}|j|d |j|d d S )Nr   rz   r{   r|   r    )r   r$   r   rH   r   r   r   r      r5   r4   r.              r   re   z1/3/2000r`   r   r   ra   )r   r7   r   r   r   r   r   r   r   r   r8   r9   r:   rM   r<   r=   r>   r&   )r-   r.   r   rj   r   ZpsrA   r/   r1   r1   r2   test_mixed_freq_irreg_period  s    ,z'TestTSPlot.test_mixed_freq_irreg_periodc                 C   s   t dddd}|d d |dd  }ttt||}ttt||}tjjddd\}\}}|j|d	 |j|d	 |j	d
ksJ |j	d
ksJ |j
d  d |j
d  d ksJ d S )N
2015-01-01rH   rx   r   r$   r   T)Znrowssharexra   rp   r   r"   )r   rN   r   r;   rM   r<   r=   r>   r&   r   r*  r   r-   r`  ra  r^  r_  rA   Zax1rC  r1   r1   r2   test_mixed_freq_shared_ax  s    z$TestTSPlot.test_mixed_freq_shared_axc                 C   s   t dddd}|d d |dd  }ttt||}ttt||}tj \}}| }|j	|d |j	|d |j
d  d	 |j
d  d	 ksJ d S )
Nr  rH   rx   r   r$   r   ra   r   r"   r   rN   r   r;   rM   r<   r=   r>   Ztwinxr&   r*  r   r  r1   r1   r2    test_mixed_freq_shared_ax_twin_x  s    z+TestTSPlot.test_mixed_freq_shared_ax_twin_xzTODO (GH14330, GH14322)c                 C   s   t dddd}|d d |dd  }ttt||}ttt||}tj \}}| }|j	|d |j	|d |j
d  d	 |j
d  d	 ksJ d S )
Nr  rH   rp   r   r$   r   ra   r   r"   r  r  r1   r1   r2   0test_mixed_freq_shared_ax_twin_x_irregular_first  s    z;TestTSPlot.test_mixed_freq_shared_ax_twin_x_irregular_firstc                 C   s   t j \}}tdtdg}ttt||}|j|d |	 d 
 }|j t| ksdJ t| |j ks~J d S )Nr  z
2015-01-03ra   r   )r<   r=   r>   r   r   r   r;   rM   r&   r)   r*   r!   rm   max)r-   rA   r/   Zdtirl   r0   r1   r1   r2   test_nat_handling  s    zTestTSPlot.test_nat_handlingc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d d	}tjt|d
 |j
|dd W d    n1 s0    Y  d S )Nr  4   ro   r   r  rx   r   ra   zz'how' is not a valid keyword for plotting functions. If plotting multiple objects on shared axes, resample manually first.re   Zfoo)r/   how)r   r   r7   r8   r9   r:   rM   r<   r=   r>   r&   rg   rh   r   )r-   r6  ro  rp  r5  rA   r/   rj   r1   r1   r2   *test_to_weekly_resampling_disallow_how_kwd  s    z5TestTSPlot.test_to_weekly_resampling_disallow_how_kwdc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
|d | D ]}t| d	j|jksJ qd S )
Nr  r  ro   r   r  rx   r   ra   r   rm  rn  r1   r1   r2   test_to_weekly_resampling  s    z$TestTSPlot.test_to_weekly_resamplingc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
|d | jtj}tjg d	tjd
}| D ]P}	t|	 dj|jksJ |	jdd}
t|
dkrt|
| qt|
| qd S )Nr  r  ro   r   r  rx   r   ra   i  i  i  i  i  i   i  i  i  i  i  i  rz   r   Forig)r   r   r7   r8   r9   r:   rM   r<   r=   r>   r&   r   asi8r   r   rU   r)   r   r*   r   r   rd  )r-   r6  ro  rp  r5  rA   r/   Z
expected_hZ
expected_lr+  r0   r1   r1   r2   test_from_weekly_resampling  s$    z&TestTSPlot.test_from_weekly_resamplingzkind1, kind2)r+  area)r  r+  c                 C   s  t dddd}t dddd}ttjdt|df|g d	d
}ttjdt|df|g d	d
}tj \}}|j	|d|d |j	|d|d tj
g dtjd}	tjt|	tjd}
tdD ]\}|j| }t| j|jksJ t|jdd|	 |
|| j7 }
t|jdd|
 q| jtj}	tjt|	tjd}
tdD ]f}|jd|  }t| dj|jksJ t|jdd|	 |
|| j7 }
t|jdd|
 qVd S )Nr  r  ro   r   r  rx   r   rH   r   r$   r   r   TrJ  Zstackedr/   r  rz   Fr  r   )r   r	   r7   r8   r9   rM   r<   r=   r>   r&   rU   r   zerosr;   r*  r   r*   r   r   rd  rL   r   r   r  r   )r-   kind1kind2r6  ro  rp  r5  rA   r/   
expected_x
expected_yrV   r+  r1   r1   r2   $test_from_resampling_area_line_mixed  sD    
z/TestTSPlot.test_from_resampling_area_line_mixedc                 C   s  t dddd}t dddd}ttjdt|df|g d	d
}ttjdt|df|g d	d
}tj \}}|j	|d|d |j	|d|d |
 jtj}	tjt|	tjd}
tdD ]^}|j| }t| dj|jksJ t|jdd|	 |
|| j7 }
t|jdd|
 qtjg dtjd}	tjt|	tjd}
tdD ]f}|jd|  }t| dj|jksJ t|jdd|	 |
|| j7 }
t|jdd|
 qXd S )Nr  r  ro   r   r  rx   r   rH   r  r   Tr  rz   r   Fr  r  )r   r	   r7   r8   r9   rM   r<   r=   r>   r&   r   r  r   r   r  r;   r*  r   r*   r   r   rd  rL   r   rU   )r-   r  r  r6  ro  rp  r5  rA   r/   r  r  rV   r+  r*  r1   r1   r2   0test_from_resampling_area_line_mixed_high_to_low2  sD    
z;TestTSPlot.test_from_resampling_area_line_mixed_high_to_lowc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
|d t| dksJ | D ]}t| d	jd
ksJ qd S Nz2014-07-01 09:00rl   2   rF   Z100msr   r   ra   r   r   rm  rn  r1   r1   r2   "test_mixed_freq_second_millisecondh  s    z-TestTSPlot.test_mixed_freq_second_millisecondc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
|d t| dksJ | D ]}t| d	jd
ksJ qd S r  rm  rn  r1   r1   r2   .test_mixed_freq_second_millisecond_low_to_highv  s    z9TestTSPlot.test_mixed_freq_second_millisecond_low_to_highc                 C   sX   t dddt dddt dddg}ttjdt|dft|td}t	|j
 d S )Nr   r$   r   r/  r   rH   rz   )r   r	   r7   r8   r9   r:   rM   r
   r   r%   r&   rR   r1   r1   r2   test_irreg_dtypes  s    "
zTestTSPlot.test_irreg_dtypesc                 C   s^   t ddd}|g d t}ttjdt|df|}t	j
 \}}t|j|d d S )Nr   r4   r|   )r   r   r   r5   r   rH   ra   )r   r   r   r	   r7   r8   r9   r:   rM   r<   r=   r>   r%   r&   )r-   rO   r@   rA   r/   r1   r1   r2   test_irreg_dtypes_dt64  s
     z!TestTSPlot.test_irreg_dtypes_dt64c                    s,  t dddddd tjdddd }t fdd|D }ttjdt	|tjdt	|d	|d
}t
j \}}|j|d | }| }t||D ]x\}}	tt|d\}
}t|
d\}}
|	 }t	|dkr|dkrt||
|d}nt||
|d}||ksJ qd S )Nr$   rH   r   r   r   r/  c                    s"   g | ]} t t|d   qS r   r   r   r   r  tr1   r2   r    r  z(TestTSPlot.test_time.<locals>.<listcomp>r   r    ra   <   %H:%M:%S%H:%M)r   r7   r8   r9   integerscumsumrU   r	   r:   rM   r<   r=   r>   r&   
get_xticksr?   r   divmodr   r   r   r   r-   deltasr.   r@   rA   r/   tickslabels_tick_labelmrl   r   r   r   r1   r  r2   	test_time  s,    
zTestTSPlot.test_timec                    s  t dddddd tjdddd }t fdd|D }ttjdt	|tjdt	|d	|d
}t
j \}}|j|d | }| }t||D ]x\}}	tt|d\}
}t|
d\}}
|	 }t	|dkr|dkrt||
|d}nt||
|d}||ksJ q|dd | }| }t||D ]~\}}	tt|d\}
}t|
d\}}
|	 }t	|dkrN|dkrt||
|d}nt||
|d}||ksNJ qNd S )Nr$   rH   r   r   r   r/  c                    s"   g | ]} t t|d   qS r  r  r  r  r1   r2   r    r  z4TestTSPlot.test_time_change_xlim.<locals>.<listcomp>r   r    ra   r  r  r  z1:30z5:00)r   r7   r8   r9   r  r  rU   r	   r:   rM   r<   r=   r>   r&   r  r?   r   r  r   r   r   r   r   r  r1   r  r2   test_time_change_xlim  sD    

z TestTSPlot.test_time_change_xlimc                    s  t dddddd tjdddd }t fdd|D }ttjdt	|tjdt	|d	|d
}t
j \}}|j|d}| }| }t||D ]\}}	tt|d\}
}t|t| d }t|
d\}}
|	 }t	|dkr|d dkr"t||
||d}n`|d dkrNt||
||dd d }n4|dkrnt||
||d}nt||
||d}||ksJ qd S )Nr$   rH   r   r   r   r/  c                    s"   g | ]} t t|d   qS ))microsecondsr  r  r  r1   r2   r    r  z.TestTSPlot.test_time_musec.<locals>.<listcomp>r   r    ra   r  g    .Ai  r   r  r  )r   r7   r8   r9   r  r  rU   r	   r:   rM   r<   r=   r>   r&   r  r?   r   r  r   roundr   r   r   )r-   r  r.   r@   rA   r/   r  r  r  r  r  rl   r   r   r   r   r1   r  r2   test_time_musec  s6    
zTestTSPlot.test_time_musecc                 C   s   t dddd}t dddd}ttjdt||}ttjdt||}tj	 \}}|j
|d |j
d	|d
}| D ]}t| jdksJ qt|dsJ t|drJ |j D ]}t| jdksJ qd S )Nr  rl  rn   r   r  rx   r   ra   Tr3  r/   r8  r4  )r   r   r7   r8   r9   r:   rM   r<   r=   r>   r&   r)   r   r*   r   r   r8  rn  r1   r1   r2   test_secondary_upsample  s    z"TestTSPlot.test_secondary_upsamplec                 C   s*  t j }|d}ttjddt	t
dtdtdddd	d
}|jddg|d | }t| dkstJ | d  dksJ | d  dksJ | d  dksJ | d  dksJ |j d u sJ t }| D ]}||  qt|dksJ t j| d S )N   r   r4   r   ABCDrz   
2000-01-01r4   r`   r   r   r!   r_   r  r   r   	A (right)r$   z	B (right)r   rH   rn   )r<   r=   figureadd_subplotr	   r7   r8   r9   r:   r
   listr   r   r&   ru  rM   r)   	get_textsr   r4  setaddr   rb   )r-   rc   r/   r@   rv  colorsr+  r1   r1   r2   test_secondary_legend  s(    

z TestTSPlot.test_secondary_legendc                 C   s   t tjddttdtdtddddd	}t	j
 }|d
}|jddgd|d | }t| dksvJ | d  dksJ | d  dksJ | d  dksJ | d  dksJ t	j
| d S )Nr   r  r  rz   r  r4   r`   r   r  r  r_   r   F)r3  
mark_rightr/   r   r   r$   rH   rn   )r	   r7   r8   r9   r:   r
   r  r   r   r<   r=   r  r  r&   ru  rM   r)   r  r   rb   r-   r@   rc   r/   rv  r1   r1   r2   test_secondary_legend_right*  s    

z&TestTSPlot.test_secondary_legend_rightc                 C   s   t tjddttdtdtddddd	}t	j
 \}}|jd
dg|d | }| d  dksrJ | d  dksJ t	j
| d S )Nr   r  r  rz   r  r4   r`   r   r  rN  r_   )rJ  r3  r/   r   r  r$   r	   r7   r8   r9   r:   r
   r  r   r   r<   r=   r>   r&   ru  r  r   rb   r  r1   r1   r2   test_secondary_legend_bar;  s    z$TestTSPlot.test_secondary_legend_barc                 C   s   t tjddttdtdtddddd	}t	j
 \}}|jd
dgd|d | }| d  dkstJ | d  dksJ t	j
| d S )Nr   r  r  rz   r  r4   r`   r   r  rN  r_   F)rJ  r3  r  r/   r   r$   r  r  r1   r1   r2   test_secondary_legend_bar_rightH  s    z*TestTSPlot.test_secondary_legend_bar_rightc                 C   s   t tjddttdtdtddddd	}t	j
 }|d
}t tjddttdtdtddddd	}|jddg|d}| }t| dksJ |j d u sJ t }| D ]}||  qt|dksJ t	j
| d S )Nr   r  r  rz   r  r4   r`   r   r  r  r   rn   r  r   )r	   r7   r8   r9   r:   r
   r  r   r   r<   r=   r  r  r&   ru  rM   r)   r4  r  r  r   rb   r-   r@   rc   r/   rv  r  r+  r1   r1   r2   test_secondary_legend_multi_colU  s*    

z*TestTSPlot.test_secondary_legend_multi_colc                 C   s   t dtdd ttdtdtdd tdD tdd	}tj	
 }|d
}|jddg|d}| }t| dksJ |j d u sJ t }| D ]}||  qt|dksJ tj	  d S )N皙?x   r   r   r  rz   c                 S   s   g | ]}d | qS zi-r1   r  rV   r1   r1   r2   r  s  r  z:TestTSPlot.test_secondary_legend_nonts.<locals>.<listcomp>r   r  r  r_   r`   r  r   )r	   r7   r   reshaper
   r  r   r;   r<   r=   r  r  r&   ru  rM   r)   r4  r  r  r   rb   r  r1   r1   r2   test_secondary_legend_nontsn  s     

z&TestTSPlot.test_secondary_legend_nontsc                 C   s   t dtdd ttdtdtdd tdD tdd	}tj	
 }|d
}|jddg|d}| }t| dksJ |j d u sJ t }| D ]}||  qt|dksJ d S )Nr  r  r  r  rz   c                 S   s   g | ]}d | qS r  r1   r  r1   r1   r2   r    r  zDTestTSPlot.test_secondary_legend_nonts_multi_col.<locals>.<listcomp>r   r  r  r   rn   r  r   )r	   r7   r   r  r
   r  r   r;   r<   r=   r  r  r&   ru  rM   r)   r4  r  r  r   r  r1   r1   r2   %test_secondary_legend_nonts_multi_col  s    

z0TestTSPlot.test_secondary_legend_nonts_multi_colc                 C   s   t dddd}ttjdt|df|}tj	 \}}|j
|d}| }| D ]$}t| dkrX| d	ksXJ qXd S )
Nr   r  rx   r   r   rH   ra   r   r   )r   r	   r7   r8   r9   r:   rM   r<   r=   r>   r&   r   r   r   Zget_rotation)r-   r   r@   rA   r/   r  r+  r1   r1   r2   test_format_date_axis  s     z TestTSPlot.test_format_date_axisc                 C   sX   t dddd}ttt|}tj \}}|j||dd}t	t
|d  | d S )Nrr  r4   rn   r   rr   )rB   r   )r   r  r;   rM   r<   r=   r>   r&   r   r   r   r*   )r-   r[   r\   rA   r/   r*  r1   r1   r2   test_ax_plot  s
    zTestTSPlot.test_ax_plotc           
      C   s  t dddt dddg}tddd}tdd	d}d
dd}tj \}}|jdd |D |fi | |jdd |D |fi | | \}}tjdd |D tj	d}	t
| d d df |	 tjdd |D tj	d}	t
| d d df |	 d S )N  r     i  r$   g      $@g      &@g      ?g      (@-r   )fmtZlwc                 S   s   g | ]}|  qS r1   	toordinalr  r1   r1   r2   r    r  z0TestTSPlot.test_mpl_nopandas.<locals>.<listcomp>c                 S   s   g | ]}|  qS r1   r  r  r1   r1   r2   r    r  c                 S   s   g | ]}|  qS r1   r  r  r1   r1   r2   r    r  rz   r   c                 S   s   g | ]}|  qS r1   r  r  r1   r1   r2   r    r  )r   r7   r   r<   r=   r>   Z	plot_dater)   rU   r   r   rd  r   )
r-   datesZvalues1Zvalues2kwrA   r/   line1line2expr1   r1   r2   test_mpl_nopandas  s    
zTestTSPlot.test_mpl_nopandasc                 C   s   ddl m} ttjdtjdtdddd}|jg d }tj	
 \}}|d d	 j|d
 |d	d  j|d
 | \}}|||j d|ksJ |||j d|ksJ d S )Nr   DatetimeConverterr/  rz   r{   r|   r    r$   r   r   r   rz  r5   r4   r  rZ  r[  r.  r|  r}  r   ra    r   r  r   r7   r   r   r   r   r<   r=   r>   r&   r   convertr!   rm   r  r-   r  r.   Zts_irregularrA   r/   rA  r9  r1   r1   r2    test_irregular_ts_shared_ax_xlim  s    z+TestTSPlot.test_irregular_ts_shared_ax_xlimc                 C   s   g d}g d}t d|d}t d|d}tj \}}|j|d | \}}|jd|d | \}	}
||	kstJ ||
k sJ d S )	N)r$   r   rH   r   )r   r   r   rz  r$   r    r   ra   Tr  )r   r<   r=   r>   r&   r   r-   Zindex_1Zindex_2r^  r_  rA   r/   left_beforeright_before
left_afterright_afterr1   r1   r2   test_secondary_y_non_ts_xlim  s    z'TestTSPlot.test_secondary_y_non_ts_xlimc                 C   s   t dddd}t dddd}td|d}td|d}tj \}}|j|d	 | \}}|jd
|d | \}	}
||	ksJ ||
k sJ d S )Nr  r   rn   r   z
2000-01-05r$   r    r   ra   Tr  )r   r   r<   r=   r>   r&   r   r  r1   r1   r2    test_secondary_y_regular_ts_xlim  s    z+TestTSPlot.test_secondary_y_regular_ts_xlimc           	      C   s   t dddd}td|d}tj \}}|j|d | \}}|d jd	|d
 | \}}||kspJ ||ks|J d S )Nr  r   rm   r   r$   r    ra   rn   Tr  )	r   r   r<   r=   r>   r&   r   Zresamplemean)	r-   r   r.   rA   r/   r  r  r  r  r1   r1   r2   #test_secondary_y_mixed_freq_ts_xlim  s    z.TestTSPlot.test_secondary_y_mixed_freq_ts_xlimc                 C   s   ddl m} ttjdtjdtdddd}|jg d }tj	
 \}}|d d	 j|d
 |d	d  jd|d |d d	 j|d
 | \}}|||j d|ksJ |||j d|ksJ d S )Nr   r  r/  rz   r{   r|   r    r  r   ra   Tr  r  r  r  r1   r1   r2   "test_secondary_y_irregular_ts_xlim  s    z-TestTSPlot.test_secondary_y_irregular_ts_xlimc                 C   sZ   t dddt dddg}tj \}}|| tddddtddddg}|| d S )Ni  r$   r   r  )r   r<   r=   r>   r&   r   )r-   rL   rA   r/   r1   r1   r2   test_plot_outofbounds_datetime  s
    
z)TestTSPlot.test_plot_outofbounds_datetimec                 C   s   dd t dD }tdddd}tt jdt|df|}tj	
 \}}|jd|d	 tj	  | }d
d |D }t|t|ksJ ||ksJ d S )Nc                 S   s   g | ]}d |dqS )z00:00:00.0000000z0>2dr1   r  r1   r1   r2   r    r  zATestTSPlot.test_format_timedelta_ticks_narrow.<locals>.<listcomp>r4   0nsr   r   rH   r6   c                 S   s   g | ]}|  qS r1   r   r  r1   r1   r2   r  $  r  )r7   r   r   r	   r8   r9   r:   rM   r<   r=   r>   r&   drawr?   r-   Zexpected_labelsr   r@   rA   r/   r  Zresult_labelsr1   r1   r2   "test_format_timedelta_ticks_narrow  s     
z-TestTSPlot.test_format_timedelta_ticks_narrowc                 C   s   g d}t dddd}ttjdt|df|}tj	 \}}|j
d|d}tj  | }d	d
 |D }t|t|ksJ ||ksJ d S )N)	z00:00:00z1 days 03:46:40z2 days 07:33:20z3 days 11:20:00z4 days 15:06:40z5 days 18:53:20z6 days 22:40:00z8 days 02:26:40z9 days 06:13:20r  r4   1 dr   r   rH   r6   c                 S   s   g | ]}|  qS r1   r  r  r1   r1   r2   r  <  r  z?TestTSPlot.test_format_timedelta_ticks_wide.<locals>.<listcomp>)r   r	   r7   r8   r9   r:   rM   r<   r=   r>   r&   r  r?   r  r1   r1   r2    test_format_timedelta_ticks_wide(  s     
z+TestTSPlot.test_format_timedelta_ticks_widec                 C   s6   t tdtddd}tj \}}t|j|d d S )Nr   Z1dayr|   ra   )r   r;   r   r<   r=   r>   r%   r&   )r-   rl   rA   r/   r1   r1   r2   test_timedelta_plot@  s    zTestTSPlot.test_timedelta_plotc                 C   sJ   t dddd}ttjdt||}tj	 \}}t
|j|d d S )N1 day 2 hr 30 min 10 sr4   r  r   r   ra   r   r   r7   r8   r9   r:   rM   r<   r=   r>   r%   r&   r-   r!   rl   rA   r/   r1   r1   r2   test_timedelta_long_periodF  s    z%TestTSPlot.test_timedelta_long_periodc                 C   sJ   t dddd}ttjdt||}tj	 \}}t
|j|d d S )Nr  r4   z1 nsr   r   ra   r  r  r1   r1   r2   test_timedelta_short_periodM  s    z&TestTSPlot.test_timedelta_short_periodc                 C   s`   t dddd}|}tddd}tdddd d d }tj \}}|j||g||gd	 d S )
Nr   r4   r   r   r   r$   g?r#   )weights)r   r7   r   r<   r=   r>   hist)r-   r   r[   Zw1Zw2rA   r/   r1   r1   r2   	test_histT  s    zTestTSPlot.test_histc                 C   s   t g dtdddtdddtdddgd}t g dtdddtd	ddtd
ddgd}tj \}}|j|d |j|d |j|d d S )NrT   r  r  r  r   i  r    i  i  r  ra   )r   r   r<   r=   r>   r&   )r-   r^  r_  rA   r/   r1   r1   r2   test_overlapping_datetime]  s$    





z$TestTSPlot.test_overlapping_datetimez1GH9053 matplotlib does not use ax.xaxis.converterc                 C   s   t tjddtdddd}| }tt	$ |j|j
|jdd W d    n1 s^0    Y  |j\}}t| |  d S )Nr   r4   z
1970-01-02r|   r    r\  )r   )r   r7   r8   r9   r:   r   r&   r   r   DeprecationWarningr!   rL   r*  rd  r   )r-   rl   r/   l1l2r1   r1   r2   test_add_matplotlib_datetime64w  s    
2
z)TestTSPlot.test_add_matplotlib_datetime64c                 C   s|   t tjddddgd}tdddd	|d
< tj \}}|jd
d|d tj	  |
 d }d}| |ksxJ d S )Nr   )r4   r   r[   r\   rS  z
2018-01-01r4   rn   r   r   )r[   r\   r   r   )r	   r7   r8   r9   r   r<   r=   r>   Zscatterr  r?   r   )r-   r@   rA   r/   rB   r   r1   r1   r2   "test_matplotlib_scatter_datetime64  s    
z-TestTSPlot.test_matplotlib_scatter_datetime64c                 C   s<   t g d}t|g dd}|jddd}t|dd d S )N)
2020-05-01
2020-05-02z
2020-05-03rT   r[   r\   r[   r\   r   Zxrotr   r	   r&   r   r-   r[   r@   r?  r1   r1   r2   test_check_xticks_rot  s    z TestTSPlot.test_check_xticks_rotc                 C   s<   t g d}t|g dd}|jddd}t|dd d S )Nr  r  z
2020-05-04rT   r  r[   r\   r   r  r  r  r1   r1   r2   test_check_xticks_rot_irregular  s    z*TestTSPlot.test_check_xticks_rot_irregularc                 C   sb   t g d}t|g dd}|djddd}t|dd	 |djdd
d}t|dd	 d S )Nr  rT   r  r[   r\   T)r\   Z	use_indexr   r  Fr   )r   r	   Z	set_indexr&   r   r  r1   r1   r2   test_check_xticks_rot_use_idx  s    z(TestTSPlot.test_check_xticks_rot_use_idxc                 C   s^   t g d}t|g dd}|jddddd}t|dd	 |jdddd
d}t|dd	 d S )Nr  rT   r  r[   r\   T)r[   r\   r>   r  r   r  Fr   r  r  r1   r1   r2   test_check_xticks_rot_sharex  s    z'TestTSPlot.test_check_xticks_rot_sharexN)__name__
__module____qualname__rg   markfilterwarningsr3   rC   rQ   rS   rX   rd   rk   Zparametrizerw   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   r7   r   r   r   r	   r   r   r	  r  r  r  r  Zslowr  r   r,  r0  r1  r7  r@  rD  rE  rF  rG  rH  rM  rO  rV  rW  rb  rg  rj  rk  rq  rt  rw  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r1   r1   r1   r2   r   /   sP  


		

	




	


	
	






		



7
5	-#

		

r   c              	   O   s^  dd l m} | }z6|  |d}|d| }t|dd }	| |i |}
|
d us`J |d| }|d ur|jj	}t
|tr|j}|	d u r|j	|ksJ |d urt|j	dd}|d ur|	d u r||ksJ |d}||d< | |i |}
|
d usJ tjdd}t|| W d    n1 s60    Y  W || n|| 0 d S )	Nr   r  r/   r   T)Z	is_period   )Zreturn_filelike)Zmatplotlib.pyplotr=   ZgcfZclfr  popZgcagetattrr!   r   r'  r   r   r   r   Zensure_cleanpickledumprb   )fr   ZseriesargskwargsZpltrc   r/   Zorig_axZorig_axfreqr   ZdfreqZax_freqpathr1   r1   r2   r%     s6    


.r%   )NN)+__doc__r   r   r   r   r%  numpyr7   rg   Zpandas._libs.tslibsr   r   Zpandas._libs.tslibs.dtypesr   Zpandasr	   r
   r   r   r   r   r   Zpandas._testingZ_testingr   Zpandas.core.indexes.datetimesr   r   r   Zpandas.core.indexes.periodr   r   r   Zpandas.core.indexes.timedeltasr   Zpandas.tests.plotting.commonr   Zpandas.tseries.offsetsr   rK  r<   r   r%   r1   r1   r1   r2   <module>   s:   $	
             