U
    sVc                     @   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  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& zdd
l'm(Z( W n e)k
r   dd Z(Y nX ddl*m+Z+ ej,G dd de&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)TestPlotBase)mpl_ge_3_6_0c                   C   s   dS )NT r   r   r   K/tmp/pip-unpacked-wheel-xj8nt62q/pandas/tests/plotting/test_datetimelike.py<lambda>-       r   )WeekOfMonthc                   @   s   e Zd Zejddd Zdd Zdd Zdd	 Z	d
d Z
ejdddddddddgdd Zejddddddddddg	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ddddddddgd'd( Zejd)d*d+d,d-d.d/d0d1gd2d3 Zejddddddddddg	d4d5 Zejdddddddddgd6d7 Zejd)d*d+d,d-d.d/d0d1gd8d9 Zejddddddddddg	d:d; Zejddddddddddg	d<d= Zd>d? Zd@dA ZdBdC Zejje dDdEdFdG ZdHdI Z dJdK Z!dLdM Z"dNdO Z#dPdQ Z$dRdS Z%dTdU Z&dVdW Z'dXdY Z(dZd[ Z)d\d] Z*d^d_ Z+d`da Z,dbdc Z-ejj.ddde Z/dfdg Z0dhdi Z1djdk Z2dldm Z3dndo Z4e5j6dpdq Z7drds Z8dtdu Z9dvdw Z:dxdy Z;dzd{ Z<d|d} Z=d~d Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNejje dDdEdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdd Z[dd Z\ejjddE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| d  }|d j|d jfd	ksft	|d
 j|d
 jfdkst	d S )N1/1/2011   H)periodsfreqtzg     g@g     t@indexr   r   r   )   r   )
r   r   _check_plot_worksplotlist	get_lines	get_xdatahourminuteAssertionError)selfZtz_aware_fixturer#   r%   tsaxxdatar   r   r   test_ts_plot_with_tz4   s    
zTestTSPlot.test_ts_plot_with_tzc                 C   s`   t tjddtdd}| j \}}|jd|d | |	  D ]}|
 dksFtqFd S )N
   	   r$   r   Zfontsizer3   )r   nprandomrandnrangepltsubplotsr*   get_xticklabelsZget_yticklabelsZget_fontsizer0   )r1   dffigr3   labelr   r   r   test_fontsize_set_correctlyA   s
    z&TestTSPlot.test_fontsize_set_correctlyc                 C   s   t dddd}t|jd d}ttjt|d|d}t|j	 |dd	 
|d
d }ttjt|d|d}t|j	 t dddd}t|jd d}ttjt|d|d}t|j	 d S )N1/1/1987ZMSd   r"   r!   r"      r$   r   (   -   c   z2008-1-1 00:15:00Z15Tr6   )r   r   valuesr   r9   r:   r;   lenr)   r*   union)r1   idxr@   df2r   r   r   test_frame_inferredI   s    

zTestTSPlot.test_frame_inferredc                 C   s<   t dddg}t||d}t|j|d t|j|d d S )Nr(   r   rH   r$   )Zxerr)Zyerr)r9   arrayr   r)   r*   )r1   iar   r   r   test_is_error_nozeroindex\   s    z$TestTSPlot.test_is_error_nozeroindexc              	   C   s   t dddd}tdddgdd	dgd
|}| j \}}|j|d t| dksXt| j| d}t	j
t|d |d   W 5 Q R X d S )NrD   ArH   rF   xyzr(   r   )rV   Br3   zno numeric data to plotmatch)r   r   r=   r>   r*   rM   r,   r0   closepytestraises	TypeError)r1   rO   r@   rA   r3   msgr   r   r   test_nonnumeric_excludec   s    z"TestTSPlot.test_nonnumeric_excluder"   STr    DWMQrV   c                 C   sD   t d|dd}ttjt||}| j \}}t|j	|d d S N
12/31/1999rE   rF   r[   )
r   r   r9   r:   r;   rM   r=   r>   r)   r*   r1   r"   rO   ser_r3   r   r   r   test_tsplot_periodp   s    zTestTSPlot.test_tsplot_periodzQ-DECZ1B30Minc                 C   sD   t d|dd}ttjt||}| j \}}t|j	|d d S rj   )
r   r   r9   r:   r;   rM   r=   r>   r)   r*   rl   r   r   r   test_tsplot_datetimew   s    zTestTSPlot.test_tsplot_datetimec                 C   sD   t  }| j \}}|jd|d d}|| d  ks@td S )Nkstyler3   )        rt   rt   r(   r   )tmmakeTimeSeriesr=   r>   r*   r,   	get_colorr0   )r1   r2   rn   r3   colorr   r   r   test_tsplot   s
    zTestTSPlot.test_tsplotc              	   C   sl   t  }d}tjt|d |jddd W 5 Q R X |jdd}tjt|d |jddd W 5 Q R X 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 symbolr\   zb-z#000099)rs   rx   T)Zdrop)ru   rv   r_   r`   
ValueErrorr*   Zreset_index)r1   r2   rb   sr   r   r   test_both_style_and_color   s    z$TestTSPlot.test_both_style_and_colormsusc                 C   sD   | j  \}}tdd|d}ttjt||}t|j	|d d S )N1/1/2012rE   r!   r"   r[   )
r=   r>   r   r   r9   r:   r;   rM   r)   r*   )r1   r"   rn   r3   rngrm   r   r   r   test_high_freq   s    zTestTSPlot.test_high_freqc                 C   sn   ddl m} |d dd kst|dddks0t|tdddtddjksPt|ddtd	djksjtd S )
Nr   )get_datevaluerf     rV   rh   z1987-12rD   z1987-1-1)%pandas.plotting._matplotlib.converterr   r0   r   ordinal)r1   r   r   r   r   test_get_datevalue   s
     zTestTSPlot.test_get_datevaluec                 C   sz   dd }t dtddddd}| j \}}|j|d	 ||d
 t dtddddd}|j|d	 ||d t  d S )Nc                 S   s>   |   d }| d j}| d }|| ||ks:td S )Nr   )r,   r-   r   	get_ydataZformat_coordr0   )r3   Zexpected_string
