U
    [e`M                    @   s  d Z ddlmZmZ ddlZddlZddlZddlZddlZddl	Z	ddl
m  mZ ddlmZ ddlZddlmZmZmZmZmZmZ ddlmZ ddl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 ej%G dd deZ&dd Z'dS )z Test cases for DataFrame.plot     )datedatetimeN)is_list_like)	DataFrame
MultiIndexPeriodIndexSeriesbdate_range
date_range)TestPlotBase_check_plot_workspprint_thing)mpl_ge_3_6_0c                   C   s   dS )NT r   r   r   h/var/www/html/services/stratfitenv/lib/python3.8/site-packages/pandas/tests/plotting/frame/test_frame.py<lambda>'       r   c                   @   s  e Zd Zejje ddejjdd Zdd Z	ejjdd Z
d	d
 Zdd Zdd Zdd Zejdddgdd Zejddddgdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zejd(d)d*gd+d, Zd-d. Zd/d0 Zejjd1d2d3ejd4d5d1gd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA Z dBdC Z!dDdE Z"dFdG Z#dHdI Z$dJdK Z%ejdLd5d1gejdMdNdOdPgdOdPdNgfdQdR Z&ejdSdTdUdVgdWdX Z'dYdZ Z(d[d\ Z)d]d^ Z*d_d` Z+ejjdadb Z,dcdd Z-dedf Z.dgdh Z/e0j1didj Z2e0j1dkdl Z3dmdn Z4ejdodpe5j6dqdr dpe5j6dsdr gdtdu Z7d!dwdxZ8dydz Z9d{d| Z:d}d~ Z;dd Z<ejdddddgdd Z=dd Z>e0j1dd Z?dd Z@dd ZAdd ZBejdddgddfdgddgddgfgdd ZCdd ZDejdddgdfgdd ZEejdddgdgdgfdddgddgddgfdddgddgddgfgdd ZFejdddddgfddddgfgdd ZGdd ZHdd ZIejdi dfddidfddidfgdd ZJdd ZKdd ZLejjdd ZMejjejd(d)ddgddń ZNejjdeOdǍddɄ ZPdd˄ ZQejjdd̈́ ZRejd(d)ddgddτ ZSddф ZTddӄ ZUddՄ ZVddׄ ZWddل ZXddۄ ZYe0j1dd݄ ZZdd߄ Z[dd Z\dd Z]ejdd)ddgdd Z^dd Z_dd Z`ejd(d)d*gdd Zadd Zbdd Zcdd Zde0j1ejd(ddd Zedd Zfdd Zgdd Zhejddddd gdd Zidd Zjdd Zkejd(ddd	 Zlejd
dddddvdddgfgejd(d)d*dgdd Zmejdddddgejd(ddgdd Znejdddd Zodd  ZpdvS ("  TestDataFramePlotszApi changed)reasonc           
   	   C   s  t  }t|jdd t|jddd}| j|ddd t|jdddd	}| j|dd
d t|jdddd}| j|dd | j|ddd tddgddgd}d}tjt	|d |jj
dd W 5 Q R X ttjddttjd d d}t|jdd}| j|dd t|jdd t|jdddgd t|jdddgd t|jddd t|jdddd |jddd }| j|dd!d |d d D ]P}| |j | j| dd" | j|jdd#dd" | j|j gdd" q|d fD ]@}| |j | |  | |j g | j|dd qt|jdd$ ttjd d td}ttjddt|d}t|jdd}| j|dd tjd%d&d'd(d)d*d+d,gd-d.gd/}tjd0d1gd2d3gd/}ttjddd4||d5}t|jd6d$ td7tjdi}t|jjdd8}| j|dd9d t|jjdd:d;}| j|dd9d | j \}}|jjd|d<}t|dksnt|j}	|	|d kstd S )=NF)gridTdefault_axessubplots   r      axes_numlayout)   )r   r   r   r!   r!   )r   r   	use_indexr   xrotr   r!      xyz''Line2D' object has no property 'blarg'match)Zblarg
   index)r#   Zsort_columns   )yticks)xticks)id   )ylimZxlimZblah)r   r   title)r   r5   r&   r   visibleminor)r5   )   αr   )r;   r   )   βr!   )r<   r&   )   γr   )r=   r0   )   δ   )r>      Zi0i1)names)baru   Δ)rC   u   ΕZc0c1)   r!   columnsr.   u   Σr(   r   r   r   )r    r   )r   r   r   ax) tmmakeTimeDataFramer   plot_check_axes_shape_check_ticks_propsr   pytestraisesAttributeErrorlinenprandomrandliststringascii_letters_check_visiblexaxisget_xticklabels	get_labelzipranger   from_tuplesrandintrC   pltr   lenAssertionErroraxes)
selfdfrf   msgrK   Ztuplesr.   rG   figresultr   r   r   	test_plot,   s    $
 zTestDataFramePlots.test_plotc              
   C   s  ddd ddg}t ddddd	gddddd	gtjd
d	tjddgtdtj|dddtj|ddddd}t|j	ddd t|ddg j	ddd t|ddg j	ddd t|ddg j	ddd t|ddg j	ddd t|ddg j	ddd t|ddg j	ddd d S )NZ2008Z2009Z2011Z2012r   r!   r&   r   r0   r@   dtypez%Y)formati8T)ro   utc)ABCDErr   rs   r'   rt   ru   rv   )
r   rU   arraynanobjectpdto_datetimeviewr   rN   )rg   datesrh   r   r   r   test_nullable_int_plot   s     
z)TestDataFramePlots.test_nullable_int_plotc                 C   s   t jddddgdd}t|}t|jj t|jj t|jj t|jj t	||d}t|jj t|jj t|jj t|jjdd	 t|jj
d
dd t|jjd
dd d S )Nr   r!   r&   r   ZUInt32rm   r'   r)   r)   r(   )rz   rw   r   r   rN   rT   rC   histpier   scatterhexbin)rg   Zarrsrh   r   r   r   test_integer_array_plot   s    z*TestDataFramePlots.test_integer_array_plotc                 C   s:   t dddgdddgd}| }t| dks6td S )Nr(   r)   zr   r!   r&   rr   rs   )r   rN   rd   	get_linesre   rg   rh   rK   r   r   r   test_nonnumeric_exclude   s    z*TestDataFramePlots.test_nonnumeric_excludec                 C   s@   t tjdddddgd}|jddd}| |j d d S )Nr,   r&   abcrG   r'   )r   rU   rV   randnrN   _check_text_labelsr\   r^   r   r   r   r   test_implicit_label   s    z&TestDataFramePlots.test_implicit_labelc                 C   sD   t tjddddgd}d|j_|jddd |jjdks@td S )Nr!   r   r   r   NAMEZLABEL)r)   label)r   rU   rV   r   r.   namerN   re   rg   rh   r   r   r   test_donot_overwrite_index_name   s    z2TestDataFramePlots.test_donot_overwrite_index_namec                 C   sj  t  }| |jddd|dd   | |jdd|d  | |jdd|j  | |jddd|dj  | |jdd|d  | |jdd|j  tdt|j	d |_	| |jddd|dd   | |jdd|d  | |jdd|d   |jddd	d
d}| 
|jd	 | j|dddd d S )Nr   r   r'   rr   rs   r(   r   r!   ZTest)   rE   )r(   r)   r5   figsizerI   )g      0@g       @)r   r   r   )rL   rM   Z_check_datarN   	set_indexrs   rU   arangerd   rG   r   r5   rO   r   r   r   r   test_plot_xy   s    $"$zTestDataFramePlots.test_plot_xyzinput_log, expected_log)Tlog)symZsymlogc                 C   s   t dtditdd}|j|d}| j||d | |ksFt|j|d}| j||d | |kspt|j|d}| j|||d	 | |kst| |kstd S )
Nr   r3   r-   logyyaxis)logxr\   loglog)r\   r   )r   rU   r   rN   _check_ax_scalesZ
get_yscalere   Z
get_xscale)rg   Z	input_logZexpected_logrh   rK   r   r   r   test_logscales   s    z!TestDataFramePlots.test_logscalesinput_paramr   r   r   c              	   C   sN   t dtditdd}d}tjt|d |jf |di W 5 Q R X d S )Nr   r3   r-   z9Boolean, None and 'sym' are valid options, 'sm' is given.r*   sm)r   rU   r   rQ   rR   
ValueErrorrN   )rg   r   rh   ri   r   r   r   test_invalid_logscale   s    z(TestDataFramePlots.test_invalid_logscalec              	   C   s  t  }|jdd}| }t|d  tr2t| j|dd t 	  dt
jd< | }| }t|d  trxt| j|dd t 	  dt
jd< | }| }t|d  trttt|d  tstt 	  t
jdd< | }| }t|d  trt| j|dd W 5 Q R X t 	  | }| }t|d  tr`ttt|d  ts|t| j|dd d S )	NT)x_compatr      r$   zxaxis.compatFr   )rL   rM   rN   r   
isinstance	get_xdatar   re   rP   closeplottingZplot_paramsZuse)rg   rh   rK   linesr   r   r   test_xcompat  s:    

