o
    ҷh                     @   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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)	DataFrameIndexNaTSeriesconcatisnato_datetime)DatetimeIndexbdate_range
date_range)PeriodPeriodIndexperiod_range)timedelta_range)_check_ticks_props)WeekOfMonth
matplotlibc                	   @   s  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d/ejdg dd0d1 Zejdg dd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zejj d<d=d>d? Z!d@dA Z"dBdC Z#dDdE Z$dFdG Z%dHdI Z&dJdK Z'dLdM Z(dNdO Z)ejdPejdQe*+ e,e*+ e*+ dR dSgdTdU Z-dVdW Z.dXdY Z/dZd[ Z0d\d] Z1d^d_ Z2d`da Z3ejj4dbdc Z5ddde Z6dfdg Z7dhdi 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 ZLejd/dd ZMdd ZNdd ZOejj dd=dd ZPdd ZQdd ZRdd ZSejdddgdd ZTejdddgdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd ZbddÄ Zcddń Zdejj d<d=ddǄ ZeddɄ Zfdd˄ Zgdd̈́ Zhddτ Ziddф Zjddӄ ZkddՄ Zlddׄ Zmddل Znddۄ Zodd݄ Zpdd߄ Zqdd Zrdd Zsdd Ztejj dd=dd Zudd Zvdd Zwdd Zxdd Zydd ZzdS )
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s3J |d
 j|d
 j	fdksAJ 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)selftz_aware_fixturer   r!   tsaxxdata r2   Z/var/www/html/venv/lib/python3.10/site-packages/pandas/tests/plotting/test_datetimelike.pytest_ts_plot_with_tz/   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s/J q%d S )Nr   )
   	   r5   r    fontsizer0   )r   nprandomdefault_rngstandard_normalrangemplpyplotsubplotsr&   get_xticklabelsget_yticklabelsget_fontsize)r-   df_r0   labelr2   r2   r3   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/1987MSd   r   r   r   r      r    r   (   -   c   )r   r   valuesr   r9   r:   r;   r<   lenr%   r&   union)r-   idxrD   df2r2   r2   r3   test_frame_inferredF   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:0015Tr5   rK   rL   r   rM   r    )r   r   rQ   r   r9   r:   r;   r<   rR   r%   r&   r-   rT   rD   r2   r2   r3   test_frame_inferred_n_gt_1W   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   rM   r    )xerr)yerr)r9   arrayr   r%   r&   )r-   iar2   r2   r3   test_is_error_nozeroindex`   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s*J tj| d S )
NrH   ArM   rK   xyzrZ   ra   Br0   r$   )	r   r   r>   r?   r@   r&   rR   r)   close)r-   rT   rD   figr0   r2   r2   r3   test_nonnumeric_excludeg   s   z"TestTSPlot.test_nonnumeric_excludec                 C   sj   t dddd}tg dg dd|}d}tjt|d	 |d   W d    d S 1 s.w   Y  d S )
NrH   ra   rM   rK   rb   rZ   rf   zno numeric data to plotmatch)r   r   pytestraises	TypeErrorr&   )r-   rT   rD   msgr2   r2   r3   test_nonnumeric_exclude_errorp   s   "z(TestTSPlot.test_nonnumeric_exclude_errorr   )STr   DWMQra   c                 C   J   t d|dd}ttjdt||}tj	 \}}t
|j|d d S N
12/31/1999rJ   rK   r   rh   )r   r   r9   r:   r;   r<   rR   r>   r?   r@   r%   r&   r-   r   rT   serrE   r0   r2   r2   r3   test_tsplot_periodw      zTestTSPlot.test_tsplot_period)	rs   rt   r   ru   rv   rw   zQ-DECra   1B30Minc                 C   ry   rz   )r   r   r9   r:   r;   r<   rR   r>   r?   r@   r%   r&   r|   r2   r2   r3   test_tsplot_datetime~   s   zTestTSPlot.test_tsplot_datetimec                 C   sD   t  }tj \}}|jd|d d}|| d  ks J d S )Nkstyler0   )        r   r   r$   r   )tmmakeTimeSeriesr>   r?   r@   r&   r)   	get_color)r-   r/   rE   r0   colorr2   r2   r3   test_tsplot   s
   zTestTSPlot.test_tsplotc                 C   s   t  }d}tjt|d |jddd W d    n1 sw   Y  |jdd}tjt|d |jddd W d    d S 1 sDw   Y  d S )NzCannot pass 'style' string with a color symbol and 'color' keyword argument. Please use one or the other or pass 'style' without a color symbolrl   zb-z#000099)r   r   T)drop)r   r   rn   ro   
ValueErrorr&   reset_index)r-   r/   rq   sr2   r2   r3   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/2012rJ   r   r   r   rh   )r>   r?   r@   r   r   r9   r:   r;   r<   rR   r%   r&   )r-   r   rE   r0   rngr}   r2   r2   r3   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sJ |tdddtddjks(J |ddtd	djks5J d S )
Nr   )get_datevalueru     ra   rw   z1987-12rH   z1987-1-1)%pandas.plotting._matplotlib.converterr   r   ordinal)r-   r   r2   r2   r3   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_ydataformat_coord)r0   expected_string
first_linefirst_xfirst_yr2   r2   r3   check_format_of_first_point   s   zITestTSPlot.test_ts_plot_format_coord.<locals>.check_format_of_first_pointr$   z
2014-01-01rM   zA-DECr   r    rh   zt = 2014  y = 1.000000ru   zt = 2014-01-01  y = 1.000000)r   r   r>   r?   r@   r&   )r-   r   annualrE   r0   dailyr2   r2   r3   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 Nr{   rJ   rK   r   )r   r   r9   r:   r;   r<   rR   r%   r&   r!   r   r-   r   rT   r}   r2   r2   r3   test_line_plot_period_series   s   z'TestTSPlot.test_line_plot_period_seriesfrqncy)1S3S5T7H4D8W11M3Ac                 C   @   t d|dd}ttjdt||}t|j|j	j
j d S r   )r   r   r9   r:   r;   r<   rR   r%   r&   r!   r   	rule_code)r-   r   rT   r   r2   r2   r3    test_line_plot_period_mlt_series   s   z+TestTSPlot.test_line_plot_period_mlt_seriesc                 C   r   r   )r   r   r9   r:   r;   r<   rR   r%   r&   r!   r   r   r   r2   r2   r3   test_line_plot_datetime_series   s   z)TestTSPlot.test_line_plot_datetime_seriesc                 C   sJ   t d|dd}ttjdt|df|g dd}t|j|j	j
 d S Nr{   rJ   rK   r   rM   )ra   rg   Cr!   columns)r   r   r9   r:   r;   r<   rR   r%   r&   r!   r   r-   r   rT   rD   r2   r2   r3   test_line_plot_period_frame   s   z&TestTSPlot.test_line_plot_period_framec                 C   sZ   t d|dd}ttjdt|df|g dd}|j|jj	j
j	}t|j| d S r   )r   r   r9   r:   r;   r<   rR   r!   asfreqr   r   r%   r&   )r-   r   rT   rD   r   r2   r2   r3   test_line_plot_period_mlt_frame   s   z*TestTSPlot.test_line_plot_period_mlt_framez3ignore:PeriodDtype\[B\] is deprecated:FutureWarningc                 C   sZ   t d|dd}ttjdt|df|g dd}|j|jj	j
j	}t|j| d S r   )r   r   r9   r:   r;   r<   rR   r!   	to_periodr   r   r%   r&   r   r2   r2   r3   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 )Nr{   rJ   rK   r   )r   rM         )r   r   r9   r:   r;   r<   rR   rQ   r	   asarrayr!   r%   r&   inferred_freqilocr   r2   r2   r3   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r1J d S )Nz2001-1-1z	2001-1-10r    rM   r   rh   r   )
r>   r?   r@   r   r   r=   rR   r   r&   hasattr)r-   rE   r0   r   r/   r2   r2   r3   test_fake_inferred_business	  s   
z&TestTSPlot.test_fake_inferred_businessc                 C   s   t  }t|j d S )N)r   r   r%   r&   )r-   r}   r2   r2   r3   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-01BQSr5   rK   r   r    )	r   r   r9   r:   r;   r<   rR   r%   r&   r-   drr}   r2   r2   r3   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   r9   r:   r;   r<   rR   r%   r&   r   r2   r2   r3    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 ]\}	}
||	d	}t|
 }t
|r^||ks^J qBd S )
Nr   z2012-6-22 21:59:51.960928L  rK   r   r    rh   %H:%M:%S.%f)r   plotting_matplotlib	converterr   r   r9   r:   r;   r<   rR   r>   r?   r@   r&   	get_xaxisget_ticklocsget_ticklabelszip_from_ordinalstrftimestrget_text)r-   convrT   rD   rE   r0   axistlocstlabelslocrF   xprsr2   r2   r3   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  sVJ d S )N2012-6-22 21:59:51rs   r5   rK   r   r    )r   r$   rM      rh   r   )QΠE>r$   :0yE>)r   r   r9   r:   r;   r<   rR   r   r>   r?   r@   r&   r   r)   
get_xydatadifffabsall)r-   rT   rD   irregrE   r0   diffssecr2   r2   r3   test_irreg_hf4  s   $0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  sQJ d S )Nr   rs   r5   rK   r   r    rh   r   r   r$   r   )r   r   r9   r:   r;   r<   rR   r>   r?   r@   r!   astypeobjectr&   r   r)   r   r   r   r   )r-   rT   rU   rE   r0   r   r   r2   r2   r3   test_irreg_hf_objectB  s   $&zTestTSPlot.test_irreg_hf_objectc                 C   sn   t  }|jg d }tj \}}|j|d}|d usJ t| d 	 |j
D ]
\}}||ks4J q*d S )N)r   r$   r      rh   r   )r   r   r   r>   r?   r@   r&   r   r)   r*   r!   )r-   r}   rE   r0   retr   r   r2   r2   r3   "test_irregular_datetime64_repr_bugN  s    z-TestTSPlot.test_irregular_datetime64_repr_bugc                 C   s   t  }d}|jd  }t jt|d t|t|dd|_W d    n1 s)w   Y  tj	
 \}}|j|d | d  d |jd jksMJ | d  }t jt|d t|djdksgJ W d    d S 1 srw   Y  d S )	NPeriodDtype\[B\] is deprecatedr   rl   rg   startr   r   rh   r"   data)r   makePeriodSeriesr!   to_timestampassert_produces_warningFutureWarningr   rR   r>   r?   r@   r&   r)   r   r   r*   r   freqstr)r-   btsrq   dtrE   r0   rT   r2   r2   r3   test_business_freqZ  s   $"zTestTSPlot.test_business_freqc                 C   s   t dd}|d}tj \}}|j|d | d 	 d |j
d jks,J | d  }t|djdks>J d S )Ni,  BMrw   rh   r   r"   r   )r   r   r   r   r>   r?   r@   r&   r)   r   r!   r   r*   r   r  )r-   r  r/   rE   r0   rT   r2   r2   r3   test_business_freq_convertg  s   
$z%TestTSPlot.test_business_freq_convertc                 C   s   t  }td|}tj \}}|j|d | d 	 }d}t
jt|d t|d W d    d S 1 s:w   Y  d S )Nr   rh   r   z)freq not specified and cannot be inferredrl   r   )r   r   r   r   r>   r?   r@   r&   r)   r*   rn   ro   r   r   )r-   r   r  rE   r0   rT   rq   r2   r2   r3   test_freq_with_no_period_aliasp  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r1J d S )
Nz
2012-12-20   r   r      minutesr    rh   r   )r   r   r   r9   aranger>   r?   r@   r&   r)   r*   r	   is_normalized)r-   rT   rD   rE   r0   r   r2   r2   r3   test_nonzero_base|  s   zTestTSPlot.test_nonzero_basec                 C   s   t dt i}tj \}}|j|d | d  }d}tj	t
|d t|j t| W d    d S 1 s=w   Y  d S )Nr_   rh   r   r   rl   )r   r   r   r>   r?   r@   r&   r)   r*   r   r   assert_index_equalr!   r   r   )r-   r  rE   r0   rT   rq   r2   r2   r3   test_dataframe  s   "zTestTSPlot.test_dataframez8ignore:Period with BDay freq is deprecated:FutureWarningobjr$   r_   bc                 C   s^  t j \}}|j|d | }||d d |d d  | }|d |d d ks/J |d |d d ks;J td|jtd|jf}|dd | }t|d |d j	ks^J t|d |d j	kskJ td|jtd|jf}|t
dddt
dd	d | }t|d |d j	ksJ t|d |d j	ksJ | }t j| d S )
Nrh   r   r   r$   r5   1/1/2000z4/1/2000r   r   )r>   r?   r@   r&   get_xlimset_xlimr   r   intr   r   
get_figureri   )r-   r  rE   r0   xlimresultexpectedrj   r2   r2   r3   test_axis_limits  s&   zTestTSPlot.test_axis_limitsc                 C   s   dd l m  m  m} |td|jksJ |td|jks$J |td|jks0J |td|jks<J |td|j	ksHJ |td|jksTJ d S )Nr   rg   ru   rw   rx   ra   rv   )
r   r   r   r   
get_finderr   _daily_finder_monthly_finder_quarterly_finder_annual_finder)r-   r   r2   r2   r3   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 s&w   Y  g }g }|D ]O}td|d}ttj	
dt||}	tj \}
}|	j|d	 | }|| d
  | \}}||d | || d
  tj|  q1||ksJ ||ksJ d S )N)r5   rN      i  i  i
  '  z#Period with BDay freq is deprecatedrl   z1999-1-1rg   rL   r   r   rh   r   ?)r   r   r   r   r   rR   r   r   r9   r:   r;   r<   r>   r?   r@   r&   r   appendget_majorticklocsr  r  ri   r  )r-   day_lstrq   xpl1xpl2rs1rs2nr   r}   rE   r0   xaxisvminvmaxr2   r2   r3   test_finder_daily  s(   zTestTSPlot.test_finder_dailyc                 C   s   ddg}t djgt|  }}g }g }|D ]T}tdt|d dd}ttjd	t||}t
j \}	}
|j|
d	 |
 }|| d
  |
 \}}|
|d | || d
  t
j|
  q||ksqJ ||kswJ d S )Ng      @r   1988Q11987Q2r   rx   r   r   rh   r   r&  r   r   rR   r   r  r   r9   r:   r;   r<   r>   r?   r@   r&   r   r'  r(  r  r  ri   r  r-   yrsr*  r+  r,  r-  r.  r   r}   rE   r0   r/  r0  r1  r2   r2   r3   test_finder_quarterly  "   z TestTSPlot.test_finder_quarterlyc                 C   s   g d}t djgt|  }}g }g }|D ]T}tdt|d dd}ttjd	t||}t
j \}	}
|j|
d |
 }|| d	  |
 \}}|
|d
 | || d	  t
j|
  q||ksqJ ||kswJ d S )N)gffffff?g      @r   r   zJan 1988r4     rw   r   r   rh   r   r&  r5  r6  r2   r2   r3   test_finder_monthly  r9  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s8J d S )	Nr3  i   rw   r   r   rh   r   1989Q1)r   r   r9   r:   r;   r<   rR   r>   r?   r@   r&   r   r(  r   r   )r-   r   r}   rE   r0   r/  r   r   r2   r2   r3   test_finder_monthly_long  s   z#TestTSPlot.test_finder_monthly_longc           	      C   s   g d}dd |D }g }dD ]9}t d|dd}ttjdt||}tj	 \}}|j
|d	 | }|| d
  tj|  q||ksOJ d S )N)r   i    r>    i  i  iz  c                 S   s   g | ]	}t |d djqS )ra   rL   )r   r   .0rc   r2   r2   r3   
<listcomp>  s    z1TestTSPlot.test_finder_annual.<locals>.<listcomp>)r   r5      1   rP      iW  i  1987ra   r   r   rh   r   )r   r   r9   r:   r;   r<   rR   r>   r?   r@   r&   r   r'  r(  ri   r  )	r-   r   r   nyearsr   r}   rE   r0   r/  r2   r2   r3   test_finder_annual	  s   zTestTSPlot.test_finder_annualc           	      C   z   d}t dd|d}ttjdt||}tj	 \}}|j
|d | }| d }tdddj}||ks;J d S )	Ni@ 1/1/1999MinrK   r   rh   r   rL   r   r   r9   r:   r;   r<   rR   r>   r?   r@   r&   r   r(  r   r   )	r-   nminutesr   r}   rE   r0   r/  r   r   r2   r2   r3   test_finder_minutely  s   zTestTSPlot.test_finder_minutelyc           	      C   rI  )	N   rJ  r   rK   r   rh   r   rL   rL  )	r-   nhoursr   r}   rE   r0   r/  r   r   r2   r2   r3   test_finder_hourly%  s   zTestTSPlot.test_finder_hourlyc                 C   s   t  }tj|jdd< tj \}}|j|d |	 }t
|dks%J |d }| }tjj|t|tjd}t|tjjjsCJ |j}|dddf  sRJ tj|  d S )Nr      rh   r$   r   mask
fill_value)r   r   r9   nanr   r>   r?   r@   r&   r)   rR   r   maMaskedArrayr   
isinstancecorerT  r   ri   r  r-   r/   rE   r0   linesliner   rT  r2   r2   r3   	test_gaps1  s   zTestTSPlot.test_gapsc                 C   s   t  }|jg d }tj|jdd< tj \}}|j|d}|	 }t
|dks,J |d }| }tjj|t|tjd}t|tjjjsJJ |j}|dddf  sYJ tj|  d S N)	r   r$   r   r   r   r6   r:        r   r   rh   r$   r   rS  )r   r   r   r9   rV  r>   r?   r@   r&   r)   rR   r   rW  rX  r   rY  rZ  rT  r   ri   r  r[  r2   r2   r3   test_gaps_irregularB  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s3J |d }| }tjj|t|tjd}t|tjjjsQJ |j}|dddf  s`J d S r_  )r   r9   r:   r;   r<   rR   rV  r   r>   r?   r@   r&   r)   r   rW  rX  r   rY  rZ  rT  r   )	r-   rT   r}   rE   r0   r\  r]  r   rT  r2   r2   r3   test_gaps_non_tsU  s   zTestTSPlot.test_gaps_non_tsc           
      C   s   t  }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sFJ t|j dksQJ |d }| }tjj|t|tjd}t|tjjjsoJ |j}	|	dddf  s~J d S )Nr   rR  rh   r   r#   12hrL   r   Tsecondary_yr$   rS  )r   r   r9   rV  r   r>   r?   r@   r&   r   r!   r   r:   r;   r<   rR   r)   right_axr   rW  rX  r   rY  rZ  rT  r   )