first_lineZfirst_xZfirst_yr   r   r   check_format_of_first_point   s    zITestTSPlot.test_ts_plot_format_coord.<locals>.check_format_of_first_pointr(   z
2014-01-01rH   zA-DECr   r$   r[   zt = 2014  y = 1.000000rf   zt = 2014-01-01  y = 1.000000)r   r   r=   r>   r*   ru   r^   )r1   r   Zannualrn   r3   Zdailyr   r   r   test_ts_plot_format_coord   s    

z$TestTSPlot.test_ts_plot_format_coordc                 C   s8   t d|dd}ttjt||}t|j|jj	 d S Nrk   rE   rF   )
r   r   r9   r:   r;   rM   r)   r*   r%   r"   r1   r"   rO   rm   r   r   r   test_line_plot_period_series   s    z'TestTSPlot.test_line_plot_period_seriesfrqncyZ1SZ3SZ5TZ7HZ4DZ8WZ11MZ3Ac                 C   s:   t d|dd}ttjt||}t|j|jj	j
 d S r   )r   r   r9   r:   r;   rM   r)   r*   r%   r"   	rule_code)r1   r   rO   r{   r   r   r    test_line_plot_period_mlt_series   s    z+TestTSPlot.test_line_plot_period_mlt_seriesc                 C   s:   t d|dd}ttjt||}t|j|jj	j
 d S r   )r   r   r9   r:   r;   rM   r)   r*   r%   r"   r   r   r   r   r   test_line_plot_datetime_series   s    z)TestTSPlot.test_line_plot_datetime_seriesc                 C   sD   t d|dd}ttjt|d|dddgd}t|j|jj	 d S 	Nrk   rE   rF   rH   rV   rZ   Cr%   columns)
r   r   r9   r:   r;   rM   r)   r*   r%   r"   r1   r"   rO   r@   r   r   r   test_line_plot_period_frame   s    "z&TestTSPlot.test_line_plot_period_framec                 C   sT   t d|dd}ttjt|d|dddgd}|j|jjj	j}t
|j| d S r   )r   r   r9   r:   r;   rM   r%   asfreqr"   r   r)   r*   )r1   r   rO   r@   r"   r   r   r   test_line_plot_period_mlt_frame   s    "z*TestTSPlot.test_line_plot_period_mlt_framec                 C   sT   t d|dd}ttjt|d|dddgd}|j|jjj	j}t
|j| d S r   )r   r   r9   r:   r;   rM   r%   	to_periodr"   r   r)   r*   r   r   r   r   test_line_plot_datetime_frame   s    "z(TestTSPlot.test_line_plot_datetime_framec                 C   sj   t d|dd}ttjt||}t|jtt|j	}t
|j|j	j |ddddg }t
|j d S )Nrk   rE   rF   r   rH         )r   r   r9   r:   r;   rM   rL   r	   Zasarrayr%   r)   r*   Zinferred_freqr   r   r   r   test_line_plot_inferred_freq   s    z'TestTSPlot.test_line_plot_inferred_freqc                 C   sf   | j  \}}tdd}ttt||d}t|d d |dd  g}|j|d t|drbt	d S )Nz2001-1-1z	2001-1-10r$   rH   r   r[   r"   )
r=   r>   r   r   r<   rM   r   r*   hasattrr0   )r1   rn   r3   r   r2   r   r   r   test_fake_inferred_business   s    
z&TestTSPlot.test_fake_inferred_businessc                 C   sL   t  }t|j t|jd ddd}ttj	t
||d}t|j d S )Nr   ZBQSr6   rF   r$   )ru   rv   r)   r*   r   r%   r   r9   r:   r;   rM   )r1   rm   drr   r   r   test_plot_offset_freq   s
    
z TestTSPlot.test_plot_offset_freqc                 C   sL   t tdddtdddtdddg}ttjt||d}t|j d S )N  r(   r      r$   )	r	   r   r   r9   r:   r;   rM   r)   r*   )r1   r   rm   r   r   r    test_plot_multiple_inferred_freq  s    &z+TestTSPlot.test_plot_multiple_inferred_freqzApi changed)reasonc                 C   s   dd l m  m  m} tdddd}ttjt	|d|d}| j
 \}}|j|d | }| }| }t||D ]8\}	}
||	d	}t|
 }t	|r|||ks|tq|d S )
Nr   z2012-6-22 21:59:51.960928L  rF   r   r$   r[   %H:%M:%S.%f)r   plotting_matplotlib	converterr   r   r9   r:   r;   rM   r=   r>   r*   	get_xaxisZget_ticklocsget_ticklabelszipZ_from_ordinalstrftimestrget_textr0   )r1   convrO   r@   rn   r3   ZaxisZtlocsZtlabelslocrB   xprsr   r   r   test_uhf  s    zTestTSPlot.test_uhfc           	      C   s$  t dddd}ttjt|d|d}|jddd	d
g }| j \}}|j	|d t
| d  d d df  }d}t|dd  ||d |g dk  st| j \}}| }|jt|_|j	|d t
| d  d d df  }t|dd  | dk  s td S )Nz2012-6-22 21:59:51rd   rE   rF   r   r$   r   r(   rH      r[   g)QΠE>g:0yE>)r   r   r9   r:   r;   rM   ilocr=   r>   r*   r   r,   
get_xydataZdifffabsallr0   copyr%   astypeobject)	r1   rO   r@   irregrn   r3   ZdiffssecrP   r   r   r   test_irreg_hf  s    $,$zTestTSPlot.test_irreg_hfc                 C   sp   t  }|ddddg }| j \}}|j|d}|d k	s>tt| d  |j	D ]\}}||ksVtqVd S )Nr   r(   r      r[   )
ru   rv   r=   r>   r*   r0   r   r,   r-   r%   )r1   rm   rn   r3   retr   r   r   r   r   "test_irregular_datetime64_repr_bug2  s     z-TestTSPlot.test_irregular_datetime64_repr_bugc                 C   sn   t  }| j \}}|j|d | d  d |jd jksFt	| d 
 }t|djdksjt	d S )Nr[   r   r&   datarZ   )ru   ZmakePeriodSeriesr=   r>   r*   r,   r   r%   r   r0   r-   r   freqstrr1   btsrn   r3   rO   r   r   r   test_business_freq>  s    $zTestTSPlot.test_business_freqc                 C   s   t dd}|d}| j \}}|j|d | d  d |j	d j