zTestDataFramePlots.test_xcompatc                 C   sT   t tjddttdddtdddddgd}|  | jjd	d
 t	
  d S )N   r!     r      r   r   r.   rG   r   r   )r   rU   rV   rW   r	   r   rN   rc   ZaxhlinerL   r   r   r   r   r   test_period_compat(  s    z%TestDataFramePlots.test_period_compatc                 C   s   t dtditdddtjd}| }| d }| }t|d d df |d d df tjdd}tj	||j
d	d
 t  tjtdddtjd|_| }| d }| }t|d d df |d d df tjdd}t	||j
 d S )Nr)   r3   c   r    )r.   rn   r   r   )rn   r   F)Zcheck_index_typerm   )r   rU   r   Zint64rN   r   Z
get_xydatar   rL   Zassert_series_equalr)   r   rz   Indexfloat64r.   )rg   rh   rK   r   rsr   r   r   test_unsorted_index5  s"      **z&TestDataFramePlots.test_unsorted_indexc              	   C   s  t dddddgiddddgd}| }| \}}| }|t|d  d ksZt|t|d  d ksxtt dddtj	ddd	d
giddddtj	ddgd}| }| \}}| }|t|d  d kst|t|d  d kstt ddddgddddgd}|jddd}| \}}| }|t|d  d ksbt|t|d  d kstd S )Nr)                 ?       @      @r-   r   g      @g      @g      @g     V@g     V@g     @W@g      W@)r)   r   r   r'   )
r   rN   get_xlimr   rU   Znanminget_datare   Znanmaxrx   )rg   rh   rK   xminxmaxr   r   r   r   test_unsorted_index_limsG  s*       z+TestDataFramePlots.test_unsorted_index_limsc              	   C   s   t tjddttjd d ddddgd }d}tjt	|d	 |j
jd
d W 5 Q R X tjt	|d	 |j
jd
d W 5 Q R X d S )Nr?   r   r(   r)   r   fourr   z+Log-y scales are not supported in area plotr*   Tr   r   )r   rU   rV   rW   rX   rY   rZ   rQ   rR   r   rN   arearg   rh   ri   r   r   r   test_negative_log`  s    
z$TestDataFramePlots.test_negative_logc                 C   sZ   t t|d  d }t||D ]0\}}|| d 7 }| d }t|| q$d S )Nr   r   )rU   Zzerosrd   r   r_   rL   assert_numpy_array_equal)rg   Znormal_linesZstacked_linesbasenlslsyr   r   r   _compare_stacked_y_coodl  s
    z*TestDataFramePlots._compare_stacked_y_coodkindrT   r   c           
   
   C   s  t d ttjddddddgd}| }ttjdtjdtjd tjd d	}ttjddttj	d d ddddgd
}t
|j|dd}t
|j|dd}| |j|j t
|j|dd}t
|j|dd}| |j|j t
|j|dd}t
|j|dd}| |jd d |jd d  | |jdd  |jdd   t
|jdd d}tjt|d |jdd W 5 Q R X ||jd }	t
|	j|ddd W 5 Q R X d S )N*   r?   r   wr(   r)   r   r   )r   r(   r)   r   r   F)r   stackedTr!   r   zWhen stacked is True, each column must be either all positive or all negative. Column 'w' contains both positive and negative valuesr*   r   )r   r   r   )rL   
RNGContextr   rU   rV   rW   r   rX   rY   rZ   r   rN   r   r   rQ   rR   r   r   r.   )
rg   r   rh   neg_dfZsep_dfZmixed_dfax1ax2ri   df2r   r   r   test_line_area_stackeds  s@    

	
  z)TestDataFramePlots.test_line_area_stackedc              
   C   s  ddt jdg}dt jddg}t||d}t||dtjddd}||fD ]}t|j}|jd  }|jd  }t j	dddgt j
d	}	tt |jd|	 t j	dddgt j
d	}	tt |jd|	 t|jt 	d
d
dd
g t|jt 	d
dd
d
g t j	ddddgt j
d	}
t j	ddddgt j
d	}t|jdd}t|jd  |
 t|jd  |
|  t|jj}t|jd  |
 t|jd  |
|  t|jjd
d}t|jd  |
 t|jd  | qLd S )Nr   r!   r&   r   r   r   )kr-   r   rm   FTr   )rU   rx   r   rL   ZmakeDateIndexr   rN   r   	get_ydatarw   r   r   deletedatamaskr   )rg   Zvalues1Zvalues2rh   tdfdrK   Zmasked1Zmasked2expZ	expected1Z	expected2r   r   r   test_line_area_nan_df  s>    
  z(TestDataFramePlots.test_line_area_nan_dfc                 C   s`  t tjdddddgd}| }| \}}| }||d  d d ksTt||d  d d kspt|jd	d
}| \}}| }||d  d d kst||d  d d kst|jd	d	d}| j	|ddd |D ]p}t
|dstt
|drt| \}}| }||d  d d ks>t||d  d d kstqd S )Nr?   r&   r(   r)   r   r   r   r    T)secondary_y)r   r   r6   r   Zleft_axright_ax)r   rU   rV   rW   rN   r   r   r   re   rO   hasattr)rg   rh   rK   r   r   r   rf   r   r   r   test_line_lim  s(    z TestDataFramePlots.test_line_limFzX2020-12-01 this has been failing periodically on the ymin==0 assertion for a week or so.)strictr   r   Tc           
      C   s   t tjddddddgd}| }t|jj|d}| \}}| \}}|	 }	||	d	 
 d	 d	 kspt||	d	 
 d	 d
 kst|d	kstt|jj|d}| \}}|d	kstd S )Nr?   r   r(   r)   r   r   r   r   r   r    )r   rU   rV   rW   r   rN   r   r   get_ylimr   r   re   )
rg   r   rh   r   rK   r   r   ZyminZymaxr   r   r   r   test_area_lim  s    z TestDataFramePlots.test_area_limc                 C   s   t tjddddgd}| jjdddd\}\}}|j|d	d
 |j|d	d
 | |||sft	| |||s|t	d S )Nr   r!   r(   r)   r   r   T)shareyr   )rK   r   )
r   rU   rV   rW   rc   r   rN   Z
get_y_axisZjoinedre   )rg   rh   rj   r   r   r   r   r   test_area_sharey_dont_overwrite  s    z2TestDataFramePlots.test_area_sharey_dont_overwritec                 C   s   t tjdd}|jjdd}|jD ]}| dks&tq&|jjddd}|jD ]}| dksRtqR|jjddd}| j	|ddd |D ] }|jD ]}| dkstqqd S )	Nr0   r!   )	linewidthT)r   r   )r   r   )r0   r   r   )
r   rU   rV   r   rN   rC   patchesZget_linewidthre   rO   )rg   rh   rK   rrf   r   r   r   test_bar_linewidth  s    


z%TestDataFramePlots.test_bar_linewidthc                 C   sL  t tjdd}d}|jj|d}|jD ]}| |t|j	 ks*t
q*|jjd|d}|jD ]}| |ks`t
q`|jj|d}|jD ]}| |t|j	 kst
q|jjd|d}|jD ]}| |kst
q|jj|dd}|D ] }|jD ]}| |kst
qq|jj|dd}|D ]&}|jD ]}| |ks*t
q*q d S )Nr0   g?)widthT)r   r   )r   r   )r   rU   rV   r   rN   rC   r   	get_widthrd   rG   re   barh
get_height)rg   rh   r   rK   r   rf   r   r   r   test_bar_barwidth  s,    