r-   lowrE   r0   idxhr   r\  r]  r   rT  r2   r2   r3   test_gap_upsamplef  s    zTestTSPlot.test_gap_upsamplec                 C   s   t tjdd}tj \}}|jdd}t	|dsJ t	|dr&J |
 }| d }t | | }t|| |  dksIJ |d   rSJ tj| d S )	Nr   r5   Tre  left_axrg  r   right)r   r9   r:   r;   r<   r>   r?   r@   r&   r   get_axesr)   r   r*   r   assert_series_equal	get_yaxisget_ticks_positionget_visibleri   )r-   r}   rj   rE   r0   axesr]  r   r2   r2   r3   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s-J tj|  d S )Nr   r5   rh   left)r   r9   r:   r;   r<   r>   r?   r@   r&   ro  rp  ri   r  )r-   ser2rE   ax2r2   r2   r3   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}|  s(J t|dr/J t|ds6J t|ds=J t|drDJ d S )Nr   r5   Tre  rk  rg  )	r   r9   r:   r;   r<   r&   ro  rq  r   )r-   r}   ru  r0   rv  r2   r2   r3   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s&J t
|dr-J | }| d	 }t| |  }t|| |  d
ksRJ |d	   r\J tj| d S )Nr  r5   r%  r   Tre  rk  rg  r   rl  )r   r   r9   r:   r;   r<   r>   r?   r@   r&   r   rm  r)   r   r*   r   r   rn  ro  rp  rq  ri   )	r-   rT   r}   rj   rE   r0   rr  r]  r   r2   r2   r3   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s)J tj|  d S )Nr  r5   r%  r   rh   rt  )r   r   r9   r:   r;   r<   r>   r?   r@   r&   ro  rp  ri   r  )r-   rT   ru  rE   rv  r2   r2   r3   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  r5   r%  r   )	r   r   r9   r:   r;   r<   r&   ro  rq  )r-   rT   ru  r0   r2   r2   r3   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s&J t|dr-J | }|d	   d
ks=J d S )Nscipyr   r5   Tdensityrf  kindr0   rk  rg  r$   rl  )rn   importorskipr   r9   r:   r;   r<   r>   r?   r@   r&   r   rm  ro  rp  r-   r}   rj   r0   rr  r2   r2   r3   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s*J d S )Nr   r5   Tbarr~  r$   rl  )r   r9   r:   r;   r<   r>   r?   r@   r&   rm  ro  rp  r  r2   r2   r3   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s$J |d   dks0J |d   d
ks<J d S )Nr   r   rM   r_   r  cr   r_   r  T)rf  r@   r   rl  r$   rt  r   r9   r:   r;   r<   r&   ro  rp  r-   rD   rr  r2   r2   r3   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s%J |d   dks1J |d   dks=J d S )Nr   r  r  r  r  r_   r  T)r  rf  r@   r   rl  r$   rt  r  r  r2   r2   r3   test_secondary_bar_frame  s   z#TestTSPlot.test_secondary_bar_framec                 C   s   t  }|jg d }tj \}}|j|d |jd|d}| }d}t jt	|d7 t
|d  }t
|d  }	t ||jd	 t |	|jd	 | \}
}|j }W d    n1 sfw   Y  |
|d jkstJ ||d
 jks}J d S Nr   r   r5   r   r:        r`  rh   gr   r   rl   r   r$   rg   r#   )r   r   r   r>   r?   r@   r&   r)   r   r   r   r*   r  r!   r   r  r   r-   s1s2rE   r0   rv  r\  rq   idx1idx2rt  rl  pidxr2   r2   r3   test_mixed_freq_regular_first  s"   	z(TestTSPlot.test_mixed_freq_regular_firstc                 C   s   t  }|jg d }tj \}}|jd|d |j|d t|dr&J | }|d 	 }t 
||jtj |d 	 }t 
||jtj d S Nr  r  r   rh   r   r   r$   )r   r   r   r>   r?   r@   r&   r   r)   r*   assert_numpy_array_equalr!   r   r   rQ   r-   r  r  rE   r0   r\  x1x2r2   r2   r3   test_mixed_freq_irregular_first  s   z*TestTSPlot.test_mixed_freq_irregular_firstc                 C   s  t   }|jg dd d f }tj \}}|j|d |jd|d}| }d}t j	t
|d9 t|d  }t|d  }	||jd	sNJ |	|jd	sYJ | \}
}|j }W d    n1 snw   Y  |
|d jks|J ||d
 jksJ d S r  )r   r   to_framer   r>   r?   r@   r&   r)   r   r   r   r*   equalsr!   r   r  r   r  r2   r2   r3    test_mixed_freq_regular_first_df  s"   z+TestTSPlot.test_mixed_freq_regular_first_dfc                 C   s   t   }|jg dd d f }tj \}}|jd|d |j|d t|dr,J |	 }|d 
 }t ||jtj |d 
 }t ||jtj d S r  )r   r   r  r   r>   r?   r@   r&   r   r)   r*   r  r!   r   r   rQ   r  r2   r2   r3   "test_mixed_freq_irregular_first_df  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sOJ qAd S )
NrJ  m  ru   r   r:  rw   r   rh   r   r   r   r9   r:   r;   r<   rR   r>   r?   r@   r&   r)   r   r*   r   r-   ri  idxlhighrh  rE   r0   r]  r2   r2   r3   test_mixed_freq_hf_first"     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sEJ d S )Nz2012-01-01 13:00
2012-01-02r   rL   r   r:  r    rt   rh   rr   r   r$   )r   r9   r:   r;   r<   r   r   interpolater>   r?   r@   r&   r\  r*   )r-   ts_indts_datar/   ts2rE   r0   r2   r2   r3   test_mixed_freq_alignment-  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sQJ qC| }t|jdks_J tj|  d S )NrJ  r  ru   r   r:  rw   r   T)legendr0   r   )r   r   r9   r:   r;   r<   rR   r>   r?   r@   r&   r)   r   r*   r   
get_legendtextsri   r  )	r-   ri  r  r  rh  rE   r0   r]  legr2   r2   r3   test_mixed_freq_lf_first:  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sOJ qAd S )
NrJ     rt   r   r   r   r   rh   r   r  r  r2   r2   r3   test_mixed_freq_lf_first_hourlyH  r  z*TestTSPlot.test_mixed_freq_lf_first_hourlyc                 C   s   t  }|jg d }d}t jt|d tdddd}W d    n1 s&w   Y  ttj	d
t||}tj \}}|j|d	 |j|d	 d S )
N)r   r$   r   rM   r   r   r   r      r6   r5   r`              r   rl   z1/3/2000r	  rg   r   r   rh   )r   r   r   r   r   r   r   r9   r:   r;   r<   rR   r>   r?   r@   r&   )r-   r/   r   rq   r   psrE   r0   r2   r2   r3   test_mixed_freq_irreg_periodS  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sEJ |j	dksLJ |j
d
  d |j