ksXt| d  }t|djdks|td S )Ni,  ZBMrh   r[   r   r&   r   )ru   rv   r   r   r=   r>   r*   r,   r   r%   r   r0   r-   r   r   )r1   r   r2   rn   r3   rO   r   r   r   test_business_freq_convertF  s    
$z%TestTSPlot.test_business_freq_convertc              	   C   sl   t  }td|}| j \}}|j|d | d  }d}t	j
t|d t|d W 5 Q R X d S )Nr   r[   r   z)freq not specified and cannot be inferredr\   r   )r   ru   rv   r   r=   r>   r*   r,   r-   r_   r`   rz   r   )r1   r"   r   rn   r3   rO   rb   r   r   r   test_freq_with_no_period_aliasO  s    z)TestTSPlot.test_freq_with_no_period_aliasc                 C   sf   t ddddtdd }ttd|d}| j \}}|j|d | d	 	 }t
|jrbtd S )
Nz
2012-12-20   r    r      minutesr$   r[   r   )r   r   r   r9   aranger=   r>   r*   r,   r-   r	   is_normalizedr0   )r1   rO   r@   rn   r3   r   r   r   r   test_nonzero_base[  s    zTestTSPlot.test_nonzero_basec                 C   sT   t dt i}| j \}}|j|d | d  }t|j	
 t| d S )NrT   r[   r   )r   ru   rv   r=   r>   r*   r,   r-   assert_index_equalr%   r   r   r   r   r   r   test_dataframed  s
    zTestTSPlot.test_dataframec                    s    fdd}t  } j \}}|j|d ||  j \}}t||d d}|j|d || t||d d}|jdd}|D ]}|| qd S )Nc                    sH  |   }| |d d |d d  |   }|d |d d ksDt|d |d d ks\ttd| jtd| jf}| dd |   }t|d |d jkstt|d |d jksttd| jtd| jf}| tdddtddd |   }t|d |d jkstt|d |d jks0t|  } j	
| d S )	Nr   r   r(   r6   1/1/2000z4/1/2000r   r   )get_xlimset_xlimr0   r   r"   intr   r   
get_figurer=   r^   )r3   ZxlimresultexpectedrA   r1   r   r   _testl  s"    z*TestTSPlot.test_axis_limits.<locals>._testr[   r(   rT   bT)r>   )ru   rv   r=   r>   r*   r   )r1   r   rm   rn   r3   r@   axesr   r   r   test_axis_limitsk  s    zTestTSPlot.test_axis_limitsc                 C   s   dd l m  m  m} |td|jks0t|td|jksHt|td|jks`t|td|j	ksxt|td|j
kst|td|jkstd S )Nr   rZ   rf   rh   ri   rV   rg   )r   r   r   r   Z
get_finderr   Z_daily_finderr0   Z_monthly_finderZ_quarterly_finderZ_annual_finder)r1   r   r   r   r   test_get_finder  s    zTestTSPlot.test_get_finderc                 C   s   dddddddg}t dd	d
jgt|  }}g }g }|D ]}td|d}ttjt||}| j	 \}	}
|j
|
d |
 }|| d  |
 \}}|
|d | || d  | j|
  q:||kst||kstd S )Nr6   rI      i  i  i
  '  z1999-1-1rZ   rG   r!   r[   r   ?)r   r   rM   r   r   r9   r:   r;   r=   r>   r*   r   appendget_majorticklocsr   r   r^   r   r0   )r1   Zday_lstxpl1xpl2rs1rs2nr   rm   rn   r3   xaxisvminvmaxr   r   r   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t||}| j	
 \}	}
|j|
d |
 }|| d	  |
 \}}|
|d
 | || d	  | j	|
  q,||kst||kstd S )Ng      @r   1988Q11987Q2r   ri   r   r[   r   r   r   r   rM   r   r   r   r9   r:   r;   r=   r>   r*   r   r   r   r   r   r^   r   r0   r1   Zyrsr   r   r   r   r   r   rm   rn   r3   r   r   r   r   r   r   test_finder_quarterly  s"    z TestTSPlot.test_finder_quarterlyc                 C   s   ddddg}t djgt|  }}g }g }|D ]}tdt|d dd	}ttjt||}| j	
 \}	}
|j|
d
 |
 }|| d  |
 \}}|
|d | || d  | j	|
  q0||kst||kstd S )Ngffffff?g      @r   r   zJan 1988r      rh   r   r[   r   r   r   r   r   r   r   test_finder_monthly  s"    zTestTSPlot.test_finder_monthlyc                 C   sn   t dddd}ttjt||}| j \}}|j|d |	 }|
 d }tddj}||ksjtd S )Nr   i   rh   r   r[   r   Z1989Q1)r   r   r9   r:   r;   rM   r=   r>   r*   r   r   r   r   r0   )r1   r   rm   rn   r3   r   r   r   r   r   r   test_finder_monthly_long  s    z#TestTSPlot.test_finder_monthly_longc           	      C   s   ddddddddg}dd	 |D }g }d