z$TestDataFramePlots.test_bar_barwidthc              	   C   s  t tjdd}|jjddd}dd |jD }|dgd ksDt|jjdd	d
dddgd}dd |jd d D }|d	d
dddgkst|jjdt	dddddgd}dd |jD }|dgd kst|jjddddddgd}dd |jd d D }|dddddgkst|jjdd	d}|D ]*}dd |jD }|d	gd ks,tq,|jjdt	dddddgd}|D ]*}dd |jD }|dgd ks|tq|d S )Nr0   Fr   )r   bottomc                 S   s   g | ]}|  qS r   Zget_y.0pr   r   r   
<listcomp>@  s     z;TestDataFramePlots.test_bar_bottom_left.<locals>.<listcomp>   Tr    c                 S   s   g | ]}|  qS r   r   r   r   r   r   r   D  s     )r   leftc                 S   s   g | ]}|  qS r   get_xr   r   r   r   r   H  s     r!   r&   r   c                 S   s   g | ]}|  qS r   r  r   r   r   r   r   L  s     )r   r   c                 S   s   g | ]}|  qS r   r   r   r   r   r   r   Q  s     )r   r  c                 S   s   g | ]}|  qS r   r  r   r   r   r   r   V  s     )
r   rU   rV   rW   rN   rC   r   re   r   rw   )rg   rh   rK   rk   rf   r   r   r   test_bar_bottom_left=  s*      z'TestDataFramePlots.test_bar_bottom_leftc              	   C   s   t dtjdgdddgdddgd}|j }dddddddddg	}d	d
 |jD }||ks`t|jjdd}dd
 |jD }||kstdd
 |jD }dddddddddg	}||kstd S )Nr,      r0   r   r!   r&   rr   rs   rt   r   c                 S   s   g | ]}|  qS r   r   r   r   r   r   r   ]  s     z3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>Tr   c                 S   s   g | ]}|  qS r   r
  r   r   r   r   r   a  s     c                 S   s   g | ]}|  qS r   r   r   r   r   r   r   d  s     r   g      $@g      4@g      .@g      D@)r   rU   rx   rN   rC   r   re   )rg   rh   rK   expectedrk   r   r   r   test_bar_nanY  s    $
zTestDataFramePlots.test_bar_nanc                 C   sD  t tjddttdttdd}t tjddttdttdd}||fD ]}|j	 }|j
 }t|tdddd	d
dg | dkst|jd  dkst|jd  dkst|jj	dd}t|tdddd	d
dg | dkst|jd  dks(t|jd  dks`tq`d S )Nr?   r0   ZABCDEFZabcder   r   r   r!   r&   r   )g      g      @g      пr    g@Tr   g      @)r   rU   rV   r   rz   r   rX   ZCategoricalIndexrN   rC   r\   get_ticklocsrL   r   rw   r   re   r   r  )rg   Zdf1r   rh   rK   Zticksr   r   r   test_bar_categoricalh  s,    

z'TestDataFramePlots.test_bar_categoricalc              	   C   s   t tjddttjd d ddddgd}t|jj	ddd t|jj	d	d
d t
d}tjt|d |jj	dd W 5 Q R X t
d}tjt|d |jj	dd W 5 Q R X |jddddd}| j|d	dd d S )Nr?   r   r(   r)   r   r   r   r'   r   r!   z5scatter() missing 1 required positional argument: 'y'r*   r   z5scatter() missing 1 required positional argument: 'x'r   r   T)r(   r)   r   r   rI   r   )r   rU   rV   r   rX   rY   rZ   r   rN   r   reescaperQ   rR   	TypeErrorrO   )rg   rh   ri   rf   r   r   r   test_plot_scatter  s    


z$TestDataFramePlots.test_plot_scatterc              	   C   s\   t tjddgd}tddddj|d< d}tjt|d	 |j	d
ddd W 5 Q R X d S )Nr,   r   r   z
2014-01-01h)startfreqperiodsZdtimez9must be a string or a (real )?number, not 'datetime.time'r*   r   )r   r(   r)   )
r   rU   rV   r   r
   timerQ   rR   r  rN   r   r   r   r   &test_raise_error_on_datetime_time_data  s
    z9TestDataFramePlots.test_raise_error_on_datetime_time_datac                 C   s`   t tdddddd}tjddt|}t||d}t|jj	dd	d
 t|jj	ddd
 d S )Ni  r      W)r  r  r  r   )r}   valsr}   r  r'   )
r
   r   rU   rV   normalrd   r   r   rN   r   )rg   r}   r  rh   r   r   r   test_scatterplot_datetime_data  s
    z1TestDataFramePlots.test_scatterplot_datetime_datac                 C   s   t dddgdddgd}t|jjdd	d
 t|jjddd
 t dddgdd	dgd}t|jjdd	d
 t|jjddd
 d S )Nrr   rs   rt   r!   r&   r   r   r   r   r'   r   r   r   )r   r   rN   r   r   r   r   r   test_scatterplot_object_data  s    z/TestDataFramePlots.test_scatterplot_object_dataordered
categoriessetosa
versicolor	virginicac                 C   s   t ddgddgddgddgddggd	d
gd}tjdddddg||d|d< |jjdddd}|j\}|j}tdddg}|	 }t
|| tddddg}	|j}
t
|
|	 |}dd |j D }tdd t||D std S )Ngffffff@g      @g@r   g      @g	@g@g@lengthr   r   r!  r#  r"  )r  r   Zspeciesr   r   r(   r)   r         ?g      ?g      @r   r   r   c                 S   s   g | ]}|  qS r   get_text)r   ir   r   r   r     s     zLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>c                 s   s   | ]\}}||kV  qd S Nr   )r   r)  jr   r   r   	<genexpr>  s     zKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)r   rz   CategoricalrN   r   collectionscolorbarrU   rw   Z	get_ticksrL   r   Z_boundariesrK   Zget_ymajorticklabelsallr_   re   )rg   r  r   rh   rK   Zcolorbar_collectionr/  Zexpected_ticksZresult_ticksZexpected_boundariesZresult_boundariesZexpected_yticklabelsZresult_yticklabelsr   r   r   %test_scatterplot_color_by_categorical  s*     
z8TestDataFramePlots.test_scatterplot_color_by_categoricalzx, yr'   )r)   r(   )r)   r)   c                 C   s:   t ddddgtddddgd}t|jj||d d S )	Nr   r!   r&   r   r   r   r   r'   )r   rz   r-  r   rN   r   rg   r(   r)   rh   r   r   r   'test_plot_scatter_with_categorical_data  s    $z:TestDataFramePlots.test_plot_scatter_with_categorical_datac           
      C   s  ddl m} ttjjddddttjd d ddd	d
gd}|j	j
ddd	d|j	j
ddddg}|D ]R}|jd jjdkst| r|jd jj d	kstqf|jd jjd	ksftqfd}|j	j
ddd	|d}|jd jj|kst|j	j
ddd	dd}|jd jd kst|j	j
dddd}|jd jd ks:t| j|jdgd tddgddgd}ddddg}ddddg}t||g}|j	j
dd|d}t|jd  | tddg}	|j	j
dd|	dd d S ) Nr   )mpl_ge_3_4_0r3   )r?   r   )lowhighsizer?   r(   r)   r   r   r   r%  r   r!   ZGreys	cubehelix)r(   r)   r   colormapF)r(   r)   r   r/  redr   Z
facecolorsr&   r   r   r   r   rr   rs   Zspring)r(   r)   r   cmap)"pandas.plotting._matplotlib.compatr4  r   rU   rV   rb   rX   rY   rZ   rN   r   r.  r<  r   re   r/  rK   
get_ylabelZ_label_check_colorsrw   rL   r   Zget_facecolor)
rg   r4  rh   rf   rK   cmZred_rgbaZ
green_rgbaZ
rgba_arrayZfloat_arrayr   r   r   test_plot_scatter_with_c  s8    
$z+TestDataFramePlots.test_plot_scatter_with_cc                 C   sR   t tjdd dddgd}|jjdddd}tj|d j|jd 	 d	 d S )
Nr,   r&   r3   r   r   r   r   )r(   r)   r   r   )right)
r   rU   rV   rN   r   rL   r   valuesr.  Z	get_sizesr   r   r   r   test_plot_scatter_with_s  s    z+TestDataFramePlots.test_plot_scatter_with_sc                 C   s\   dd l }ttjdd dddgd}|j }|jjddd|d}|jd j	|ksXt
d S )	Nr   rB  r3   r   r   r   r   )r(   r)   r   norm)
matplotlibr   rU   rV   colorsZLogNormrN   r   r.  rF  re   )rg   mplrh   rF  rK   r   r   r   test_plot_scatter_with_norm  s
    