d
  d ks`J d S )N
2015-01-01rM   rw   r   r$   r   T)nrowssharexrh   r   r"   )r   rS   r   r=   rR   r>   r?   r@   r&   r   r\  r   r-   r  r  r  r  rE   ax1rv  r2   r2   r3   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sQJ d S 
Nr  rM   rw   r   r$   r   rh   r   r"   r   rS   r   r=   rR   r>   r?   r@   twinxr&   r\  r   r  r2   r2   r3    test_mixed_freq_shared_ax_twin_xn  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sQJ d S r  r  r  r2   r2   r3   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s2J t| |j ks?J d S )Nr  z
2015-01-03rh   r   )r>   r?   r@   r   r
   r   r=   rR   r&   r)   r*   r!   minmax)r-   rE   r0   dtir   r1   r2   r2   r3   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 |j
|d | D ]}t| d	j|jksPJ qAd S )
NrJ  4   rv   r   r:  rw   r   rh   r   r  r  r2   r2   r3   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 ](}	t|	 dj|jkscJ |	jdd}
t|
dkrvt|
| qTt|
| qTd S )NrJ  r  rv   r   r:  rw   r   rh   i  i  i  i  i  i   i  i  i  i  i  i  dtyper   Forig)r   r   r9   r:   r;   r<   rR   r>   r?   r@   r&   r   asi8r   float64r]   r)   r   r*   r   r   r  )r-   ri  r  r  rh  rE   r0   
expected_h
expected_lr]  r1   r2   r2   r3   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sxJ t|jdd|	 |
|| j7 }
t|jdd|
 qe| jtj}	tjt|	tjd}
tdD ]1}|jd|  }t| dj|jksJ t|jdd|	 |
|| j7 }
t|jdd|
 qd S )NrJ  r  rv   r   r:  rw   r   rM   r   r$   r   r   Tr  stackedr0   r  r  Fr  r   )r   r   r9   r:   r;   rR   r>   r?   r@   r&   r]   r  zerosr=   r\  r   r*   r   r   r  rQ   r   r   r  r   )r-   kind1kind2ri  r  r  rh  rE   r0   
expected_x
expected_yr^   r]  r2   r2   r3   $test_from_resampling_area_line_mixed  sF   
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sxJ t|jdd|	 |
|| j7 }
t|jdd|
 qdtjg dtjd}	tjt|	tjd}
tdD ]1}|jd|  }t| dj|jksJ t|jdd|	 |
|| j7 }
t|jdd|
 qd S )NrJ  r  rv   r   r:  rw   r   rM   r  r   Tr  r  r   Fr  r  )r   r   r9   r:   r;   rR   r>   r?   r@   r&   r   r  r   r  r  r=   r\  r   r*   r   r   r  rQ   r   r]   )r-   r  r  ri  r  r  rh  rE   r0   r  r  r^   r]  r\  r2   r2   r3   0test_from_resampling_area_line_mixed_high_to_low  sF   
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sGJ | D ]}t| d	jd
ksYJ qKd S Nz2014-07-01 09:00rs   2   rK   100Lr   r   rh   r   r   r  r  r2   r2   r3   "test_mixed_freq_second_millisecond#     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sGJ | D ]}t| d	jd
ksYJ qKd S r  r  r  r2   r2   r3   .test_mixed_freq_second_millisecond_low_to_high1  r  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   ra  r   rM   r  )r   r   r9   r:   r;   r<   rR   r	   r   r%   r&   rX   r2   r2   r3   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  r5   r%  )r   r   r   r6   r   rM   rh   )r   r   r   r   r9   r:   r;   r<   rR   r>   r?   r@   r%   r&   )r-   rT   rD   rE   r0   r2   r2   r3   test_irreg_dtypes_dt64H  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 ];\}}	tt|d\}
}t|
d\}}
|	 }t	|dkr|dkrt||
|d}n	t||
|d}||ksJ qWd S )Nr$   rM   r	  r   r   ra  c                    "   g | ]} t t|d   qS r
  r   r  r   r@  tr2   r3   rB  S     " z(TestTSPlot.test_time.<locals>.<listcomp>r  r    rh   <   %H:%M:%S%H:%M)r   r9   r:   r;   integerscumsumr]   r   r<   rR   r>   r?   r@   r&   
get_xticksrA   r   divmodr  r   r   r   r-   deltasr/   rD   rE   r0   tickslabels_tick_labelmr   hr   r   r2   r  r3   	test_timeP  s0   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 ];\}}	tt|d\}
}t|
d\}}
|	 }t	|dkr|dkrt||
|d}n	t||
|d}||ksJ qW|dd | }| }t||D ];\}}	tt|d\}
}t|
d\}}
|	 }t	|dkr|dkrt||
|d}n	t||
|d}||ksJ qd S )Nr$   rM   r	  r   r   ra  c                    r  r  r  r@  r  r2   r3   rB  o  r  z4TestTSPlot.test_time_change_xlim.<locals>.<listcomp>r  r    rh   r  r  r  z1:30z5:00)r   r9   r:   r;   r  r  r]   r   r<   rR   r>   r?   r@   r&   r  rA   r   r  r  r   r   r   r  r  r2   r  r3   test_time_change_xliml  sJ   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 ]m\}}	tt|d\}
}t|t| d }t|
d\}}
|	 }t	|dkr|d dkrt||
||d}n.|d dkrt||
||dd d }n|dkrt||
||d}n
t||
||d}||ksJ qWd S )Nr$   rM   r	  r   r   ra  c                    r  ))microsecondsr  r@  r  r2   r3   rB    r  z.TestTSPlot.test_time_musec.<locals>.<listcomp>r  r    rh   r  g    .Ai  r   r  r  )r   r9   r:   r;   r  r  r]   r   r<   rR   r>   r?   r@   r&   r  rA   r   r  r  roundr   r   r   )r-   r  r/   rD   rE   r0   r  r  r  r  r   r   r   r  r   r   r2   r  r3   test_time_musec  s:   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sOJ qBt|dsWJ t|dr^J |j D ]}t| jdkspJ qcd S )NrJ  r  ru   r   r:  rw   r   rh   Trf  r0   rk  rg  )r   r   r9   r:   r;   r<   rR   r>   r?   r@   r&   r)   r   r*   r   r   rk  r  r2   r2   r3   test_secondary_upsample  s   z"TestTSPlot.test_secondary_upsamplec                 C   s   t j }|d}t }|jddg|d | }t|	 dks%J |
 d  dks1J |
 d  d	ks=J |
 d
  dksIJ |
 d  dksUJ |j d u s^J t }|	 D ]	}||  qet|dkswJ t j| d S )N   ra   rg   r  r   r   	A (right)r$   z	B (right)r   r   rM   ru   )r>   r?   figureadd_subplotr   makeTimeDataFramer&   r  rR   r)   	get_textsr   rg  setaddr   ri   )r-   rj   r0   rD   r  colorsr]  r2   r2   r3   test_secondary_legend  s    

z TestTSPlot.test_secondary_legendc                 C   s   t  }tj }|d}|jddgd|d | }t|	 dks&J |
 d  dks2J |
 d  d	ks>J |
 d
  dksJJ |
 d  dksVJ tj| d S )Nr
  ra   r   F)rf  
mark_rightr0   r   r   r$   rg   r   rM   ru   )r   r  r>   r?   r  r  r&   r  rR   r)   r  r   ri   r-   rD   rj   r0   r  r2   r2   r3   test_secondary_legend_right  s   

z&TestTSPlot.test_secondary_legend_rightc                 C   sp   t  }tj \}}|jddg|d | }| d  dks$J | d  dks0J tj	| d S )Nr  ra   )r  rf  r0   r   r  r$   rg   
r   r  r>   r?   r@   r&   r  r  r   ri   r  r2   r2   r3   test_secondary_legend_bar  s   z$TestTSPlot.test_secondary_legend_barc                 C   sr   t  }tj \}}|jddgd|d | }| d  dks%J | d  dks1J tj	| d S )Nr  ra   F)r  rf  r  r0   r   r$   rg   r  r  r2   r2   r3   test_secondary_legend_bar_right  s   z*TestTSPlot.test_secondary_legend_bar_rightc                 C   s   t  }tj }|d}t  }|jddg|d}| }t|	 dks)J |j
 d u s2J t }|	 D ]	}||  q9t|dksKJ tj| d S Nr
  r   ru   r  r   )r   r  r>   r?   r  r  r&   r  rR   r)   rg  r  r  r   ri   r-   rD   rj   r0   r  r  r]  r2   r2   r3   test_secondary_legend_multi_col   s   

z*TestTSPlot.test_secondary_legend_multi_colc                 C   s   t  }tj }|d}|jddg|d}| }t|	 dks%J |j
 d u s.J t }|	 D ]	}||  q5t|dksGJ tj  d S )Nr
  ra   rg   r  r   )r   makeDataFramer>   r?   r  r  r&   r  rR   r)   rg  r  r  r   ri   r  r2   r2   r3   test_secondary_legend_nonts  s   

z&TestTSPlot.test_secondary_legend_nontsc                 C   s   t  }tj }|d}|jddg|d}| }t|	 dks%J |j
 d u s.J t }|	 D ]	}||  q5t|dksGJ d S r  )r   r  r>   r?   r  r  r&   r  rR   r)   rg  r  r  r   r  r2   r2   r3   %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r>| d	ks>J q,d S )
Nr   r:  rw   r   r   rM   rh   r   r	  )r   r   r9   r:   r;   r<   rR   r>   r?   r@   r&   r   r   r   get_rotation)r-   r   rD   rE   r0   r/  r]  r2   r2   r3   test_format_date_axis2  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 )Nr  r5   ru   r   Y)rF   r   )r   listr=   rR   r>   r?   r@   r&   r   r  r   r*   )r-   rc   rd   rE   r0   r\  r2   r2   r3   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   )fmtlwc                 S      g | ]}|  qS r2   	toordinalr@  r2   r2   r3   rB  L      z0TestTSPlot.test_mpl_nopandas.<locals>.<listcomp>c                 S   r*  r2   r+  r@  r2   r2   r3   rB  M  r-  c                 S   r*  r2   r+  r@  r2   r2   r3   rB  Q  r-  r  r   c                 S   r*  r2   r+  r@  r2   r2   r3   rB  S  r-  )r   r9   r  r>   r?   r@   	plot_dater)   r]   r  r   r  r   )
r-   datesvalues1values2kwrE   r0   line1line2expr2   r2   r3   test_mpl_nopandasD  s   
 zTestTSPlot.test_mpl_nopandasc                 C   s   ddl m} t d d }|jg d }tj \}}|d d j|d |dd  j|d |	 \}}||
|j d|ksDJ ||
|j d|ksRJ d S )Nr   DatetimeConverterra  r$   r   r   r   r  r6   r5   r:  r  r  r`  r  r  r   rh    r   r8  r   r   r   r>   r?   r@   r&   r  convertr!   r  r  r-   r8  r/   ts_irregularrE   r0   rt  rl  r2   r2   r3    test_irregular_ts_shared_ax_xlimV  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s:J ||
k s@J d S )	N)r$   r   rM   r   )r   r   r   r  r$   r    r   rh   Tr  )r   r>   r?   r@   r&   r  r-   index_1index_2r  r  rE   r0   left_beforeright_before
left_afterright_afterr2   r2   r3   test_secondary_y_non_ts_xlimg  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s@J ||
k sFJ d S )N
2000-01-01r   ru   r   z
2000-01-05r$   r    r   rh   Tr  )r   r   r>   r?   r@   r&   r  r@  r2   r2   r3    test_secondary_y_regular_ts_xlimw  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s8J ||ks>J d S )NrH  r$  r  r   r$   r    rh   ru   Tr  )	r   r   r>   r?   r@   r&   r  resamplemean)	r-   r   r/   rE   r0   rC  rD  rE  rF  r2   r2   r3   #test_secondary_y_mixed_freq_ts_xlim  s   z.TestTSPlot.test_secondary_y_mixed_freq_ts_xlimc                 C   s   ddl m} t d d }|jg d }tj \}}|d d j|d |dd  jd|d |d d j|d |	 \}}||
|j d	|ksOJ ||
|j d	|ks]J d S )
Nr   r7  ra  r9  r   rh   Tr  r:  r;  r=  r2   r2   r3   "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-   rQ   rE   r0   r2   r2   r3   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sIJ ||ksOJ d S )Nc                 S   s   g | ]}d |dqS )z00:00:00.0000000z0>2dr2   )rA  r^   r2   r2   r3   rB    s    zATestTSPlot.test_format_timedelta_ticks_narrow.<locals>.<listcomp>r5   0nsr   r   rM   r7   c                 S   r*  r2   r   r@  r2   r2   r3   rB    r-  )r9   r  r   r   r:   r;   r<   rR   r>   r?   r@   r&   drawrA   r-   expected_labelsr   rD   rE   r0   r  result_labelsr2   r2   r3   "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sCJ ||ksIJ 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:20rO  r5   1 dr   r   rM   r7   c                 S   r*  r2   rQ  r@  r2   r2   r3   rB    r-  z?TestTSPlot.test_format_timedelta_ticks_wide.<locals>.<listcomp>)r   r   r9   r:   r;   r<   rR   r>   r?   r@   r&   rR  rA   rS  r2   r2   r3    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   1dayr%  rh   )r   r=   r   r>   r?   r@   r%   r&   )r-   r   rE   r0   r2   r2   r3   test_timedelta_plot  s   zTestTSPlot.test_timedelta_plotc                 C   J   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 sr5   rW  r   r   rh   r   r   r9   r:   r;   r<   rR   r>   r?   r@   r%   r&   r-   r!   r   rE   r0   r2   r2   r3   test_timedelta_long_period  r   z%TestTSPlot.test_timedelta_long_periodc                 C   r[  )Nr\  r5   z1 nsr   r   rh   r]  r^  r2   r2   r3   test_timedelta_short_period  r   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   r5   r   r   r   r$   g?r#   )weights)r   r9   r  r>   r?   r@   hist)r-   r   rc   w1w2rE   r0   r2   r2   r3   	test_hist  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 )NrZ   r?  r:  r&  r   i  r    i  i  r%  rh   )r   r   r>   r?   r@   r&   )r-   r  r  rE   r0   r2   r2   r3   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/w   Y  |j\}}t| |  d S )Nr   r5   z
1970-01-02r%  r    r  )r   )r   r9   r:   r;   r<   r   r&   r   r   DeprecationWarningr!   rQ   r\  r  r   )r-   r   r0   l1l2r2   r2   r3   test_add_matplotlib_datetime64  s   

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s<J d S )Nr   )r5   r   rc   rd   r  z
2018-01-01r5   ru   r   r   )rc   rd   r   r   )r   r9   r:   r;   r   r>   r?   r@   scatterrR  rA   r   )r-   rD   rE   r0   rF   r  r2   r2   r3   "test_matplotlib_scatter_datetime64  s   
z-TestTSPlot.test_matplotlib_scatter_datetime64c                 C   <   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-03rZ   rc   rd   rc   rd   r   xrotr   r   r&   r   r-   rc   rD   rr  r2   r2   r3   test_check_xticks_rot)  s   z TestTSPlot.test_check_xticks_rotc                 C   rm  )Nrn  ro  z
2020-05-04rZ   rp  rc   rd   r	  rq  rs  rt  r2   r2   r3   test_check_xticks_rot_irregular1  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 )Nrv  rZ   rp  rc   rd   T)rd   	use_indexr	  rq  Fr   )r   r   	set_indexr&   r   rt  r2   r2   r3   test_check_xticks_rot_use_idx8  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 )Nrv  rZ   rp  rc   rd   T)rc   rd   r@   r  r	  rq  Fr   rs  rt  r2   r2   r3   test_check_xticks_rot_sharexB  s   z'TestTSPlot.test_check_xticks_rot_sharexN){__name__
__module____qualname__rn   markfilterwarningsr4   rG   rV   rY   r`   rk   rr   parametrizer~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   xfailr   r   r   r   r  r  r  r  r  r   r   r   r  r"  r2  r8  r;  r=  rH  slowrN  rQ  r^  rb  rc  rj  rs  rw  rx  ry  rz  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$  r6  r?  rG  rI  rL  rM  rN  rV  rX  rZ  r_  r`  re  rf  rj  rl  ru  rw  rz  r{  r2   r2   r2   r3   r   .   s2   


		






	



	
			



		



7
5	-#		

		

r   c              	   O   s  dd l m} | }z|  |d}|d| }t|dd }	| |i |}
|
d us/J |d| }|d urR|jj	}t
|trG|j}|	d u rR|j	|ksRJ |d ura|	d u ra|j	|ksaJ |d}||d< | |i |}
|
d uswJ tjdd}|| W d    n1 sw   Y  tjdd}t|| W d    n1 sw   Y  W || d S W || d S || w )Nr   r
  r0   r      T)return_filelike)matplotlib.pyplotr?   gcfclfr  popgcagetattrr!   r   rY  r   r   r   ensure_cleansavefigpickledumpri   )fr   seriesargskwargspltrj   r0   orig_axorig_axfreqr   dfreqpathr2   r2   r3   r%   M  s>   


r%   )NN))__doc__r   r   r   r   r  numpyr9   rn   pandas._libs.tslibsr   r   pandasr   r	   r
   r   r   r   r   pandas._testing_testingr   pandas.core.indexes.datetimesr   r   r   pandas.core.indexes.periodr   r   r   pandas.core.indexes.timedeltasr   pandas.tests.plotting.commonr   pandas.tseries.offsetsr   r  r>   r   r%   r2   r2   r2   r3   <module>   s8    $	
            +