D ]l}t d|dd}ttjt||}| j \}}|j|d |	 }|
| d  | j|  q*||kstd S )Nr   i  i    i  i  iz  c                 S   s   g | ]}t |d djqS )rV   rG   )r   r   .0rW   r   r   r   
<listcomp>  s     z1TestTSPlot.test_finder_annual.<locals>.<listcomp>)r   r6      1   rK      iW  i  Z1987rV   r   r[   r   )r   r   r9   r:   r;   rM   r=   r>   r*   r   r   r   r^   r   r0   )	r1   r   r   Znyearsr   rm   rn   r3   r   r   r   r   test_finder_annual  s    zTestTSPlot.test_finder_annualc           	      C   st   d}t dd|d}ttjt||}| j \}}|j|d |	 }|
 d }tdddj}||ksptd S )Ni@ 1/1/1999ZMinrF   r[   r   rG   r   r   r9   r:   r;   rM   r=   r>   r*   r   r   r   r   r0   )	r1   Znminutesr   rm   rn   r3   r   r   r   r   r   r   test_finder_minutely  s    zTestTSPlot.test_finder_minutelyc           	      C   st   d}t dd|d}ttjt||}| j \}}|j|d |	 }|
 d }tdddj}||ksptd S )N   r  r    rF   r[   r   rG   r  )	r1   Znhoursr   rm   rn   r3   r   r   r   r   r   r   test_finder_hourly  s    zTestTSPlot.test_finder_hourlyc           
   
   C   sZ  t  }tj|jdd< | j \}}|j|d | }t	|dksJt
|d }| }tjj|t|tjd}t|tjjjst
|j}|dddf  st
| j|  t  }|dddddd	d
ddg	 }tj|jdd< | j \}}|j|d}| }t	|dkst
|d }| }tjj|t|tjd}t|tjjjsXt
|j}|dddf  sxt
| j|  dddddd	d
ddg	}ttjt	||}	tj|	jdd< | j \}}|	j|d | }t	|dkst
|d }| }tjj|t|tjd}t|tjjjs6t
|j}|dddf  sVt
d S )Nr      r[   r(   r   maskZ
fill_valuer   r   r7   r         )ru   rv   r9   nanr   r=   r>   r*   r,   rM   r0   r   maMaskedArrayr   
isinstancecorer  r   r^   r   r   r:   r;   )
r1   r2   rn   r3   linesliner   r  rO   rm   r   r   r   	test_gaps  sP    zTestTSPlot.test_gapsc           
      C   s   t  }tj|jdd< | j \}}|j|d t|j	d |j	d dd}t
tjt||}|jdd	 | }t|d
kstt|j d
kst|d }| }tjj|t|tjd}t|tjjjst|j}	|	ddd
f  std S )Nr   r
  r[   r   r'   Z12hrG   Tsecondary_yr(   r  )ru   rv   r9   r  r   r=   r>   r*   r   r%   r   r:   r;   rM   r,   r0   right_axr   r  r  r   r  r  r  r   )
r1   lowrn   r3   idxhr{   r  r  r   r  r   r   r   test_gap_upsampleD  s     zTestTSPlot.test_gap_upsamplec           
      C   sd  t tjd}t tjd}| j \}}|jdd}t|dsHtt|drVt|	 }|
 d }t | | }t|| |  dkst|d   rt| j| | j \}}	|j|	d |	  d	kst| j|	  | }|jdd}	|  s tt|dr0tt|ds@tt|	dsPtt|	dr`td S )
Nr6   Tr  left_axr  r   rightr[   left)r   r9   r:   r;   r=   r>   r*   r   r0   get_axesr,   r   r-   ru   assert_series_equal	get_yaxisget_ticks_positionget_visibler^   r   )
r1   rm   ser2rA   rn   r3   r   r  r   ax2r   r   r   test_secondary_yY  s0    zTestTSPlot.test_secondary_yc                 C   s8  t ddd}ttjd|}ttjd|}| j \}}|jdd}t|dsXt	t|drft	|
 }| d }t| |  }	t||	 |  d	kst	|d   rt	| j| | j \}}
|j|
d
 |
  dkst	| j|
  | }|jdd}
|  s4t	d S )Nr   r6   r   Tr  r  r  r   r  r[   r  )r   r   r9   r:   r;   r=   r>   r*   r   r0   r   r,   r   r-   Zto_timestampru   r!  r"  r#  r$  r^   r   )r1   rO   rm   r%  rA   rn   r3   r   r  r   r&  r   r   r   test_secondary_y_tsu  s*    zTestTSPlot.test_secondary_y_tsc                 C   sn   t tjd}| j \}}|jdd|d}t|ds<tt|drJt|	 }|d 
  dksjtd S )	Nr6   TZdensityr  kindr3   r  r  r(   r  )r   r9   r:   r;   r=   r>   r*   r   r0   r   r"  r#  r1   rm   rA   r3   r   r   r   r   test_secondary_kde  s    zTestTSPlot.test_secondary_kdec                 C   sR   t tjd}| j \}}|jdd|d | }|d  	 dksNt
d S )Nr6   Tbarr)  r(   r  )r   r9   r:   r;   r=   r>   r*   r   r"  r#  r0   r+  r   r   r   test_secondary_bar  s
    zTestTSPlot.test_secondary_barc                 C   sz   t tjdddddgd}|jddgdd}|d	   d
ksFt|d   dks^t|d   d
ksvtd S )Nr   rH   rT   r   cr   T)r  r>   r   r  r(   r  r   r   r9   r:   r;   r*   r"  r#  r0   r1   r@   r   r   r   r   test_secondary_frame  s
    zTestTSPlot.test_secondary_framec                 C   s|   t tjdddddgd}|jdddgdd	}|d
   dksHt|d   dks`t|d   dksxtd S )Nr   rH   rT   r   r/  r0  r-  T)r*  r  r>   r   r  r(   r  r   r1  r2  r   r   r   test_secondary_bar_frame  s
    z#TestTSPlot.test_secondary_bar_framec              	   C   s   t  }|ddddddddg }| j \}}|j|d	 |jd
|d}| }t|d  }t|d  }t ||j	
d t ||j	
d | \}	}
|j	
 }|	|d jkst|