z.TestDataFramePlots.test_plot_scatter_with_normc                 C   s   dd l }ttjdd dddgd}|jjdddd}|jd j}|j	 |j
 f}|jj| }|jD ]}||||ksjtqjd S )	Nr   rB  r3   r   r   r   r   r%  )rG  r   rU   rV   rN   r   r.  rF  r   minmaxrH  Z	Normalizere   )rg   rI  rh   rK   Z	plot_normZcolor_min_maxZdefault_normvaluer   r   r   test_plot_scatter_without_norm$  s    
z1TestDataFramePlots.test_plot_scatter_without_normc                 C   s4  t tjddttjd d ddddgd}t|jj	 t|jj	dd	 t|jj	d
d
d t|jj	d
d t tjddttjd d t
dd}t|jj	 t ddgddgd}t|jj	}| j|dd |jj	ddd}| j|dddd t|jj}| j|dd |jjddd}| j|dddd d S )Nr?   r   onetwothreer   r   FlegendTr   r   r,      r   r   r   Z   r$   #   )rotfontsizer%   
xlabelsize
ylabelsize)yrot7      )r\  r[  rZ  )r   rU   rV   r   rX   rY   rZ   r   rN   rC   r`   rP   r   r   r   r   r   test_plot_bar0  s0    
z TestDataFramePlots.test_plot_barc           	      C   s.  |}|d }|  j}dd |D }t|jj}| | | t|j	
 tdt|d  t|jdt| ks|tt  |jjdd}| j|ddd	 t  t|jj}tdd
dg}|jj|d}|  j}dd |D }| | | t|j	
 | t|jdt| ks*td S )Nheightc                 S   s   g | ]}t |qS r   r   r   r   r   r   r   r   U  s     z3TestDataFramePlots.test_boxplot.<locals>.<listcomp>r   r@   (   rW  r   r%   r\  r?   )	positionsc                 S   s   g | ]}t |qS r   r   ra  r   r   r   r   h  s     )_get_numeric_datarG   r   rN   boxr   r]   rL   r   r\   r  rU   r   rd   r   re   r   rP   rw   )	rg   hist_dfrh   seriesnumeric_colslabelsrK   rf   re  r   r   r   test_boxplotQ  s.    
 
zTestDataFramePlots.test_boxplotc           	      C   s8  |}|  j}dd |D }|jjdddd}| j|dddd | | | t|jd	t| ksjt	t
|jjd
d
dd
d}| j|ddd | j|dd t||D ],\}}| | |g t|jd	kst	qtdddg}|jj|dd}| | | t|j | t|jd	t| ks4t	d S )Nc                 S   s   g | ]}t |qS r   r   ra  r   r   r   r   p  s     z<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>2   rE   F)rW  rX  vertr   r%   r\  r[  r@   T)r   r   rn  r   r&   )r   r&   r   r   r   r!   )re  rn  )rf  rG   rN   rg  rP   r   get_yticklabelsrd   r   re   r   rO   r   r_   rU   rw   rL   r   r   r  )	rg   rh  rh   rj  rk  rK   rf   r   re  r   r   r   test_boxplot_verticalm  s0    
z(TestDataFramePlots.test_boxplot_verticalc              	   C   s   t tjddttjd d ddddgd}d}tjt	|d	 |j
jd
d W 5 Q R X |j
jdd}| |d |j
jdd}| |d |j
 }| |d |j
jdd}| |d d S )Nr?   r   rO  rP  rQ  r   r   z2return_type must be {None, 'axes', 'dict', 'both'}r*   Z
not_a_type)return_typedictrf   Zboth)r   rU   rV   r   rX   rY   rZ   rQ   rR   r   rN   rg  Z_check_box_return_type)rg   rh   ri   rk   r   r   r   test_boxplot_return_type  s     

z+TestDataFramePlots.test_boxplot_return_typec                 C   s   t tjdd}t|jdd}dd |jD }| j||d | j|dd	 |jdd
dd}| j|d
ddd t|jdddd}| j	|ddd |jdddd}| j
|dd d S )Nr3   r   kder   c                 S   s   g | ]}t |qS r   r   ra  r   r   r   r     s     z2TestDataFramePlots.test_kde_df.<locals>.<listcomp>rk  r   r$   r  r0   )r   rW  rX  rY  T)r   r   r   r   r   )r   r   r   r   r   )r   rU   rV   r   r   rN   rG   _check_legend_labelsrP   rO   r   )rg   rh   rK   r  rf   r   r   r   test_kde_df  s     zTestDataFramePlots.test_kde_dfc                 C   s0   t tjjdd}tj|jd< t|jdd d S )N)r3   r   r7  r   r   ru  rv  )r   rU   rV   uniformrx   locr   rN   r   r   r   r   test_kde_missing_vals  s    z(TestDataFramePlots.test_kde_missing_valsc                    sV  ddl m  ttjdd}|d }t|jj}dd |j	D }| j
||d t|jjdddd	}| j|dd
d | j|dd |jjdd}| j|ddd t  |jjdddd} fdd| D }t|d  d t  |jjddd} fdd| D }t|d  d t  |jjdddd}| j|dddd d S )Nr   	Rectangler3   r   c                 S   s   g | ]}t |qS r   r   ra  r   r   r   r     s     z3TestDataFramePlots.test_hist_df.<locals>.<listcomp>rw  T)r   r   r   r   r   r   r   rb  rc  rd  )
cumulativebinsdensityc                    s   g | ]}t | r|qS r   r   r   r(   r  r   r   r     s     
 r    r   )r  r  c                    s   g | ]}t | r|qS r   r  r  r  r   r   r     s     
 r   g      Y@rm  rE   
horizontal)rW  rX  orientationro  )Zmatplotlib.patchesr  r   rU   rV   r   r   rN   r   rG   rx  rO   r   rP   rL   r   Zget_childrenassert_almost_equalr   )rg   rh   ri  rK   r  rf   Zrectsr   r  r   test_hist_df  s6    zTestDataFramePlots.test_hist_dfweights皙?r3   )shape)r3   r!   c                 C   sz   t jd tttddgt jdd}t|jd|d}t|jdd}d	d
 |j	D }dd
 |j	D }t
|| d S )Nr   rr   rs   r!   r3   r   )r   r  rv  c                 S   s   g | ]}|  qS r   r
  r   patchr   r   r   r     s     z8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>c                 S   s   g | ]}d |   qS )r  r
  r  r   r   r   r     s     )rU   rV   seedr   rs  r_   r   r   rN   r   rL   r  )rg   r  rh   r   r   Zpatch_height_with_weightsZexpected_patch_heightr   r   r   test_hist_weights  s     z$TestDataFramePlots.test_hist_weightsNc           
      C   s   t dd |D }t dd |D }t dd |D }t dd |D }	|d k	rhtj||dd |d k	rtj||dd |d k	rtj||dd |d k	rtj|	|dd d S )Nc                 S   s   g | ]}|  qS r   r   r   r   r   r   r     s     z7TestDataFramePlots._check_box_coord.<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     c                 S   s   g | ]}|  qS r   )r   r   r   r   r   r     s     F)Zcheck_dtype)rU   rw   rL   r   )
rg   r   
expected_y
expected_h
expected_x
expected_wZresult_yZresult_heightZresult_xZresult_widthr   r   r   _check_box_coord  s    z#TestDataFramePlots._check_box_coordc                 C   s  t ttdddddgtdddd	d
gttdddddgtdddddgttdddddgtd
d	dddgddddgd}t tttjdddddgtddddd	d
gttdtjddddgtddddddgttdddtjddgtd
d	ddddgddddgd}||fD ]h}|jjdd}| j|jd d tdddddgtdddd	d
gd | j|jdd tdddddgtdddddgd | j|jdd  tdddddgtd
d	dddgd |jjddd}| j|jd d tdddddgtdddd	d
gd | j|jdd tdddd	d
gtdddddgd | j|jdd  tdddddgtd
d	dddgd |jjdddd}| j|d jtdddddgtdddd	d
gd | j|d jtdddddgtdddddgd | j|d jtdddddgtd
d	dddgd |jjddd}| j|jd d tdddddgtdddd	d
gd | j|jdd tdddddgtdddddgd | j|jdd  tdddddgtd
d	dddgd |jjdddd}| j|jd d tdddddgtdddd	d
gd | j|jdd tdddd	d
gtdddddgd | j|jdd  tdddddgtd
d	dddgd |jjddddd}| j|d jtdddddgtdddd	d
gd | j|d jtdddddgtdddddgd | j|d jtdddddgtd
d	dddgd q>d S ) Nr   r!   r&   r   r0   r,   	   rE   r@   r?   r	  rr   rs   rt   r   )r  r   )r  r  T)r  r         r   rT     )r  r   r   r  )r  r  )r  r  )r  r   r  )r  r   r   r  )	r   rU   repeatrw   rx   rN   r   r  r   )rg   Z	normal_dfZnan_dfrh   rK   rf   r   r   r   test_hist_df_coord  s    ***	      z%TestDataFramePlots.test_hist_df_coordc                 C   s(   t tjdd }t|jdd d S )Nr3   r   TrR  )r   rU   rV   r   cumsumr   rN   r   r   r   r   test_plot_int_columns  s    z(TestDataFramePlots.test_plot_int_columnsc                 C   s   dd l m} | }ttjdd}ddddddddddgddgfD ]X}|  |d	 |j	|d
}t
| d t| D ]\}}| || kstqqJd S )Nr   r3   r&   ^+o)r   r   r!   r   r   o   )style)matplotlib.pyplotpyplotgcfr   rU   rV   r   Zclfadd_subplotrN   	enumerater   rd   Z
get_markerre   )rg   rc   rj   rh   markersrK   idxrT   r   r   r   test_style_by_column  s    

 z'TestDataFramePlots.test_style_by_columnc                 C   sP   t ddg}| }| d ks$t|jdd}|  d  dksLtd S )Nr   r!   TrR  r    )r   rN   
get_legendre   	get_textsr(  )rg   r   rK   r   r   r   test_line_label_none  s
    z'TestDataFramePlots.test_line_label_nonezprops, expected)ZboxpropsZboxes)ZwhiskerpropsZwhiskers)ZcappropsZcaps)ZmedianpropsZmediansc                 C   sP   t dd dD }|ddii}|jjf ddi|}|| d  dksLtd S )	Nc                 S   s   i | ]}|t jd qS r  )rU   rV   )r   r   r   r   r   
<dictcomp>  s      zHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ABCcolorZC1rr  rs  r   )r   rN   rg  	get_colorre   )rg   propsr  rh   Zkwdrk   r   r   r   !test_specified_props_kwd_plot_box  s    z4TestDataFramePlots.test_specified_props_kwd_plot_boxc                 C   s   t tdddgtdddtdddtdddgd	gd
}| }|jd  }|d |d k sdt|jd  }t	
|tdddg d S )Nr   r   r     r,   r   r  rE   testr   r   )r   rU   rw   r   rN   r   r   re   r   rL   r   )rg   rh   rK   r2   Zydatar   r   r   test_unordered_ts  s     z$TestDataFramePlots.test_unordered_tsc                 C   sj   t ddddgi}tjjD ]}|j|d t|j|  qdD ]&}|jdd|d t|j|dd q>d S )Nr(   r   r!   r&   rv  )r   r   )r   r   PlotAccessor_common_kindsrN   getattr)rg   rh   r   r   r   r   test_kind_both_ways  s    z&TestDataFramePlots.test_kind_both_waysc              
   C   sH   t td}tjjD ].}d}tjt|d |j|d W 5 Q R X qd S )Nabcdno numeric data to plotr*   rv  )	r   rX   r   r  r  rQ   rR   r  rN   rg   rh   r   ri   r   r   r   test_all_invalid_plot_data  s
    z-TestDataFramePlots.test_all_invalid_plot_datac                 C   s   t dn ttjddtd}d|tj|jd dk< t	j
jD ].}d}tjt|d	 |j|d
 W 5 Q R X qDW 5 Q R X t d\ ttjddtd}d|tj|jd dk< tjtdd	 |jdd
 W 5 Q R X W 5 Q R X d S )Nr   r,   r!   rm   r   r   r&  r  r*   rv  r   )rL   r   r   rU   rV   r   ry   rW   r  r   r  r  rQ   rR   r  rN   r  r   r   r    test_partially_invalid_plot_data  s    "z3TestDataFramePlots.test_partially_invalid_plot_datac              	   C   s@   t tjdd}d}tjt|d |jdd W 5 Q R X d S )Nr,   r!   z*invalid_plot_kind is not a valid plot kindr*   Zinvalid_plot_kindrv  )r   rU   rV   r   rQ   rR   r   rN   r   r   r   r   test_invalid_kind  s    z$TestDataFramePlots.test_invalid_kindzx,y,lblrs   rt   rr   r   r   r   c              	   C   sJ   t ddgddgddgd}tjtdd	 |j|||d
 W 5 Q R X d S )Nr   r!   r&   r   r0   r?   r	  x must be a label or positionr*   r(   r)   r   r   rQ   rR   r   rN   )rg   r(   r)   lblrh   r   r   r   test_invalid_xy_args  s    	z'TestDataFramePlots.test_invalid_xy_argsc              	   C   sR   t ddgddgddgd}d}tjt|d	 |jd
ddgdd W 5 Q R X d S )Nr   r!   r&   r   r0   r?   r	  z.label should be list-like and same length as yr*   rr   rs   rt   Z	bad_labelr  r  r   r   r   r   test_bad_label  s    z!TestDataFramePlots.test_bad_labelzx,yr   c              	   C   sL   t dddgdddggtdd}tjtd	d
 |j||d W 5 Q R X d S )Nr   r&   r0   r!   r   r?   ZAABr   r  r*   r'   )r   rX   rQ   rR   r   rN   r2  r   r   r   test_invalid_xy_args_dup_cols  s     z0TestDataFramePlots.test_invalid_xy_args_dup_colszx,y,lbl,colorsr:  bluer   r   r!   Zbokehcythongreenyellowc                 C   sl   t ddgddgddgd}t|jd||d	 |j||||d
}t|jt|ksVt| j| |d d S )Nr   r!   r&   r   r0   r?   r	  rr   r  )r(   r)   r   r  Z
linecolors)r   r   rN   rd   r   re   r?  r   )rg   r(   r)   r  rH  rh   rK   r   r   r   test_y_listlike  s
    
z"TestDataFramePlots.test_y_listlikezx,y,colnamesc                 C   s0   t ddgddgd}||_t|j||d d S )Nr   r!   r&   r   r   r'   )r   rG   r   rN   )rg   r(   r)   Zcolnamesrh   r   r   r   test_xy_args_integer   s    z'TestDataFramePlots.test_xy_args_integerc                 C   s   t tjjddtjjddtdtjjdd d}|jjdddd}t|jdks\t	|jjddd	d
}t|d j
jdkst	| j|ddd d S )Nr  rz  r	  rr   rs   r,   )r(   r)   Zgridsizer   T)r(   r)   r   r   r!   rI   r   )r   rU   rV   r|  r   rN   r   rd   r.  re   figurerf   rO   )rg   rh   rK   rf   r   r   r   test_hexbin_basic'  s    z$TestDataFramePlots.test_hexbin_basicc                 C   s   t tjjddtjjddtdtjjdd d}|jjdddd}t|jdks\t	|jjdddtj
d	}t|jdkst	d S )
Nr  rz  r	  rr   rs   rt   )r(   r)   rt   r   )r(   r)   rt   Zreduce_C_function)r   rU   rV   r|  r   rN   r   rd   r.  re   Zstdr   r   r   r   test_hexbin_with_c<  s    z%TestDataFramePlots.test_hexbin_with_czkwargs, expectedZBuGnr9  r8  r<  ZYlGnc                 C   sj   t tjjddtjjddtdtjjdd d}|jjf ddd|}|jd jj	|ksft
d S )Nr  rz  r	  rr   rs   r'   r   )r   rU   rV   r|  r   rN   r   r.  r<  r   re   )rg   kwargsr  rh   rK   r   r   r   test_hexbin_cmapK  s    	z#TestDataFramePlots.test_hexbin_cmapc              	   C   sp  t tjdddddgdddd	d
gd}d}tjt|d |j  W 5 Q R X t	|jjdd}| 
|j|j t	|jjdd}| 
|j|j t	|jjddd}t|t|jkst|D ]}| 
|j|j qt||jD ]\}}| |kstqdddddg}dddddg}t	|jjdd||d}t|t|jksBt|D ]$}| 
|j| | j|j|d qFd S )Nr0   r&   XYZr   r   r   r   erF   z/pie requires either y column or 'subplots=True'r*   r   r!   Tr   rr   rs   rt   ru   rv   r   gm)r   r   rk  rH  r;  )r   rU   rV   rW   rQ   rR   r   rN   r   r   r   textsr.   rd   rG   re   r_   r>  r?  r   )rg   rh   ri   rK   rf   ylabelrk  Z
color_argsr   r   r   test_pie_df^  sF    zTestDataFramePlots.test_pie_dfc              	   C   s  dd l }ttjdd}tdD ]}tj|j||f< q"| jj	dd\}}i }|j
dkr`ddi}td   |jjf d|dd| W 5 Q R X dd	d
dg}t|D ]r\}}t|}	d|	|< dd |jD }
|
|	kstdd |  D }|d | ||d d   }||kstqd S )Nr   r   )Zncolsz3.3	normalizeT)r   rK   rS  0123r  c                 S   s   g | ]}|  qS r   r'  r  r   r   r   r     s     z6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>c                 S   s   g | ]}|  qS r   r'  r  r   r   r   r     s     r   )rG  r   rU   rV   rW   r`   rx   Zilocrc   r   __version__rL   assert_produces_warningrN   r   r  rX   r  re   r  r  )rg   rI  rh   r)  rj   rf   r  Zbase_expectedrK   r  rk   Zresult_labelsexpected_labelsr   r   r   test_pie_df_nan  s&    
$z"TestDataFramePlots.test_pie_df_nanc              	   C   s  t dt dddd}t|}t dd t dd d}t|}t|j|dd}| j|dd	d
 t|j|ddd}| j|dd	d
 t|j|dd}| j|dd	d
 t|d j||ddd}| j|d	d	d
 t|d jt dd d}| j|ddd
 t|jt dd d}| j|dd	d
 dD ]`}| }t dd ||< t|j|d}| j|dd	d
 t|jdd|d}| j|ddd
 q*t	t
 |jt jdd W 5 Q R X tdgd dgd d}t	t |j|d W 5 Q R X d S )Nr  r   r    r'   皙?皙?T)yerrr   r!   xerrr  )r  r   r   )r  r   r   rC   )r  r  r   r   r)   r  )r!   r  )r  u   誤差r(   )r)   r(   r  r^  zzz)rU   r   r   onesr   rN   _check_has_errorbarscopyrL   Zexternal_error_raisedr   rV   r   r  )rg   r   rh   d_errdf_errrK   r  Zs_dfr   r   r   test_errorbar_plot  sD        z%TestDataFramePlots.test_errorbar_plotrC   r   c                 C   s$  t dt dddd}t|}t dd t dd d}t|}t|j|d |d}| j|dd	d
 t|j||d}| j|dd	d
 t|j|||d}| j|d	d	d
 t|j|d |d |d}| j|d	d	d
 t|jdd|d}| j|d	d	d
 t|jd||d|d}| j|ddd
 d S )Nr  r   r    r'   r  r  r(   r  r   r!   r  )r  r  r   )r  r  r   T)r   r  r  r   r   r   )rU   r   r   r  r   rN   r  )rg   r   r   rh   r  r  rK   rf   r   r   r   "test_errorbar_plot_different_kinds  s.    z5TestDataFramePlots.test_errorbar_plot_different_kindszIterator is consumed)r   rR   c              	   C   sd   t  R tdtdddd}t|}t|jtdt	|d}| j