|d jkstd S Nr   r   r6   r   r         r  r[   grr   r(   rZ   r'   )ru   rv   r=   r>   r*   r,   r   r-   r   r%   r   r   r   r0   r1   s1s2rn   r3   r&  r  idx1idx2r  r  Zpidxr   r   r   test_mixed_freq_regular_first  s    
z(TestTSPlot.test_mixed_freq_regular_firstc              	   C   s   t  }|ddddddddg }| j \}}|jd	|d
 |j|d t|drVt| }|d  }t 	||j
tj |d  }t 	||j
tj d S Nr   r   r6   r   r   r6  r7  r  r8  rr   r[   r"   r(   )ru   rv   r=   r>   r*   r   r0   r,   r-   assert_numpy_array_equalr%   r   r   rL   r1   r:  r;  rn   r3   r  x1Zx2r   r   r   test_mixed_freq_irregular_first  s    z*TestTSPlot.test_mixed_freq_irregular_firstc              	   C   s   t   }|jddddddddgd d f }| j \}}|j|d	 |jd
|d}| }t|d 	 }t|d 	 }|
|jdst|
|jdst| \}	}
|j }|	|d jkst|
|d jkstd S r5  )ru   rv   to_framer   r=   r>   r*   r,   r   r-   equalsr%   r   r0   r   r   r9  r   r   r    test_mixed_freq_regular_first_df  s    "
z+TestTSPlot.test_mixed_freq_regular_first_dfc              	   C   s   t   }|jddddddddgd d f }| j \}}|jd	|d
 |j|d t|drdt|	 }|d 
 }t ||jtj |d 
 }t ||jtj d S r?  )ru   rv   rD  r   r=   r>   r*   r   r0   r,   r-   r@  r%   r   r   rL   rA  r   r   r   "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t||}ttjt||}| j \}}|j|d |j|d |	 D ]}t
| djdksvtqvd S )	Nr  m  rf   r   r   rh   r[   r   r   r   r9   r:   r;   rM   r=   r>   r*   r,   r   r-   r"   r0   r1   r  idxlhighr  rn   r3   r  r   r   r   test_mixed_freq_hf_first  s    z#TestTSPlot.test_mixed_freq_hf_firstc                 C   s   t dddd}tjd}t||d}|d }| j \}}|j	|d}|j	d	|d
 |j
d  d |j
d  d kstd S )Nz2012-01-01 13:00
2012-01-02r    rG   r   r$   re   r[   rrr   r   r(   )r   r9   r:   r;   r   r   Zinterpolater=   r>   r*   r  r-   r0   )r1   Zts_indZts_datar2   Zts2rn   r3   r   r   r   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t||}ttjt||}| j \}}|jd|d |jd|d |	 D ]}t
| d	jdksztqz| }t|jd
kst| j|  t dddd}t dddd}ttjt||}ttjt||}| j \}}|j|d |j|d |	 D ] }t
| d	jdks8tq8d S )Nr  rH  rf   r   r   rh   T)Zlegendr3   r   r      re   r   r    r[   )r   r   r9   r:   r;   rM   r=   r>   r*   r,   r   r-   r"   r0   
get_legendZtextsr^   r   )	r1   r  rK  rL  r  rn   r3   r  legr   r   r   test_mixed_freq_lf_first  s*    z#TestTSPlot.test_mixed_freq_lf_firstc                 C   s~   t  }|ddddddddd	d
ddddddg }tdddd}ttjt||}| j	 \}}|j
|d |j
|d d S )Nr   r(   r   rH   r   r   r   r      r7   r6   r              z1/3/2000r   rZ   r   r[   )ru   rv   r   r   r9   r:   r;   rM   r=   r>   r*   )r1   r2   r   r   Zpsrn   r3   r   r   r   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||}| jjddd\}\}}|j|d	 |j|d	 |jdkst	|jdkst	|j
d
  d |j
d
  d kst	| j \}}| }|j|d	 |j|d	 |j
d
  d |j
d
  d kst	d S )N
2015-01-01rH   rh   r   r(   r   T)Znrowssharexr[   r   r&   )r   rN   r   r<   rM   r=   r>   r*   r"   r0   r  r   Ztwinx)r1   r<  r=  r:  r;  rA   Zax1r&  r   r   r   test_mixed_freq_shared_ax*  s    (z$TestTSPlot.test_mixed_freq_shared_axc                 C   s   | j  \}}tdtdg}ttt||}|j|d | d 	 }|j
 t| ksdtt| |j
 ks~td S )Nr[  z
2015-01-03r[   r   )r=   r>   r   r
   r   r<   rM   r*   r,   r-   r%   minr0   max)r1   rn   r3   Zdtir{   r4   r   r   r   test_nat_handlingK  s    zTestTSPlot.test_nat_handlingc                 C   s   t dddd}t dddd}ttjt||}ttjt||}| j \}}|j|d |j|d |	 D ]}t