|ddd W 5 Q R X d S )	Nr  r   r    r'   r  r  r!   r  )warningscatch_warningsrU   r   r   r   rN   	itertoolsr  rd   r  )rg   r   rh   rK   r   r   r   test_errorbar_plot_iterator  s
    
z.TestDataFramePlots.test_errorbar_plot_iteratorc                 C   sr   t ttjdd}t ttjdd}t|j|d}| j|ddd t|jddd}| j|ddd d S )Nr,   r!   r  r   r  r   )r)   r  )r   rU   absrV   r   r   rN   r  )rg   rh   r  rK   r   r   r   'test_errorbar_with_integer_column_names   s    z:TestDataFramePlots.test_errorbar_with_integer_column_namesc           
      C   s.  t ttjdd}t ttjddddgd}ddg}|D ]$}t|j||d}| j|ddd	 qDtd
ddd}|j	|dd |j	|dd t|j|dd}| j|ddd	 t
dt
dddd}t |}tdd tdd d}t |}||fD ]$}	t|j|	d}| j|ddd	 qd S )Nr,   r&   r!   r   r   rT   rC   r  r  1/1/2000M)r  r  T)Zinplacer  r    r'   r  r  )r(   r   r  r   )r   rU   r  rV   r   r   rN   r  r
   r   r   r  )
rg   rh   r  kindsr   rK   ixr   r  errr   r   r   "test_errorbar_with_partial_columns	  s$     z5TestDataFramePlots.test_errorbar_with_partial_columnsc           	      C   s.  t dt dddd}t dd t dd d}tddd	d
}t||d}t||d}t|j||d}| j|ddd t|j||d}| j|ddd t|jd|d |d}| j|ddd t|jdd|d}| j|ddd t|j||d}| j|ddd t|jd||dd}| j|ddd d S )Nr  r   r    r'   r  r  r  z1/1/2001r  )r  r-   r  r!   r  r)   r(   )r)   r  r   r   T)r   r   r  r   )rU   r   r  r
   r   r   rN   r  )	rg   r   r   r  r  r   Ztdf_errrK   rf   r   r   r   test_errorbar_timeseries   s.    z+TestDataFramePlots.test_errorbar_timeseriesc              	   C   s   t jd t jddd}tt dddj}|j||d d}|j	d 
 d jd d df }|dd d df t ddg }t|| td	}tjt|d
 |j|jd W 5 Q R X t  d S )Nr   r&   r!   r0   rT  )r  r  r   r    zCAsymmetrical error bars should be provided with the shape (3, 2, 5)r*   r  )rU   rV   r  rW   r   r   ZreshapeTrN   r.  	get_pathsZverticesrw   rL   r  r  r  rQ   rR   r   r   )rg   r  rh   rK   Zyerr_0_0Zexpected_0_0ri   r   r   r   test_errorbar_asymmetricalB  s      z-TestDataFramePlots.test_errorbar_asymmetricalc              	   C   s   t tjddttjd d d}t|jdd t|j|d t	
d @ | }t|jdksftt||j t|jdkstW 5 Q R X d S )Nr,   r&   r-   T)tabler   r   )r   rU   rV   rW   rX   rY   rZ   r   rN   rL   r  rd   Ztablesre   r   r  r  r   r   r   r   
test_tableW  s    $zTestDataFramePlots.test_tablec                    s  t ttjddtdddgd}t ttjddd tdddgd}t|jjddd j	 ddd t|jjdd|d	 j	 d
dd t|jjdd|d j	 dd
d t|jjdd||d j	 d
d
d d fdd	}t ttjdddddddgd}|jjdddddd j	 d
d
d | j
ddd | j
ddd |jjddddd j	 dd
d | j
ddd d S )Nr0   r!   r(   r)   r   r'   r   r  )r(   r)   r  r   )r(   r)   r  )r(   r)   r  r  has_xerrc                    sx   g } fddj D d }|D ]"}t|r8|| q || q fdd|D }j|t|gt| d d S )Nc                    s   g | ]}t | d r|jqS )F)r  r   ra  has_errr   r   r   w  s      z[TestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_color.<locals>.<listcomp>r   c                    s   g | ]}| j kr|qS r   )r.  r  rK   r   r   r   }  s     
 r  )