| dj|jksvtqvd S )	Nr  4   rg   r   r   rh   r[   r   rI  rJ  r   r   r   test_to_weekly_resamplingW  s    z$TestTSPlot.test_to_weekly_resamplingc                 C   s  t dddd}t dddd}ttjt||}ttjt||}| j \}}|j|d |j|d |	 j
tj}tjdd	d
dddddddddgtjd}| D ]P}	t|	 dj|jkst|	jdd}
t|
dkrt|
| qt|
| qt  d S )Nr  ra  rg   r   r   rh   r[                            Zdtyper   Forig)r   r   r9   r:   r;   rM   r=   r>   r*   r   asi8r   float64rR   r,   r   r-   r"   r0   ru   r@  r^   )r1   r  rK  rL  r  rn   r3   Z
expected_hZ
expected_lr  r4   r   r   r   test_from_weekly_resamplingb  s&    z&TestTSPlot.test_from_weekly_resamplingc                 C   sZ  t dddd}t dddd}ttjt|d|dd	d
gd}ttjt|d|dd	d
gd}dD ]p\}}| j \}}|j|d|d |j|d|d tj	ddddddddddddgtj
d}	tjt|	tj
d}
tdD ]^}|j| }t| j|jkst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stt|jdd|	 |
|| j7 }
t|jdd|
 qnqddD ]v\}}| j \}}|j|d|d |j|d|d | jtj
}	tjt|	tj
d}
tdD ]b}|j| }t| dj|jksltt|jdd|	 |
|| j7 }
t|jdd|
 qBtj	ddddddddddddgtj
d}	tjt|	tj
d}
tdD ]f}|jd|  }t| dj|jkstt|jdd|	 |
|| j7 }
t|jdd|
 qqd S )Nr  ra  rg   r   r   rh   rH   r   r(   r   r   ))r  area)ru  r  T)r*  Zstackedr3   rc  rd  re  rf  rg  rh  ri  rj  rk  rl  rm  rn  ro  Frp  r   )r   r   r9   r:   randrM   r=   r>   r*   rR   rs  zerosr<   r  r   r-   r"   r0   ru   r@  rL   r   r   rr  r   )r1   r  rK  rL  r  Zkind1Zkind2rn   r3   Z
expected_xZ
expected_yrS   r  r  r   r   r   $test_from_resampling_area_line_mixedy  s    ""

z/TestTSPlot.test_from_resampling_area_line_mixedc                 C   s  t dddd}t dddd}ttjt||}ttjt||}| j \}}|j|d |j|d t|	 dkst
|	 D ]}t| d	jd
kst
qt  | j \}}|j|d |j|d t|	 dkst
|	 D ]}t| d	jd
kst
qd S )Nz2014-07-01 09:00rd   2   rF   Z100Lr   r[   r   r   r   )r   r   r9   r:   r;   rM   r=   r>   r*   r,   r0   r   r-   r"   ru   r^   rJ  r   r   r   "test_mixed_freq_second_millisecond  s"    z-TestTSPlot.test_mixed_freq_second_millisecondc                 C   s   t dddt dddt dddg}ttjt|dt|td}t|j	 t
ddd	}|d
dddg t}ttjt|d|}| j \}}t|j	|d d S )Nr   r(   r   r  rH   ro  r   r6   r   r   r   r7   r[   )r   r   r9   r:   r;   rM   r	   r   r)   r*   r   r   r=   r>   )r1   rO   r@   rn   r3   r   r   r   test_irreg_dtypes  s    " 
zTestTSPlot.test_irreg_dtypesc                    s  t dddddd tjddd }t fdd|D }ttjt|tjt|d|d	}| j	
 \}}|j|d
 | }| }t||D ]v\ }tt d\}	}
t|	d\}}	| }t|dkr|
dkrt||	|
d}nt||	|
d}||kstqd S )Nr(   rH   r   r   r  c                    s"   g | ]} t t|d   qS r   r   r   r   r   tr   r   r     s     z(TestTSPlot.test_time.<locals>.<listcomp>r   r$   r[   <   %H:%M:%S%H:%M)r   r9   r:   randintcumsumrR   r   r;   rM   r=   r>   r*   
get_xticksr?   r   divmodr   r   r   r   r0   r1   deltasr2   r@   rA   r3   tickslabelslmr{   hr   r   r   r~  r   	test_time  s(      zTestTSPlot.test_timec                    s  t dddddd tjddd }t fdd|D }ttjt|tjt|d|d	}| j	
 \}}|j|d
 | }| }t||D ]v\ }tt d\}	}