containersr   extendappendr?  rU   rw   rd   )r  r  r  r   ZerrselZ	err_linesrK   rg   r  r   _check_errorbar_coloru  s     zGTestDataFramePlots.test_errorbar_scatter.<locals>._check_errorbar_colorr,   r   r   r   r   r  r   r:  )r(   r)   r  r  r   r  Zhas_yerrr  )r(   r)   r  r  )r
  )r   rU   r  rV   r   r`   r   rN   r   r  r  )rg   rh   r  r  r   r  r   test_errorbar_scatterc  s<         z(TestDataFramePlots.test_errorbar_scatterc              	   C   sH   t dddgdd}tjttfdd |jdd	d
dd W 5 Q R X d S )Nr   r!   r&   r   r   z'unknown' is not ar*   r   r   unknownr   )r(   r)   r9  r   )r   rQ   rR   r   KeyErrorrN   r   r   r   r   test_scatter_unknown_colormap  s    z0TestDataFramePlots.test_scatter_unknown_colormapc              
      s  dd l m} |d t \}}tddddddgddddddgddddddgddddddgd	} fd
d}|D ]}|jddd|dd qr||  || t  t \}}t	t
 |jd|dd}W 5 Q R X || t  t \}}|D ]}|jddd|d q||  |D ]T}t|jdks:t j| dd  j| dd  j|jdddd q"t  d S )Nr   r0  r   r!   r&   r   r0   r?   r   r   r   r   c                    s   | D ](}t |jdkst j| dd q| d | d fD ],} j| dd  j|jdddd q>| d | d fD ],} j| dd  j|jdddd q|d S )	Nr   Tr7   r   r!   Fr9   r&   )rd   r   re   r[   rp  r]   rf   rK   rg   r   r   _check  s    z5TestDataFramePlots.test_sharex_and_ax.<locals>._checkr   r   r5   T)r(   r)   r5   rK   sharex)r   rK   r  r(   r)   r5   rK   r7   r9   )r  r  r   _generate_4_axes_via_gridspecr   rN   tight_layoutr  rL   r  UserWarningrd   r   re   r[   rp  r]   rg   rc   gsrf   rh   r  rK   r   r  r   test_sharex_and_ax  s>    

	

z%TestDataFramePlots.test_sharex_and_axc              
      s  dd l m} t \}}tddddddgddddddgddddddgddddddgd} fd	d
}|D ]}|jddd|dd qh||  || t  t \}}t	t
 |jd|dd}W 5 Q R X ||  || t  t \}}|D ]}|jddd|d q||  |D ]T}t|jdks>t j| dd  j| dd  j|jdddd q&d S )Nr   r   r!   r&   r   r0   r?   r  c                    s   | D ]>}t |jdkst j| dd  j|jdddd q| d | d fD ]} j| dd qT| d | d fD ]} j| dd q|d S )	Nr   Tr7   r9   r   r!   r&   F)rd   r   re   r[   r]   rp  r  r  r   r   r    s    z5TestDataFramePlots.test_sharey_and_ax.<locals>._checkr   r   r5   T)r(   r)   r5   rK   r   )r   rK   r   r  r7   r9   )r  r  r  r   rN   r  r  rL   r   r  r   rd   r   re   r[   rp  r]   r!  r   r  r   test_sharey_and_ax  s<    
	


z%TestDataFramePlots.test_sharey_and_axc           	   
   C   s   ddl }ddl}i }tjjD ]}i }|dkrpttjjddtjjddt	dtjjdd d}ddd	}n|d
krt
  }nt
 }||jf d|i|||< qt
  |  d}|D ](}tjt|d || j W 5 Q R X qdS )z3Check that every plot type gets properly collected.r   N)r   r   r   r  rz  r	  rr   rs   r'   r   r   z)weakly-referenced object no longer existsr*   )gcweakrefr   r  Z
_all_kindsr   rU   rV   r|  r   rL   rM   r  proxyrN   r   ZcollectrQ   rR   ReferenceErrorr   )	rg   r%  r&  resultsr   argsrh   ri   keyr   r   r   test_memory_leak   s.     z#TestDataFramePlots.test_memory_leakc           
   	      sB  dd l m  dd lm ttjdtdddd}t	tjdd|j
tdd} fd	d
} fdd}| | fD ]\}}|j|d}t|jdkst|j|d}t|jdkst||fD ]>}| j| dd | j| dd | j|jdddd qt  qz| | fD ]\}}|jd||gd}t|jdksJtt|jdks^t|D ]@}| j| dd | j| dd | j|jdddd qbt  q| \}}tt |jd||gddd}W 5 Q R X t|d jdkstt|d jdkst||fD ]}| j| dd q| j|d  dd | j|d jdddd | j|d  dd | j|d jdddd t  | \}}tt |jd||gddd}W 5 Q R X t|d jdkstt|d jdkst| j|d  dd | j|d  dd ||fD ].}| j| dd | j|jdddd q:t   fdd}	|	 }t	tjdd|j
tdd}|jd|d}|D ]T}t|jdkst| j| dd | j| dd | j|jdddd qt  |	 }tt |jd|ddd}W 5 Q R X |D ]}t|jdksFtqF|d |d fD ]}| j| dd qr|d |d fD ]}| j| dd q|d |d fD ].}| j| dd | j|jdddd q|d |d fD ].}| j| dd | j|jdddd qt  d S )Nr   r,   r  )r  r-   r!   ABr   c                     sL     dd}  }|| d dd d f }|| dd d f }||fS )Nr&   r   r!   GridSpecr  r  r"  rj   r   r   gridspecrc   r   r   _get_vertical_grid0  s
    zHTestDataFramePlots.test_df_gridspec_patterns.<locals>._get_vertical_gridc                     sL     dd}  }|| d d d df }|| d d df }||fS )Nr   r&   r!   r.  r0  r1  r   r   _get_horizontal_grid7  s
    zJTestDataFramePlots.test_df_gridspec_patterns.<locals>._get_horizontal_gridr  r   Tr7   r9   rJ   )r   rK   r  r   Fc                     st     dd}  }|| d dd df }|| d ddf }|| dd df }|| d }||||fS )Nr&   r!   r"   r.  )r"  rj   r   r   Zax3Zax4r1  r   r   _get_boxed_gridt  s    zETestDataFramePlots.test_df_gridspec_patterns.<locals>._get_boxed_gridr   ZABCDr&   )matplotlib.gridspecr2  r  r  r   rU   rV   r   r
   r   r.   rX   rN   rd   r   re   r[   rp  r]   rL   r   r  r   )
rg   tsrh   r3  r4  r   r   rK   rf   r5  r   r1  r   test_df_gridspec_patterns'  s    

 
 	z,TestDataFramePlots.test_df_gridspec_patternsc                 C   s4   | j tdddgdddgdtjjdddd	 d S )
Nr   r!   r&   r   r   r   r   r'   )kws)Z_check_grid_settingsr   r   r  Z_dataframe_kindsr  r   r   r   test_df_grid_settings  s
    z(TestDataFramePlots.test_df_grid_settingsc           	      C   s@  | j  \}}|ddddg ttjdj|d ttj	dtj	dd}| j 
 }|d}|jd|dd	dd
d | j  \}}ddlm} ||}|jdddd}ttjdj|d ttjdj|d | j  \}}ddlm} ||dddd}ttjdj|d ttjdj|d d S )Nr  r,   r  rE   r   )r   r   r   r   r   r   r   Zhsv)r   rK   r(   r)   r   r<  r   )make_axes_locatablerC  z5%g?)r7  pad)
inset_axesz30%r   r&   )r   r`  r}  )rc   r   Zadd_axesr   rU   rV   rW   rN   r   r   r  Zmpl_toolkits.axes_grid1r;  Zappend_axesZ%mpl_toolkits.axes_grid1.inset_locatorr=  )	rg   rj   rK   rh   r;  dividerZcaxr=  Ziaxr   r   r   test_plain_axes  s$    

z"TestDataFramePlots.test_plain_axesmethodc                 C   sp   t tjddtddjdd djdd d	}d
}ddg}||dd}t|j|f |}| j|j	|d d S )NrT  r!   r-  r   c                 S   s
   | j  S r*  )rs   r  rh   r   r   r   r     r   zBTestDataFramePlots.test_secondary_axis_font_size.<locals>.<lambda>rt   c                 S   s
   | j d S )Ng?rB  rA  r   r   r   r     r   )ru   r  rt   ru   T)r   rX  Z
mark_right)rf   r[  )
r   rU   rV   r   rX   Zassignr  rN   rP   r   )rg   r@  rh   rX  r   r  rK   r   r   r   test_secondary_axis_font_size  s    z0TestDataFramePlots.test_secondary_axis_font_sizec                 C   s   t dddgdddgdddgd	}|jjd
d}|dd dd | D }tt|| }|d dkspt|d dkst|d dkstd S )Nr&   r!   r  r      ZMondayZTuesdayZ	Wednesday)ZsalesZvisitsdayrE  r   r    c                 S   s   g | ]}|  qS r   r'  r   tr   r   r   r     s     zATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>r   r   r   )	r   rN   r   set_xlimr]   rs  r_   
get_xticksre   )rg   rh   rK   xticklabelslabels_positionr   r   r   test_x_string_values_ticks  s    z-TestDataFramePlots.test_x_string_values_ticksc                 C   s   t ddgddgg}ttjddddg|d}| }|d	d d
d | D }t	t
|| }|d dkszt|d dkst|d dkst|d dkstd S )Nr  i  r   r!   r   rr   rs   rF   r    c                 S   s   g | ]}|  qS r   r'  rF  r   r   r   r     s     zETestDataFramePlots.test_x_multiindex_values_ticks.<locals>.<listcomp>z	(2012, 1)r   z	(2012, 2)r   z	(2013, 1)r   z	(2013, 2)r   )r   Zfrom_productr   rU   rV   r   rN   rH  r]   rs  r_   rI  re   )rg   r.   rh   rK   rJ  rK  r   r   r   test_x_multiindex_values_ticks  s    z1TestDataFramePlots.test_x_multiindex_values_ticksc                 C   sL   t ddgddgd}|j|d}| }|d dk s8t|d dksHtd S )Nr!   r   r   r-   rv  r   )r   rN   r   re   )rg   r   rh   rK   xlimsr   r   r   test_xlim_plot_line  s
    z&TestDataFramePlots.test_xlim_plot_linec                 C   s   | j  \}}ddddg}tddddgdd	dd