t|	d\}}	| }t|dkr|
dkrt||	|
d}nt||	|
d}||kstq|dd | }| }t||D ]~\ }tt d\}	}
t|	d\}}	| }t|dkr:|
dkrt||	|
d}nt||	|
d}||ks:tq:d S )Nr(   rH   r   r   r  c                    s"   g | ]} t t|d   qS r|  r}  r   r~  r   r   r     s     z4TestTSPlot.test_time_change_xlim.<locals>.<listcomp>r   r$   r[   r  r  r  z1:30z5:00)r   r9   r:   r  r  rR   r   r;   rM   r=   r>   r*   r  r?   r   r  r   r   r   r   r0   r   r  r   r~  r   test_time_change_xlim  s@      
z TestTSPlot.test_time_change_xlimc                    s  t dddddd tjddd }t fdd|D }ttjt|tjt|d|d	}| 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r<t||	|
|dd d }n4|
dkr\t||	|
|d}nt||	|
|d}||kstqd S )Nr(   rH   r   r   r  c                    s"   g | ]} t t|d   qS ))microsecondsr}  r   r~  r   r   r   <  s     z.TestTSPlot.test_time_musec.<locals>.<listcomp>r   r$   r[   r  g    .Ai  r   r  r  )r   r9   r:   r  r  rR   r   r;   rM   r=   r>   r*   r  r?   r   r  r   roundr   r   r   r0   )r1   r  r2   r@   rA   r3   r  r  r  r  r{   r~   r  r   r   r   r~  r   test_time_musec9  s2      
zTestTSPlot.test_time_musecc                 C   s   t dddd}t dddd}ttjt||}ttjt||}| j \}}|j|d |jd|d	}|	 D ]}t
| jdksxtqxt|d
stt|drt|j	 D ]}t
| jdkstqd S )Nr  rH  rf   r   r   rh   r[   Tr  r3   r  r  )r   r   r9   r:   r;   rM   r=   r>   r*   r,   r   r-   r"   r0   r   r  rJ  r   r   r   test_secondary_upsampleX  s    z"TestTSPlot.test_secondary_upsamplec                 C   sZ  | j  }|d}t }|jddg|d | }t| dksJt	|
 d  dksbt	|
 d  d	kszt	|
 d
  dkst	|
 d  dkst	|j d kst	t }| D ]}||  qt|dkst	| j | | j  }|d}|jddgd|d | }t| dks@t	|
 d  dksZt	|
 d  dkstt	|
 d
  dkst	|
 d  dkst	| j | | j  \}}|jddg|d | }|
 d  dkst	|
 d  dkst	| j | | j  \}}|jddgd|d | }|
 d  dks`t	|
 d  dkszt	| j | | j  }|d}t }|jddg|d}| }t| dkst	|j d kst	t }| D ]}||  qt|dkst	| j | t }| j  }|d}|jddg|d}| }t| dkstt	|j d kst	t }| D ]}||  qt|dkst	| j   | j  }|d}|jddg|d}| }t| dkst	|j d ks t	t }| D ]}||  q.t|dksVt	d S )N   rV   rZ   r  r   r   z	A (right)r(   z	B (right)r   r   rH   rf   F)r  
mark_rightr3   r-  )r*  r  r3   )r*  r  r  r3   )r=   figureadd_subplotru   ZmakeTimeDataFramer*   rR  rM   r,   r0   Z	get_textsr   r  setaddrw   r^   r>   ZmakeDataFrame)r1   rA   r3   r@   rS  colorsr  r   r   r   test_secondary_legendg  s    










z TestTSPlot.test_secondary_legendc                 C   sz   t dddd}ttjt|d|}| j \}}|j|d}|	 }|
 D ]$}t| dkrP| dksPtqPd S )	Nr   r   rh   r   rH   r[   r   r   )r   r   r9   r:   r;   rM   r=   r>   r*   r   r   r   Zget_rotationr0   )r1   r   r@   rn   r3   r   r  r   r   r   test_format_date_axis  s    z TestTSPlot.test_format_date_axisc                 C   sX   t dddd}ttt|}| j \}}|j||dd}tt	|d 
 | d S )NrN  r6   rf   startr!   r"   Y)rB   r   )r   r+   r<   rM   r=   r>   r*   ru   r   r   r-   )r1   rW   rX   rn   r3   r  r   r   r   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}| j \}}|jdd |D |f| |jdd |D |f| | \}}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 r   	toordinalr   r   r   r   r     s     z0TestTSPlot.test_mpl_nopandas.<locals>.<listcomp>c                 S   s   g | ]}|  qS r   r  r   r   r   r   r     s     c                 S   s   g | ]}|  qS r   r  r   r   r   r   r     s     ro  r   c                 S   s   g | ]}|  qS r   r  r   r   r   r   r     s     )r   r9   r   r=   r>   Z	plot_dater,   rR   rs  ru   r@  r   )
r1   datesZvalues1Zvalues2kwrn   r3   Zline1Zline2expr   r   r   test_mpl_nopandas  s    
zTestTSPlot.test_mpl_nopandasc                 C   s   ddl m} t d d }|dddddd	d
ddddddg }| j \}}|d d j|d |dd  j|d | \}}|||j	
 d|kst|||j	 d|kstd S )Nr   DatetimeConverterr  r(   r   r   r   rU  r7   r6   r   r6  r7  r  rW  rX  r[    r   r  ru   rv   r=   r>   r*   r   convertr%   r^  r0   r_  r1   r  r2   Zts_irregularrn   r3   r  r  r   r   r    test_irregular_ts_shared_ax_xlim  s    "z+TestTSPlot.test_irregular_ts_shared_ax_xlimc                 C   s   ddddg}ddddg}t d|d	}t d|d	}| j \}}|j|d
 | \}}|jd|d | \}	}
||	ks|t||
k std S )Nr(   r   rH   r   r   r   r   rU  r$   r[   Tr  )r   r=   r>   r*   r   r0   r1   Zindex_1Zindex_2r:  r;  rn   r3   left_beforeright_before
left_afterright_afterr   r   r   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}| j \}}|j|d	 | \}}|jd
|d | \}	}
||	kst||
k std S )N
2000-01-01r   rf   r  z
2000-01-05r(   r$   r   r[   Tr  )r   r   r=   r>   r*   r   r0   r  r   r   r    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}| j \}}|j|d | \}}|d jd	|d
 | \}}||kspt||ks|td S )Nr  r   r^  r   r(   r$   r[   rf   Tr  )	r   r   r=   r>   r*   r   ZresampleZmeanr0   )	r1   r   r2   rn   r3   r  r  r  r  r   r   r   #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 }|dddddd	d
ddddddg }| j \}}|d d j|d |dd  jd|d |d d j|d | \}}|||j	
 d|kst|||j	 d|kstd S )Nr   r  r  r(   r   r   r   rU  r7   r6   r   r6  r7  r  rW  rX  r[   Tr  r  r  r  r   r   r   "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}| j \}}|| tddddtddddg}|| d S )Ni  r(   r   r   )r   r=   r>   r*   r   )r1   rL   rn   r3   r   r   r   test_plot_outofbounds_datetime8  s
    
z)TestTSPlot.test_plot_outofbounds_datetimec                 C   s   dd t dD }tdddd}tt jt|d|}| j \}}|j	d|d	 | j
  | }d
d |D }t|t|kst||kstd S )Nc                 S   s   g | ]}d |dqS )z00:00:00.0000000z0>2dr   )r   rS   r   r   r   r   C  s     zATestTSPlot.test_format_timedelta_ticks_narrow.<locals>.<listcomp>r6   0nsr   rH   r   r8   c                 S   s   g | ]}|  qS r   r   r   r   r   r   r   L  s     )r9   r   r   r   r:   r;   rM   r=   r>   r*   drawr?   r0   r1   Zexpected_labelsr   r@   rA   r3   r  Zresult_labelsr   r   r   "test_format_timedelta_ticks_narrowA  s    
z-TestTSPlot.test_format_timedelta_ticks_narrowc              	   C   s   ddddddddd	g	}t d
ddd}ttjt|d|}| j \}}|jd|d}| j	  |
 }dd |D }t|t|kst||kstd S )Nz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  r6   1 dr   rH   r   r8   c                 S   s   g | ]}|  qS r   r  r   r   r   r   r   d  s     z?TestTSPlot.test_format_timedelta_ticks_wide.<locals>.<listcomp>)r   r   r9   r:   r;   rM   r=   r>   r*   r  r?   r0   r  r   r   r    test_format_timedelta_ticks_wideP  s&    
z+TestTSPlot.test_format_timedelta_ticks_widec                 C   s   t tdtddd}| j \}}t|j|d tdddd}t tj	t
||}| j \}}t|j|d tddd	d}t tj	t
||}| j \}}t|j|d d S )
Nr   Z1dayr   r[   z1 day 2 hr 30 min 10 sr6   r  r   z1 ns)r   r<   r   r=   r>   r)   r*   r9   r:   r;   rM   )r1   r{   rn   r3   r%   r   r   r   test_timedelta_ploth  s    zTestTSPlot.test_timedelta_plotc                 C   s`   t dddd}|}tddd}tdddd d d }| j \}}|j||g||gd	 d S )
Nr   r6   r    r   r   r(   g?r'   )weights)r   r9   r   r=   r>   hist)r1   r   rW   Zw1Zw2rn   r3   r   r   r   	test_histz  s    zTestTSPlot.test_histc                 C   s   t dddgtdddtdddtdddgd	}t dddgtd
ddtdddtdddgd	}| j \}}|j|d |j|d |j|d d S )Nr(   r   rH   r   r   r  r   i  r$   i  i  r  r[   )r   r   r=   r>   r*   )r1   r:  r;  rn   r3   r   r   r   test_overlapping_datetime  s$    





z$TestTSPlot.test_overlapping_datetimez1GH9053 matplotlib does not use ax.xaxis.converterc              	   C   sp   t tjdtdddd}| }tt |j|j	|j
dd W 5 Q R X |j\}}t| |  d S )Nr6   z
1970-01-02r   r$   r8  )rx   )r   r9   r:   r;   r   r*   ru   Zassert_produces_warningDeprecationWarningr%   rL   r  r@  r   )r1   r{   r3   l1l2r   r   r   test_add_matplotlib_datetime64  s    
z)TestTSPlot.test_add_matplotlib_datetime64c                 C   s~   t tjdddddgd}tdddd	|d
< | j \}}|jd
d|d | j	  |
 d }d}| |ksztd S )Nr   r6   r   rW   rX   r0  z
2018-01-01rf   r   r   )rW   rX   r   )r   r9   r:   ZRandomStaterv  r   r=   r>   Zscatterr  r?   r   r0   )r1   r@   rA   r3   rB   r   r   r   r   "test_matplotlib_scatter_datetime64  s     
z-TestTSPlot.test_matplotlib_scatter_datetime64c                 C   s  t dddg}t|dddgd}|jdd	d}| j|d
d t dddg}t|dddgd}|jdd	d}| j|dd |djd	dd}| j|dd |djd	dd}| j|d
d |jdd	ddd}| j|dd |jdd	ddd}| j|d
d d S )Nz
2020-05-01z
2020-05-02z
2020-05-03r(   r   rH   )rW   rX   rW   rX   r   )Zxrotz
2020-05-04r   T)rX   Z	use_indexF)rW   rX   r>   r\  )r   r   r*   Z_check_ticks_propsZ	set_index)r1   rW   r@   r   r   r   r   test_check_xticks_rot  s     z TestTSPlot.test_check_xticks_rotN)`__name__
__module____qualname__r_   markfilterwarningsr5   rC   rQ   rU   rc   Zparametrizero   rp   ry   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   Zxfailr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  Zslowr  r	  r  r  r'  r(  tdZskip_if_no_scipyr,  r.  r3  r4  r>  rC  rF  rG  rM  rP  rT  rZ  r]  r`  rb  rt  rx  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   2   s   


 


 
 

 
	 
 
	
		(


3

	![)[

		
r   c              	   O   sB  dd l m} | }z|  |d}|d| }t|dd }	| ||}
|
d k	s\t	|d| }|d k	r|j
j}t|tr|j}|	d kr|j|kst	|d k	r|	d kr|j|kst	|d}||d< | ||}
|
d k	st	tjdd}|| W 5 Q R X tjdd}t|| W 5 Q R X W 5 || X d S )Nr   r  r3   r"      T)Zreturn_filelike)Zmatplotlib.pyplotZpyplotZgcfr^   Zclfr  popZgcagetattrr0   r%   r"   r  r   r   ru   Zensure_cleanZsavefigpickledump)fr"   Zseriesargskwargsr=   rA   r3   Zorig_axZorig_axfreqr   Zdfreqpathr   r   r   r)     s6    




r)   )NN)/__doc__r   r   r   r   r  Znumpyr9   r_   Zpandas._libs.tslibsr   r   Zpandas.util._test_decoratorsutilZ_test_decoratorsr  Zpandasr   r	   r
   r   r   r   r   Zpandas._testingZ_testingru   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.plotting._matplotlib.compatr   ImportErrorZpandas.tseries.offsetsr   Zskip_if_no_mplr   r)   r   r   r   r   <module>   s>   $	           (