gddddgddddgd|d}|dddg jj|dd |dg j|dd | }|d dk st|d dkstdd | D }||kstd S )NZk1Zk2Zk3Zk4i  r   i  i  ix  i  i@  i  r   r&   r   )s1s2s3r   r-   rP  rQ  rR  F)rK   r   r   T)rK   r   r   c                 S   s   g | ]}|  qS r   r'  rF  r   r   r   r     s     zWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)rc   r   r   rN   rC   r   re   r]   )rg   rj   rK   Zindexesrh   rN  rJ  r   r   r   0test_xlim_plot_line_correctly_in_mixed_plot_type  s"    



	zCTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_typec                 C   sl   t dgtd}|jst| }t| dks4t| d }t| dksTtt| dkshtd S )NZfoo)rG   rn   r   r   )	r   intemptyre   rN   rd   r   r   r   )rg   rh   rK   rT   r   r   r   test_plot_no_rows  s    
z$TestDataFramePlots.test_plot_no_rowsc              	   C   s4   t dddg}tjtdd |  W 5 Q R X d S )Nr   r   r   r  r*   )r   rQ   rR   r  rN   r   r   r   r   test_plot_no_numeric_data!  s    z,TestDataFramePlots.test_plot_no_numeric_data)rT   rC   r   r   ru  r  r   r   c                 C   s   t dt dd t dd t dt dd}t|}|jddg|d}t|dks`tdd	gd
dgdgf}t||D ]<\}}|dkr| j||d |dkr~t|jt|ks~tq~d S )Nr,   r   )r   r   r   r   r  )r   r  )r   r   r   r   r&   r   r  r   r   r   r   rw  rT   )	rU   r   r   rN   rd   re   r_   rx  r   )rg   r   r   rh   rf   r  rK   rk  r   r   r   test_group_subplot&  s    z%TestDataFramePlots.test_group_subplotc              	   C   s<   t td}d}tjt|d |jdgd W 5 Q R X d S )Nr   z!An iterable subplots for a Seriesr*   r   rH   )r   r`   rQ   rR   NotImplementedErrorrN   )rg   Zserri   r   r   r   (test_group_subplot_series_notimplemented>  s    z;TestDataFramePlots.test_group_subplot_series_notimplementedc              	   C   sL   t tdtddgd}d}tjt|d |jdgd W 5 Q R X d S )Nr!   r  )r   r!   r   z6An iterable subplots for a DataFrame with a MultiIndexr*   rH   )	r   rU   eyer   ra   rQ   rR   r[  rN   r   r   r   r   ,test_group_subplot_multiindex_notimplementedD  s    z?TestDataFramePlots.test_group_subplot_multiindex_notimplementedc              	   C   sF   t tdddgd}d}tjt|d |jdgd W 5 Q R X d S )Nr!   r   r   z4An iterable subplots for a DataFrame with non-uniquer*   rZ  rH   )r   rU   r]  rQ   rR   r[  rN   r   r   r   r   0test_group_subplot_nonunique_cols_notimplementedJ  s    zCTestDataFramePlots.test_group_subplot_nonunique_cols_notimplementedzsubplots, expected_msg){   z(subplots should be a bool or an iterable)r   !each entry should be a list/tuple))r   ra  )rZ  ra  c              	   C   sH   t dt dd}t|}tjt|d |j|d W 5 Q R X d S )Nr,   r   r*   rH   rU   r   r   rQ   rR   r   rN   )rg   r   Zexpected_msgr   rh   r   r   r   test_group_subplot_bad_inputP  s    z/TestDataFramePlots.test_group_subplot_bad_inputc              	   C   sJ   t dt dd}t|}tjtdd |jdgd W 5 Q R X d S )Nr,   r   z Column label\(s\) \['bad_name'\]r*   )r   Zbad_namerH   rb  rg   r   rh   r   r   r   &test_group_subplot_invalid_column_namec  s    z9TestDataFramePlots.test_group_subplot_invalid_column_namec              	   C   sT   t dt dt dd}t|}tjtdd |jddgd W 5 Q R X d S )Nr,   )r   r   r   zshould be in only one subplotr*   r   )r   r   rH   rb  rd  r   r   r   $test_group_subplot_duplicated_columnj  s    z7TestDataFramePlots.test_group_subplot_duplicated_column)rg  r   r   c              	   C   sL   t dt dd}t|}tjtdd |jdg|d W 5 Q R X d S )Nr,   r   z1When subplots is an iterable, kind must be one ofr*   rX  rb  )rg   r   r   rh   r   r   r   test_group_subplot_invalid_kindq  s     z2TestDataFramePlots.test_group_subplot_invalid_kindz index_name, old_label, new_label)Nr  new)oldri  rh  )Nr  r  )Nr  r   r  c                 C   s   t ddgddggddgd}||j_|j|d}| |ks@t| dksPt|j|||d	}| t|kstt| t|kstd S )
Nr   r!   r0   Type AType Br   rv  r  )r   r  xlabel)r   r.   r   rN   
get_xlabelre   r>  str)rg   r   Z
index_nameZ	old_labelZ	new_labelrh   rK   r   r   r   (test_xlabel_ylabel_dataframe_single_plotz  s    z;TestDataFramePlots.test_xlabel_ylabel_dataframe_single_plotzxlabel, ylabel)NN)X LabelN)NY Label)rp  rq  r   r   c                 C   st   d}d}t ddgddgg||gd}|j|||||d}| |d krJ|n|ksTt| |d krf|n|ksptd S )Nrj  rk  r   r!   r0   r   )r   r(   r)   rl  r  )r   rN   rm  re   r>  )rg   r   rl  r  ZxcolZycolrh   rK   r   r   r   'test_xlabel_ylabel_dataframe_plane_plot  s    z:TestDataFramePlots.test_xlabel_ylabel_dataframe_plane_plotr   )FTc                 C   sj   t dgj|dddgd}|jjD ]B}|j r"| dks@t| dksPt|	 d dks"tq"d S )Nr   r  )r   r3   r   )r   r  r4   r1   )
r   rN   r  rf   r   Zget_visibler>  re   r   Z
get_yticks)rg   r   Zax_dfrK   r   r   r   test_secondary_y  s    
   
z#TestDataFramePlots.test_secondary_yc              	   C   s   t ddgddgd}tt |jjddd W 5 Q R X tt |jjd	d W 5 Q R X td	 |jd W 5 Q R X d S )
Nr   r!   r&   r   r   r   Tr/   F)r   rL   r  FutureWarningrN   rg  r   r   r   r   test_sort_columns_deprecated  s    z/TestDataFramePlots.test_sort_columns_deprecated)NNNN)q__name__
__module____qualname__rQ   markZxfailr   Zslowrl   r~   r   r   r   r   r   Zparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r1  r3  rA  rE  rJ  rN  r_  rl  rq  rt  tdZskip_if_no_scipyry  r~  r  rU   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,  r8  r:  r?  rC  rL  rM  rO  rS  rV  rW  rY  r\  r^  r_  rc  re  rf  rg  ro  rr  rs  ru  r   r   r   r   r   *   s  g
 

&
/'%		
6	
 

' 
   
 	





	$



*
.
		

!,65
&s

	
 	

	
r   c                  C   sr   dd l } dd l}dd lm} | jdd}||d }||d }||d }||d }|||||gfS )Nr   r!   r{  )r   r   r  rI   )rG  r6  r  r  r2  r/  Zsubplot)rI  rG  rc   r"  Zax_tlZax_llZax_trZax_lrr   r   r   r    s    r  )(__doc__r   r   r  r  rY   r  numpyrU   rQ   Zpandas.util._test_decoratorsutilZ_test_decoratorsrz  Zpandas.core.dtypes.apir   Zpandasrz   r   r   r   r   r	   r
   Zpandas._testingZ_testingrL   Zpandas.tests.plotting.commonr   r   Zpandas.io.formats.printingr   Zpandas.plottingr   r=  r   ImportErrorZskip_if_no_mplr   r  r   r   r   r   <module>   sN                     *