a
    do                    @   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
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mZ ddlmZ ddlmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& ddl'm(Z( e
)dZ*e
)d	Z+G d
d d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plotting)_check_ax_scales_check_axes_shape_check_box_return_type_check_colors_check_data_check_grid_settings_check_has_errorbars_check_legend_labels_check_plot_works_check_text_labels_check_ticks_props_check_visible
get_y_axispprint_thing
matplotlibzmatplotlib.pyplotc                   @   sT  e Zd Zejjdd Zejjdd Zejjdd Zejjdd Z	ejj
d	d
ejjdd Zejjdd Zejjejddg didg didddddddgdd Zejjdd Zejjdd Zejjdd Zejjd d! Zejjejd"d#d$gd%d& Zejjd'd( Zejd)ed*d+d,gd+d,gd+d,gd-d+gd-d+gd+d-gd+d-gd,d-gd,d-gd+d.gd+d.gd+d/gd+d/ggd0d1 Zejjejd2g d3d4d5 Zejjejd6d7i gd8i gd9i gd:d;d;igd<d=d;d>gd?d=d;d>ggd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZejdNdOdPgdQdR ZejdSg dTdUdV Z dWdX Z!dYdZ Z"d[d\ Z#d]d^ Z$d_d` Z%dadb Z&ejdce'j(e'j)gddde Z*ejdfe+d;g dgig dhdie+d;djdke'j,dldmdndogidkdjdldpe'j,dldpgdigdqdr Z-dsdt Z.dudv Z/dwdx Z0ejdyd7dzgejd{d|d}gd~d Z1ejdyd7dzgdd Z2dd Z3ejdyd7dzgdd Z4ejde5de6dd.ddgdd Z7ejde5de6dd.ddgdd Z8ejde5de6dd.ddgejdi ddigdd Z9ejdi ddigdd Z:dd Z;ejj
dddejdddgdd Z<dd Z=ejdddgdd Z>dd Z?ejdddgejdddgdd Z@ejdddgdd ZAdd ZBdd ZCdd ZDdd ZEdd ZFejdeGjHeGjIgdd ZJejdd>dgdd ZKdd ZLdd ZMdd ZNejdddgdd ZOejdddgejdg dĢg dŢgddǄ ZPejdddgejdg dʢg dˢfdd̈́ ZQejdg d΢ddЄ ZRejdddgddՄ ZSddׄ ZTddل ZUddۄ ZVdd݄ ZWdd߄ ZXejjejdi ddidddddigdd ZYejjdd ZZejjdd Z[ejjdd Z\dd Z]dd Z^dd Z_dd Z`ejaddd Zbdd Zcdd Zdejdg ddd Zedd Zfdd  Zgdd Zhdd Zidd Zjdd Zkd	d
 Zldd Zmdd Zndd Zoejdde'jpdd de'jpdd gdd ZqdddZrejde'se'tg de'tg de'se'tg de'tg de'se'tg de'tg dde'se'te'j,d|d d!dd"ge'tg d#e'se'td|e'j,d d!dd"ge'tg d$e'se'td|d d!e'j,dd"ge'tg d%dgd&d' Zud(d) Zvejd*d+d,d-dӜd+d,dg d.d+d,ggd/d0 Zwd1d2 Zxejd3g d4d5d6 Zyd7d8 Zzejdye{j|j}d9d: Z~ejdyd<d?gd;d< Zejdye{j|j}d=d> Zejdyee{j|j}dzg d?d@ ZdAdB ZejdCd,d-gd+dDfd+gd,d-gdEdFgfgdGdH ZdIdJ ZejdKdLd+gd,fgdMdN ZejdOd+d,gdEgdPgfd+d,d-gdEdFgdPdQgfdRd|d gdSdTgdUdVgfgdWdX ZejdYdRd|d+d,gfd|dRdRd|gfgdZd[ Zd\d] Zd^d_ Zejd`d#e'jgdadb Zejdci ddfdedfidffdgdhidhfgdidj Zdkdl Zejd;dmd gdndo Zdpdq Zdrds Zdtdu Zejjejddvdidddwdxdigdydz Zejjd{d| Zejjd}d~ Zejjejdddgdd Zejjdd Zejjdd Zejjejdyg dejdee'pdd d=de+e'pdd e'pdd d>gdd Zejjejdyg dejde+e'pdd e'pdd d>e+e'pdd e'pdd d>fee'pdd d=dee'pdd d=dfdgdd Zejjejdyg ddd Zejj
deddd Zdd Zejjejdyd7d8gdd Zejjdd Zejjejddd e+gdd Zejdyg ddd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejdye{j|jdd Zdd Zdd Zdd Zdd ZddÄ ZdĐdń ZdƐdǄ Zejdg dɢdʐd˄ Zd̐d̈́ Zdΐdτ Zejdyd7dzgdАdф ZdҐdӄ ZdԐdՄ Zd֐dׄ Zejdydءdِdڄ Zdېd܄ Zdݐdބ Zdߐd Zejdg ddd Zdd Zdd Zejdyddd Zejdddddd#dd|d gfgejdyg ddd Zejdg dejdyd<d?gdd Zejdddd Zd#S (  TestDataFramePlotsc                 C   s   t  }t|jdd d S )NF)Zgrid)tmmakeTimeDataFramer   plotselfdf r#   o/var/www/html/stable-diffusion-webui/venv/lib/python3.9/site-packages/pandas/tests/plotting/frame/test_frame.py	test_plot3   s    zTestDataFramePlots.test_plotc                 C   s*   t  }t|jddd}t|ddd d S )NTdefault_axessubplots   r)      axes_numlayoutr   r   r   r   r   r!   r"   axesr#   r#   r$   test_plot_subplots8   s    z%TestDataFramePlots.test_plot_subplotsc                 C   s,   t  }t|jdddd}t|ddd d S )NT)   )r'   r(   r.   r)   r4   r4   r,   r/   r0   r#   r#   r$   "test_plot_subplots_negative_layout?   s    z5TestDataFramePlots.test_plot_subplots_negative_layoutc                 C   s8   t  }t|jdddd}t|dd t|ddd d S )	NTF)r'   r(   	use_indexr   xrotr)   r*   r,   )r   r   r   r   r   r   r0   r#   r#   r$   test_plot_subplots_use_indexJ   s    z/TestDataFramePlots.test_plot_subplots_use_indexzApi changed in 3.6.0)reasonc                 C   sZ   t ddgddgd}d}tjt|d |jjdd	 W d    n1 sL0    Y  d S )
Nr+   r4      r)   xyz''Line2D' object has no property 'blarg'matchT)Zblarg)r   pytestraisesAttributeErrorr   liner!   r"   msgr#   r#   r$   test_plot_invalid_argV   s    z(TestDataFramePlots.test_plot_invalid_argc                 C   sF   t tjddttjd d d}t|jdd}t	|dd d S )	Nr4   
   r<   rJ   indexTr7   r   r8   )
r   nprandomdefault_rngliststringascii_lettersr   r   r   r!   r"   axr#   r#   r$   test_plot_tick_props^   s    z'TestDataFramePlots.test_plot_tick_propskwargsyticks)r+      rJ   xticks)id   )ylimZxlimTblah)r'   r(   titlec                 C   s>   t tjddttjd d d}t|jfi | d S )Nr4   rI   rJ   rK   	r   rN   rO   rP   rQ   rR   rS   r   r   r!   rW   r"   r#   r#   r$   test_plot_other_argsh   s
    z'TestDataFramePlots.test_plot_other_argsc                 C   s   t tjddttjd d d}|jddd}t|dd	d
 |d d D ]F}t	|j
 t	| dd t	|jdddd t	|j
 gdd qP|d fD ]6}t	|j
 t	|  t	|j
 g t|dd qd S )Nr4   rI   rJ   rK   Tr]   )r(   r^   r<   r<   r+   r,   FZvisibleminorr   r8   )r   rN   rO   rP   rQ   rR   rS   r   r   r   xaxisget_xticklabels	get_labelr   )r!   r"   r1   rU   r#   r#   r$   test_plot_visible_axy   s     	

z'TestDataFramePlots.test_plot_visible_axc                 C   s:   t tjddttjd d d}t|jdd d S )Nr4   rI   rJ   rK   r]   r^   r_   r    r#   r#   r$   test_plot_title   s
    z"TestDataFramePlots.test_plot_titlec                 C   sV   t tjd d td}ttjddt	|d}t
|jdd}t|dd d S )	NrJ   r4   rI   rK   TrM   r   r8   )ziprR   rS   ranger   rN   rO   rP   r   from_tuplesr   r   r   )r!   Ztuplesr"   rU   r#   r#   r$   test_plot_multiindex   s    z'TestDataFramePlots.test_plot_multiindexc                 C   s^   t jg dddgd}t jddgddgd}ttjd	d
dd||d}t|jdd d S )N))   αr   )rp   r+   )   βr4   )rq   r<   )   γr)   )rr   rY   )   δ   )rs      Zi0i1)names)baru   Δ)rx   u   ΕZc0Zc1r4   r   rJ   )   r4   columnsrL   u   Σrj   )	r   rn   r   rN   rO   rP   integersr   r   )r!   rL   r{   r"   r#   r#   r$   test_plot_multiindex_unicode   s    
z/TestDataFramePlots.test_plot_multiindex_unicoder.   N)r3   r+   c                 C   s>   t dtjddi}t|jjd|d}t|ddd d S )	Nr>   r4   rJ   T)r(   r.   r+   r+   r+   r,   )r   rN   rO   rP   r   r   rx   r   )r!   r.   r"   r1   r#   r#   r$   test_plot_single_column_bar   s    z.TestDataFramePlots.test_plot_single_column_barc                 C   sb   t dtjddi}tj \}}|jjd|d}t	|dksHJ |j
}||d u s^J d S )Nr>   r4   rJ   Tr(   rU   r+   r   )r   rN   rO   rP   mplpyplotr(   r   rx   lenr1   )r!   r"   _rU   r1   resultr#   r#   r$   test_plot_passed_ax   s    z&TestDataFramePlots.test_plot_passed_axz
cols, x, yZABCDEABCDEc              
   C   st   g d}t g dg d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 S )N)Z2008Z2009NZ2011Z2012r+   r4   r<   r)   rY   ru   rY   r<   r4   dtypez%Y)formati8T)r   utcr   r   r   r   r   r=   )
r   rN   arraynanobjectpdto_datetimeviewr   r   )r!   colsr>   r?   datesr"   r#   r#   r$   test_nullable_int_plot   s    
z)TestDataFramePlots.test_nullable_int_plotr   )rE   rx   histpiec                 C   s.   t jg ddd}t|}tt|j| d S )Nr+   r4   r<   r)   UInt32r   )r   r   r   r   getattrr   )r!   r   arrsr#   r#   r$   test_integer_array_plot_series   s    z1TestDataFramePlots.test_integer_array_plot_serieszplot, kwargsrE   rx   r   r   r?   scatterr>   r=   hexbinc                 C   s<   t jg ddd}t||d}tt|j|fi | d S )Nr   r   r   r=   )r   r   r   r   r   r   )r!   r   rW   r   r"   r#   r#   r$   test_integer_array_plot_df   s    z-TestDataFramePlots.test_integer_array_plot_dfc                 C   s6   t g dg dd}| }t| dks2J d S )Nr>   r?   zr+   r4   r<   r   r   r+   )r   r   r   	get_linesrT   r#   r#   r$   test_nonnumeric_exclude  s    z*TestDataFramePlots.test_nonnumeric_excludec                 C   s@   t tjddg dd}|jddd}t|j d d S )Nr4   rI   abcr{   r   r   r=   )	r   rN   rO   rP   standard_normalr   r   rf   rh   rT   r#   r#   r$   test_implicit_label  s
    z&TestDataFramePlots.test_implicit_labelc                 C   sH   t tjddddgd}d|j_|jddd |jjdksDJ d S )	Nr4   r5   r   r   r   NAMEZLABEL)r?   label)r   rN   rO   rP   r   rL   namer   r    r#   r#   r$   test_donot_overwrite_index_name  s    z2TestDataFramePlots.test_donot_overwrite_index_namec                 C   s   t d}t|jddd|dd   t|jdd|d  t|jdd|j  t|jddd|dj  t|jdd|d  t|jdd|j  d S )	NrY   r   r+   r=   r   r   r>   r?   )r   r   r   r   	set_indexr   r    r#   r#   r$   test_plot_xy  s    
" zTestDataFramePlots.test_plot_xyc                 C   s~   t d}tdt|jd |_t|jddd|dd   t|jdd|d  t|jdd|d   d S )NrY   r+   r4   r=   r   r   )	r   r   rN   aranger   r{   r   r   r   r    r#   r#   r$   test_plot_xy_int_cols&  s
    
"z(TestDataFramePlots.test_plot_xy_int_colsc                 C   s<   t d}|jddddd}t|jd t|dddd	 d S )
NrY   r+   r4   ZTest)   ry   )r>   r?   r^   figsizer~   )g      0@g       @)r-   r.   r   )r   r   r   r   r^   r   rT   r#   r#   r$   test_plot_xy_figsize_and_title.  s    
z1TestDataFramePlots.test_plot_xy_figsize_and_titlezinput_log, expected_log)Tlog)symZsymlogc                 C   s   t dtditdd}|j|d}t||d | |ksDJ |j|d}t||d | |kslJ |j|d}t|||d	 | |ksJ | |ksJ d S )
Nr   r[   rK   logyyaxis)logxrf   loglog)rf   r   )r   rN   r   r   r   Z
get_yscaleZ
get_xscale)r!   Z	input_logZexpected_logr"   rU   r#   r#   r$   test_logscales8  s    z!TestDataFramePlots.test_logscalesinput_param)r   r   r   c                 C   sf   t dtditdd}d}tjt|d$ |jf i |di W d    n1 sX0    Y  d S )Nr   r[   rK   z9Boolean, None and 'sym' are valid options, 'sm' is given.r@   sm)r   rN   r   rB   rC   
ValueErrorr   )r!   r   r"   rG   r#   r#   r$   test_invalid_logscaleK  s    z(TestDataFramePlots.test_invalid_logscalec                 C   sB   t  }|jdd}| }t|d  tr2J t|dd d S )NT)x_compatr      r8   )r   r   r   r   
isinstance	get_xdatar   r   r!   r"   rU   linesr#   r#   r$   test_xcompatT  s
    zTestDataFramePlots.test_xcompatc                 C   sH   t  }dtjd< | }| }t|d  tr8J t	|dd d S )NTzxaxis.compatr   r   r8   )
r   r   r   plot_paramsr   r   r   r   r   r   r   r#   r#   r$   test_xcompat_plot_params[  s    
z+TestDataFramePlots.test_xcompat_plot_paramsc                 C   s   t  }dtjd< | }| }t|d  tr8J d}t j	t
|d* tt|d  tsfJ W d    n1 sz0    Y  d S )NFr   r   zPeriodDtype\[B\] is deprecatedr@   )r   r   r   r   r   r   r   r   r   assert_produces_warningFutureWarningr!   r"   rU   r   rG   r#   r#   r$   !test_xcompat_plot_params_x_compatc  s    
z4TestDataFramePlots.test_xcompat_plot_params_x_compatc                 C   sl   t  }tjddB | }| }t|d  t	r>J t
|dd W d    n1 s^0    Y  d S )Nr   Tr   r   r8   )r   r   r   r   Zuser   r   r   r   r   r   r   r#   r#   r$   (test_xcompat_plot_params_context_managern  s    z;TestDataFramePlots.test_xcompat_plot_params_context_managerc                 C   s   t  }| }| }t|d  tr.J d}t jt|d* tt|d  ts\J W d    n1 sp0    Y  t	|dd d S )Nr   zPeriodDtype\[B\] is deprecated r@   r8   )
r   r   r   r   r   r   r   r   r   r   r   r#   r#   r$   test_xcompat_plot_periodw  s    8z+TestDataFramePlots.test_xcompat_plot_periodc                 C   sP   t tjddttdddtdddddgd}|  tjj	d	d
 d S )Nr4   )   r4     r+      r   r   rL   r{   r   r   )
r   rN   rO   rP   r	   r   r   r   r   Zaxhliner    r#   r#   r$   test_period_compat  s    z%TestDataFramePlots.test_period_compatindex_dtypec                 C   s   t dtditjtd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 d S )Nr?   r[   c   r3   r   )rL   r   r   r+   )r   r   F)Zcheck_index_type)r   rN   r   r   Indexint64r   r   Z
get_xydatar   r   Zassert_series_equalr?   )r!   r   r"   rU   r   rsr#   r#   r$   test_unsorted_index  s    *z&TestDataFramePlots.test_unsorted_indexr"                 ?       @      @)r   r   r   r   rK   r   r   r   g      @g      @g      @r   c                 C   s\   |  }| \}}| }|t|d  d ks:J |t|d  d ksXJ d S )Nr   )r   get_xlimr   rN   nanminget_datananmaxr!   r"   rU   xminxmaxr   r#   r#   r$   test_unsorted_index_lims  s
    z+TestDataFramePlots.test_unsorted_index_limsc                 C   sx   t g dg dd}|jddd}| \}}| }|t|d  d ksVJ |t|d  d kstJ d S )Nr   )g     V@g     V@g     @W@g      W@)r?   r   r   r?   r=   r   )r   r   r   r   rN   r   r   r   r   r#   r#   r$   test_unsorted_index_lims_x_y  s    z/TestDataFramePlots.test_unsorted_index_lims_x_yc                 C   s   t tjddttjd d g dd }d}tjt	|d |j
jdd	 W d    n1 sf0    Y  tjt	|d |j
jdd
 W d    n1 s0    Y  d S )Nr4   rt   r)   rt   r>   r?   r   fourr   z+Log-y scales are not supported in area plotr@   Tr   r   )r   rN   rO   rP   rQ   rR   rS   rB   rC   r   r   arearF   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+   )rN   zerosr   r   rl   r   assert_numpy_array_equal)r!   Znormal_linesZstacked_linesbasenlslsyr#   r#   r$   _compare_stacked_y_cood  s
    z*TestDataFramePlots._compare_stacked_y_coodkindr   multr+   r3   c                 C   sV   |t tjddg dd }t|j|dd}t|j|dd}| |j|j d S )Nr4   r   wr>   r?   r   r   Fr  stackedTr   rN   rO   rP   r   r   r  r   )r!   r  r  r"   ax1ax2r#   r#   r$   test_line_area_stacked  s    z)TestDataFramePlots.test_line_area_stackedc                 C   s   t tjddtjddtjdd tjdd d}t|j|dd}t|j|dd}| |jd d |jd d  | |jdd  |jdd   d S )Nr4   rt   r  Fr  Tr
  )r!   r  Zsep_dfr  r  r#   r#   r$   test_line_area_stacked_sep_df  s     z0TestDataFramePlots.test_line_area_stacked_sep_dfc                 C   s~   t tjddttjd d g dd}t|j	dd d}t
jt|d	 |j	d
d W d    n1 sp0    Y  d S )Nr4   r   rt   r  r   Fr	  zWhen stacked is True, each column must be either all positive or all negative. Column 'w' contains both positive and negative valuesr@   T)r   rN   rO   rP   r   rQ   rR   rS   r   r   rB   rC   r   )r!   Zmixed_dfrG   r#   r#   r$   test_line_area_stacked_mixed  s    z/TestDataFramePlots.test_line_area_stacked_mixedc                 C   sD   t tjddg dd}||jd }t|j|ddd d S )Nr4   r   r  r   r+   T)r  r   r	  )r   rN   rO   rP   r   rL   r   r   )r!   r  r"   Zdf2r#   r#   r$   #test_line_area_stacked_positive_idx  s
    z6TestDataFramePlots.test_line_area_stacked_positive_idxidxr)   z	2023-01-1)freqperiodsc           	      C   s   ddt jdg}dt jddg}t||d|d}t|j}|jd  }|jd  }t jg dt jd}t	
t |jd| t jg d	t jd}t	
t |jd| t	
|jt g d
 t	
|jt g d d S )Nr+   r4   r<   r   r   rK   r   r   r   )r<   r4   r+   )FFTF)FTFF)rN   r   r   r   r   r   	get_ydatar   float64r   r   deletedatamask)	r!   r  values1values2r"   rU   Zmasked1Zmasked2expr#   r#   r$   test_line_area_nan_df  s    
z(TestDataFramePlots.test_line_area_nan_dfc                 C   s   ddt jdg}dt jddg}t||d|d}t jg dt jd}t jg dt jd}t|jd	d
}t|j	d 
 | t|j	d 
 ||  d S )Nr+   r4   r<   r  rK   r+   r4   r   r<   r   r<   r   r4   r+   Tr  r   )rN   r   r   r   r  r   r   r   r   r   r  )r!   r  r  r  r"   	expected1	expected2rU   r#   r#   r$   test_line_area_nan_df_stacked  s    z0TestDataFramePlots.test_line_area_nan_df_stackedr	  Fc           	      C   s   ddt jdg}dt jddg}t||d|d}t jg dt jd}t jg dt jd}t|jjfi |}t	|j
d	  | |rt	|j
d  | nt	|j
d  ||  t|jjd
d}t	|j
d	  | t	|j
d  | d S )Nr+   r4   r<   r  rK   r  r   r   r   Fr  )rN   r   r   r   r  r   r   r   r   r   r   r  )	r!   r  rW   r  r  r"   r!  r"  rU   r#   r#   r$   "test_line_area_nan_df_stacked_area  s    z5TestDataFramePlots.test_line_area_nan_df_stacked_areasecondary_yc                 C   s~   t tjddg dd}|jf i |}| \}}| }||d  d d ks^J ||d  d d kszJ d S )Nr4   rt   r<   r   r   r   r3   )r   rN   rO   rP   r   r   r   r   )r!   rW   r"   rU   r   r   r   r#   r#   r$   test_line_lim6  s    z TestDataFramePlots.test_line_limc                 C   s   t tjddg dd}|jddd}t|ddd	 |D ]l}t|d
sPJ t|dr^J | \}}| }||d 	 d d ksJ ||d 	 d d ks>J q>d S )Nr4   r&  r   r   T)r%  r(   r<   rb   r,   Zleft_axright_axr   r3   )
r   rN   rO   rP   r   r   hasattrr   r   r   )r!   r"   r1   rU   r   r   r   r#   r#   r$   test_line_lim_subplots?  s    z)TestDataFramePlots.test_line_lim_subplotszX2020-12-01 this has been failing periodically on the ymin==0 assertion for a week or so.)strictr;   c           
      C   s   t tjddg dd}| }t|jj|d}| \}}| \}}|	 }	||	d 
 d d kspJ ||	d 
 d d ksJ |dksJ t|jj|d}| \}}|dksJ d S )Nr4   r   r   r   r  r   r3   )r   rN   rO   rP   r   r   r   r   get_ylimr   r   )
r!   r	  r"   Zneg_dfrU   r   r   ZyminZymaxr   r#   r#   r$   test_area_limK  s    z TestDataFramePlots.test_area_limc                 C   s   t tjddddgd}tjjdddd\}\}}|j|d	d
 |j|d	d
 t|	||shJ t|	||s|J d S )Nr4   r)   r4   r>   r?   r   r+   T)shareyr   )rU   r  )
r   rN   rO   rP   r   r   r(   r   r   Zjoined)r!   r"   figr  r  r#   r#   r$   test_area_sharey_dont_overwrited  s    z2TestDataFramePlots.test_area_sharey_dont_overwritec                 C   sF   t tjdd}|jj|dd}|jD ]}| dks,J q,d S )Nr4   rY   rY   )r	  	linewidth)	r   rN   rO   rP   r   r   rx   patchesget_linewidth)r!   r	  r"   rU   rr#   r#   r$   test_bar_linewidtho  s    
z%TestDataFramePlots.test_bar_linewidthc                 C   s^   t tjdd}|jjddd}t|ddd |D ] }|jD ]}|	 dksBJ qBq8d S )Nr4   r2  T)r3  r(   rY   )rY   r+   r,   )
r   rN   rO   rP   r   r   rx   r   r4  r5  )r!   r"   r1   rU   r6  r#   r#   r$   test_bar_linewidth_subplotsw  s    
z.TestDataFramePlots.test_bar_linewidth_subplotsz	meth, dim)rx   	get_width)barh
get_heightc                 C   sv   t tjdd}d}t|j|||d}|jD ]<}|s\t|| |t|j	 kspJ q4t|| |ks4J q4d S )Nr4   r2  ?)r	  width)
r   rN   rO   rP   r   r   r   r4  r   r{   )r!   methdimr	  r"   r=  rU   r6  r#   r#   r$   test_bar_barwidth  s    
 z$TestDataFramePlots.test_bar_barwidthc                 C   s\   t tjdd}d}t|j||dd}|D ]$}|jD ]}t|| |ks<J q<q2d S )Nr4   r2  r<  T)r=  r(   )r   rN   rO   rP   r   r   r   r4  )r!   r>  r?  r"   r=  r1   rU   r6  r#   r#   r$   test_barh_barwidth_subplots  s    
z.TestDataFramePlots.test_barh_barwidth_subplotsc                 C   s   t tjdd}|jjddd}dd |jD }|dgd ksHJ |jjd	g d
d}dd |jd d D }|g d
ksJ d S )Nr4   r2  Fr+   )r	  bottomc                 S   s   g | ]}|  qS r#   Zget_y.0pr#   r#   r$   
<listcomp>      zBTestDataFramePlots.test_bar_bottom_left_bottom.<locals>.<listcomp>   T)r3   c                 S   s   g | ]}|  qS r#   rC  rD  r#   r#   r$   rG    rH  rY   )r   rN   rO   rP   r   rx   r4  r!   r"   rU   r   r#   r#   r$   test_bar_bottom_left_bottom  s    z.TestDataFramePlots.test_bar_bottom_left_bottomc                 C   s   t tjdd}|jjdtg dd}dd |jD }|dgd	 ksRJ |jjd
g dd}dd |jd d D }|g dksJ d S )Nr4   r2  Fr+   r+   r+   r+   r+   )r	  leftc                 S   s   g | ]}|  qS r#   get_xrD  r#   r#   r$   rG    rH  z@TestDataFramePlots.test_bar_bottom_left_left.<locals>.<listcomp>r+   rI  Tr   c                 S   s   g | ]}|  qS r#   rR  rD  r#   r#   r$   rG    rH  rY   )r   rN   rO   rP   r   r:  r   r4  rN  r#   r#   r$   test_bar_bottom_left_left  s    z,TestDataFramePlots.test_bar_bottom_left_leftc                 C   s   t tjdd}|jjddd}|D ]&}dd |jD }|dgd ks*J q*|jjdtg d	d
}|D ]&}dd |jD }|dgd kspJ qpd S )Nr4   r2  Tr3   )r(   rB  c                 S   s   g | ]}|  qS r#   rC  rD  r#   r#   r$   rG    rH  zDTestDataFramePlots.test_bar_bottom_left_subplots.<locals>.<listcomp>rY   rP  )r(   rQ  c                 S   s   g | ]}|  qS r#   rR  rD  r#   r#   r$   rG    rH  r+   )	r   rN   rO   rP   r   rx   r4  r:  r   )r!   r"   r1   rU   r   r#   r#   r$   test_bar_bottom_left_subplots  s    z0TestDataFramePlots.test_bar_bottom_left_subplotsc                 C   sR   t dtjdgg dg dd}|j }g d}dd |jD }||ksNJ d S )	NrJ      rY   rJ   rV  r   r   r   r   	rJ   r   rV  rY   rJ   rV  r+   r4   r<   c                 S   s   g | ]}|  qS r#   r;  rD  r#   r#   r$   rG    rH  z3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>r   rN   r   r   rx   r4  r!   r"   rU   expectedr   r#   r#   r$   test_bar_nan  s
     
zTestDataFramePlots.test_bar_nanc                 C   sz   t dtjdgg dg dd}|jjdd}g d}d	d
 |jD }||ksRJ dd
 |jD }g d}||ksvJ d S )NrJ   rV  rW  r   rX  Tr  rY  c                 S   s   g | ]}|  qS r#   rZ  rD  r#   r#   r$   rG    rH  z;TestDataFramePlots.test_bar_nan_stacked.<locals>.<listcomp>c                 S   s   g | ]}|  qS r#   rC  rD  r#   r#   r$   rG    rH  )	r   r   r         $@r   g      4@g      .@r_  g      D@r[  r\  r#   r#   r$   test_bar_nan_stacked  s     z'TestDataFramePlots.test_bar_nan_stackedc                 C   s   t tjdd|td|tdd}|j }|j	 }t
|tg d | dksfJ |jd  d	ks|J |jd
  dksJ |jjdd}t
|tg d | dksJ |jd  d	ksJ |jd
  dksJ d S )Nr4   )rt   rY   ZABCDEFZabcder   )r   r+   r4   r<   r)   rY   )g      g      @r   g      пr3   g@Tr  g      @)r   rN   rO   rP   r   rQ   r   rx   rf   get_ticklocsr   r   r   r   r4  rS  )r!   r  r"   rU   Zticksr#   r#   r$   test_bar_categorical  s     



z'TestDataFramePlots.test_bar_categoricalzx, yr+   r4   c                 C   sD   t tjddttjd d g dd}t|j	j
||d d S )Nr4   r   rt   r   r   r=   )r   rN   rO   rP   r   rQ   rR   rS   r   r   r   r!   r>   r?   r"   r#   r#   r$   test_plot_scatter  s    z$TestDataFramePlots.test_plot_scatterc                 C   s   t tjddttjd d g dd}t	d}t
jt|d |jjdd	 W d    n1 sj0    Y  t	d
}t
jt|d |jjdd W d    n1 s0    Y  d S )Nr4   r   rt   r   r   z5scatter() missing 1 required positional argument: 'y'r@   r>   r   z5scatter() missing 1 required positional argument: 'x'r?   r   )r   rN   rO   rP   r   rQ   rR   rS   reescaperB   rC   	TypeErrorr   r   rF   r#   r#   r$   test_plot_scatter_error  s    
,
z*TestDataFramePlots.test_plot_scatter_errorc                 C   sR   t tjddttjd d g dd}|jdddd	d
}t	|ddd d S )Nr4   r   rt   r   r   r>   r?   r   T)r>   r?   r  r(   r+   r~   r,   )
r   rN   rO   rP   r   rQ   rR   rS   r   r   r0   r#   r#   r$   test_plot_scatter_shape  s    z*TestDataFramePlots.test_plot_scatter_shapec                 C   sv   t tjdddgd}tddddj|d< d	}tjt	|d
  |j
dddd W d    n1 sh0    Y  d S )Nr4   rJ   r   r   z
2014-01-01h)startr  r  Zdtimez9must be a string or a (real )?number, not 'datetime.time'r@   r   )r  r>   r?   )r   rN   rO   rP   r   r
   timerB   rC   rh  r   rF   r#   r#   r$   &test_raise_error_on_datetime_time_data  s
    z9TestDataFramePlots.test_raise_error_on_datetime_time_datar   valsr   r+   c                 C   sT   t tdddddd}tjdddt|}t||d}t|j	j
||d	 d S )
Ni  r+      W)rl  r  r  r4   r   ro  r=   )r
   r   rN   rO   rP   normalr   r   r   r   r   )r!   r>   r?   r   rp  r"   r#   r#   r$   test_scatterplot_datetime_data  s    z1TestDataFramePlots.test_scatterplot_datetime_datar  b_colr4   r<   r)   r   c                 C   s(   t g d|d}t|jj||d d S )NrX  r  r=   )r   r   r   r   )r!   rv  r>   r?   r"   r#   r#   r$   test_scatterplot_object_data  s    z/TestDataFramePlots.test_scatterplot_object_dataordered
categories)setosa
versicolor	virginica)r|  r}  r{  c                 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g d||d|d< |jjdddd}|j\}|j}tg d}|	 }t
|| tg d}	|j}
t
|
|	 |}dd |j D }tdd t||D sJ d S )Ngffffff@g      @g@r   g      @g	@g@g@lengthr=  r   )r{  r{  r}  r}  r|  )ry  rz  Zspeciesr   r+   r>   r?   r   )      ?g      ?g      @r   c                 S   s   g | ]}|  qS r#   get_text)rE  ir#   r#   r$   rG  =  rH  zLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>c                 s   s   | ]\}}||kV  qd S Nr#   )rE  r  jr#   r#   r$   	<genexpr>>  rH  zKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)r   r   Categoricalr   r   collectionscolorbarrN   r   Z	get_ticksr   r   Z_boundariesrU   Zget_ymajorticklabelsallrl   )r!   ry  rz  r"   rU   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_categorical)r=   )r?   r>   )r?   r?   c                 C   s2   t g dtg dd}t|jj||d d S )Nr   )r   r   r   r   r=   )r   r   r  r   r   r   rd  r#   r#   r$   'test_plot_scatter_with_categorical_data@  s    z:TestDataFramePlots.test_plot_scatter_with_categorical_datazx, y, cr   )r   r+   r4   c                 C   sz   t tjdjddddttjd d g dd}|jj	|||d	}|j
d jjd
ks\J |j
d jj dksvJ d S )Nr4   r   r[   r   lowhighsizert   r   r   r  ZGreysr   )r   rN   rO   rP   r|   rQ   rR   rS   r   r   r  cmapr   r  rU   
get_ylabel)r!   r>   r?   r   r"   rU   r#   r#   r$   test_plot_scatter_with_cG  s    z+TestDataFramePlots.test_plot_scatter_with_cc                 C   s   t tjdjddddttjd d g dd}d	}|jj	d
dd|d}|j
d jj|ksbJ |jj	d
dddd}|j
d jd u sJ |jj	dddd}|j
d jd u sJ t|j
dgd d S )Nr4   r   r[   r   r  rt   r   r   	cubehelixr>   r?   r   )r>   r?   r   colormapF)r>   r?   r   r  r+   redr  r6  Z
facecolors)r   rN   rO   rP   r|   rQ   rR   rS   r   r   r  r  r   r  r   )r!   r"   cmrU   r#   r#   r$   test_plot_scatter_with_c_propsU  s    z1TestDataFramePlots.test_plot_scatter_with_c_propsc                 C   s   t ddgddgd}g d}g d}t||g}|jjdd	|d
}t|jd  | tddg}|jjdd	|dd d S )Nr+   r4   r<   r)   r   )r   r   r   r   )r   r   r   r   r   r   r  r   r   r   Zspring)r>   r?   r   r  )	r   rN   r   r   r   r   r   r  Zget_facecolor)r!   r"   Zred_rgbaZ
green_rgbaZ
rgba_arrayrU   Zfloat_arrayr#   r#   r$   test_plot_scatter_with_c_arrayh  s    z1TestDataFramePlots.test_plot_scatter_with_c_arrayc                 C   sV   t tjddd g dd}|jjdddd	}tj|d j|j	d
 
 d d S )Nr4   rI   r[   r   r   r   r   r   )r>   r?   r   r   )right)r   rN   rO   rP   r   r   r   r   valuesr  Z	get_sizesrT   r#   r#   r$   test_plot_scatter_with_s  s
    z+TestDataFramePlots.test_plot_scatter_with_sc                 C   sX   t tjddd g dd}tj }|jjddd|d	}|j	d
 j
|u sTJ d S )Nr4   rI   r[   r   r   r   r   r   )r>   r?   r   normr   )r   rN   rO   rP   r   colorsZLogNormr   r   r  r  )r!   r"   r  rU   r#   r#   r$   test_plot_scatter_with_norm  s    
z.TestDataFramePlots.test_plot_scatter_with_normc                 C   s   t tjddd g dd}|jjdddd	}|jd
 j}|j	 |j
 f}tjj| }|jD ]}||||ksfJ qfd S )Nr4   rI   r[   r   r   r   r   r   r  r   )r   rN   rO   rP   r   r   r  r  r   minmaxr   r  Z	Normalize)r!   r"   rU   Z	plot_normZcolor_min_maxZdefault_normvaluer#   r#   r$   test_plot_scatter_without_norm  s    
z1TestDataFramePlots.test_plot_scatter_without_normlegendr&   c                 C   sF   t tjddttjd d g dd}t|j	j
fi | d S )Nr4   r   rt   ZoneZtwoZthreer   r   )r   rN   rO   rP   r   rQ   rR   rS   r   r   rx   r`   r#   r#   r$   test_plot_bar  s    z TestDataFramePlots.test_plot_barc                 C   s>   t tjddttjd d tdd}t	|j
j d S )Nr4   )rJ      rJ   r  r   )r   rN   rO   rP   r   rQ   rR   rS   rm   r   r   rx   r    r#   r#   r$   test_plot_bar_int_col  s    z(TestDataFramePlots.test_plot_bar_int_colc                 C   sR   t ddgddgd}t|jj}t|dd |jjddd}t|dddd	 d S )
Nr   r+   r  Z   r8   #   rJ   rotfontsizer9   
xlabelsize
ylabelsize)r   r   r   rx   r   rT   r#   r#   r$   test_plot_bar_ticks  s
    z&TestDataFramePlots.test_plot_bar_ticksc                 C   sR   t ddgddgd}t|jj}t|dd |jjddd}t|dddd d S )	Nr   r+   r  )yrot7      r  )r  r  r  )r   r   r   r:  r   rT   r#   r#   r$   test_plot_barh_ticks  s
    z'TestDataFramePlots.test_plot_barh_ticksc                 C   sv   |}|  j}dd |D }t|jj}t| | t|j	
 tdt|d  t|jdt| ksrJ d S )Nc                 S   s   g | ]}t |qS r#   r   rE  r   r#   r#   r$   rG    rH  z3TestDataFramePlots.test_boxplot.<locals>.<listcomp>r+   ru   )_get_numeric_datar{   r   r   boxr   rg   r   r   rf   ra  rN   r   r   r   r!   hist_dfr"   numeric_colslabelsrU   r#   r#   r$   test_boxplot  s    
zTestDataFramePlots.test_boxplotc                 C   s8   |}|d }|j jdd}t|ddd t|j j d S )Nheight(   r  r   r9   r  )r   r  r   r   )r!   r  r"   seriesr1   r#   r#   r$   test_boxplot_series  s
    z&TestDataFramePlots.test_boxplot_seriesc                 C   sv   |}t g d}|jj|d}| j}dd |D }t| | t	|j
 | t|jdt| ksrJ d S )N)r+   rt   ru   )	positionsc                 S   s   g | ]}t |qS r#   r   r  r#   r#   r$   rG    rH  zDTestDataFramePlots.test_boxplot_series_positions.<locals>.<listcomp>ru   )rN   r   r   r  r  r{   r   rg   r   r   rf   ra  r   r   )r!   r  r"   r  rU   r  r  r#   r#   r$   test_boxplot_series_positions  s    
z0TestDataFramePlots.test_boxplot_series_positionsc                 C   sj   |}|  j}dd |D }|jjdddd}t|dddd t| | t|jd	t| ksfJ d S )
Nc                 S   s   g | ]}t |qS r#   r   r  r#   r#   r$   rG    rH  z<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>2   ry   F)r  r  vertr   r9   r  r  ru   )	r  r{   r   r  r   r   get_yticklabelsr   r   r  r#   r#   r$   test_boxplot_vertical  s    
z(TestDataFramePlots.test_boxplot_verticalzignore:Attempt:UserWarningc                 C   s   |}|  j}dd |D }t|jjddddd}t|ddd t|d	d
 t||D ]*\}}t|	 |g t
|jdksVJ qVd S )Nc                 S   s   g | ]}t |qS r#   r   r  r#   r#   r$   rG    rH  zETestDataFramePlots.test_boxplot_vertical_subplots.<locals>.<listcomp>TF)r'   r(   r  r   r<   )r+   r<   r,   r   r   ru   )r  r{   r   r   r  r   r   rl   r   r  r   r   )r!   r  r"   r  r  r1   rU   r   r#   r#   r$   test_boxplot_vertical_subplots  s    
z1TestDataFramePlots.test_boxplot_vertical_subplotsc                 C   sx   |}|  j}dd |D }tg d}|jj|dd}t| | t	|j
 | t|jdt| kstJ d S )Nc                 S   s   g | ]}t |qS r#   r   r  r#   r#   r$   rG  	  rH  zFTestDataFramePlots.test_boxplot_vertical_positions.<locals>.<listcomp>)r<   r4   ry   F)r  r  ru   )r  r{   rN   r   r   r  r   r  r   r   r   ra  r   r   )r!   r  r"   r  r  r  rU   r#   r#   r$   test_boxplot_vertical_positions  s    
z2TestDataFramePlots.test_boxplot_vertical_positionsc                 C   sr   t tjddttjd d g dd}d}tj	t
|d |jjdd	 W d    n1 sd0    Y  d S )
Nr4   r   rt   r  r   z2return_type must be {None, 'axes', 'dict', 'both'}r@   Z
not_a_typereturn_type)r   rN   rO   rP   r   rQ   rR   rS   rB   rC   r   r   r  rF   r#   r#   r$    test_boxplot_return_type_invalid  s    z3TestDataFramePlots.test_boxplot_return_type_invalidr  )dictr1   Zbothc                 C   sJ   t tjddttjd d g dd}|jj	|d}t
|| d S )Nr4   r   rt   r  r   r  )r   rN   rO   rP   r   rQ   rR   rS   r   r  r   )r!   r  r"   r   r#   r#   r$   %test_boxplot_return_type_invalid_type  s    z8TestDataFramePlots.test_boxplot_return_type_invalid_typec                 C   sZ   t d ttjdd}t|jdd}dd |j	D }t
||d t|d	d
 d S )Nscipyr4   r[   r)   kder  c                 S   s   g | ]}t |qS r#   r   r  r#   r#   r$   rG  (  rH  z2TestDataFramePlots.test_kde_df.<locals>.<listcomp>r  r   r8   )rB   importorskipr   rN   rO   rP   r   r   r   r{   r   r   )r!   r"   rU   r]  r#   r#   r$   test_kde_df$  s    
zTestDataFramePlots.test_kde_dfc                 C   sD   t d ttjdd}|jdddd}t|dddd d S )	Nr  r4   rJ   r)   r  rV  rY   )r  r  r  r  )	rB   r  r   rN   rO   rP   r   r   r   rT   r#   r#   r$   test_kde_df_rot,  s    
z"TestDataFramePlots.test_kde_df_rotc                 C   sD   t d ttjdd}t|jdddd}t	|ddd	 d S )
Nr  r4   r  Tr  )r'   r  r(   r)   r*   r,   )
rB   r  r   rN   rO   rP   r   r   r   r   r0   r#   r#   r$   test_kde_df_subplots2  s    
z'TestDataFramePlots.test_kde_df_subplotsc                 C   s@   t d ttjdd}|jdddd}t|dd d S )	Nr  r4   r  r  T)r  r   r(   r   r   )	rB   r  r   rN   rO   rP   r   r   r   r0   r#   r#   r$   test_kde_df_logy=  s    
z#TestDataFramePlots.test_kde_df_logyc                 C   s@   t d ttjdjdd}tj|jd< t	|j
dd d S )Nr  r4   r  r  r   r   r  r  )rB   r  r   rN   rO   rP   uniformr   locr   r   r    r#   r#   r$   test_kde_missing_valsC  s    
z(TestDataFramePlots.test_kde_missing_valsc                 C   sp   t tjdd}t|jj}dd |jD }t	||d t|jjdddd}t
|dd	d
 t|dd d S )Nr4   r  c                 S   s   g | ]}t |qS r#   r   r  r#   r#   r$   rG  M  rH  z3TestDataFramePlots.test_hist_df.<locals>.<listcomp>r  T)r'   r(   r   r)   r*   r,   r   r   )r   rN   rO   rP   r   r   r   r   r{   r   r   r   )r!   r"   rU   r]  r1   r#   r#   r$   test_hist_dfI  s    zTestDataFramePlots.test_hist_dfc                 C   s6   t tjdd}|jjdd}t|ddd d S )Nr4   rJ   r  r  r   r  )r   rN   rO   rP   r   r   r   )r!   r  r1   r#   r#   r$   test_hist_df_seriesY  s    z&TestDataFramePlots.test_hist_df_seriesc                    sb   ddl m  ttjdd}|jjdddd} fdd	| D }t	
|d
  d d S )Nr   	Rectangler4   rJ   Tr)   )
cumulativebinsdensityc                    s   g | ]}t | r|qS r#   r   rE  r>   r  r#   r$   rG  d  rH  zMTestDataFramePlots.test_hist_df_series_cumulative_density.<locals>.<listcomp>r3   r   Zmatplotlib.patchesr  r   rN   rO   rP   r   r   Zget_childrenr   assert_almost_equalr;  r!   r  rU   Zrectsr#   r  r$   &test_hist_df_series_cumulative_density^  s
    z9TestDataFramePlots.test_hist_df_series_cumulative_densityc                    s`   ddl m  ttjdd}|jjddd} fdd	| D }t	
|d
  d d S )Nr   r  r4   rJ   Tr)   )r  r  c                    s   g | ]}t | r|qS r#   r  r  r  r#   r$   rG  l  rH  zETestDataFramePlots.test_hist_df_series_cumulative.<locals>.<listcomp>rJ  r_  r  r  r#   r  r$   test_hist_df_series_cumulativeg  s
    z1TestDataFramePlots.test_hist_df_series_cumulativec                 C   s<   t tjdd}|jjdddd}t|dddd d S )	Nr4   r  r  ry   
horizontal)r  r  orientationr   r  )r   rN   rO   rP   r   r   r   r   r0   r#   r#   r$   test_hist_df_orientationp  s    z+TestDataFramePlots.test_hist_df_orientationweights皙?)r[   )shape)r[   r4   c                 C   sr   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   r   r4   r4   r[   r   )r  r  r  c                 S   s   g | ]}|  qS r#   rZ  rE  patchr#   r#   r$   rG    rH  z8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>c                 S   s   g | ]}d |   qS )r  rZ  r  r#   r#   r$   rG    rH  )r   r  rl   rN   rO   rP   r   r   r   r4  r   r  )r!   r  r"   r  r  Zpatch_height_with_weightsZexpected_patch_heightr#   r#   r$   test_hist_weightsv  s    z$TestDataFramePlots.test_hist_weightsc           
      C   s   t dd |D }t dd |D }t dd |D }t dd |D }	|d urhtj||dd |d urtj||dd |d urtj||dd |d urtj|	|dd d S )Nc                 S   s   g | ]}|  qS r#   rC  rD  r#   r#   r$   rG    rH  z7TestDataFramePlots._check_box_coord.<locals>.<listcomp>c                 S   s   g | ]}|  qS r#   rZ  rD  r#   r#   r$   rG    rH  c                 S   s   g | ]}|  qS r#   rR  rD  r#   r#   r$   rG    rH  c                 S   s   g | ]}|  qS r#   )r9  rD  r#   r#   r$   rG    rH  F)Zcheck_dtype)rN   r   r   r   )
r!   r4  
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_coordr  r   rJ   	   ry   ru   rt   ry   ry   ry   ry   ry   rt   ru   ry   r  rJ   rX  r4   r<   rY   )r<   rJ   r  ry   ru   rt   )ry   r<   ry   ry   ry   ry   )rt   ru   ry   r<   r  rJ   c                 C   s  t |}|jjdd}| j|jd d tg dtg dd | j|jdd tg dtg dd | j|jdd  tg dtg dd |jjdd	d
}| j|jd d tg dtg dd | j|jdd tg dtg dd | j|jdd  tg dtg dd |jjdd	d	d}| j|d jtg dtg dd | j|d jtg dtg dd | j|d jtg dtg dd |jjddd}| j|jd d tg dtg dd | j|jdd tg dtg dd | j|jdd  tg dtg dd |jjdd	dd}| j|jd d tg dtg dd | j|jdd tg dtg dd | j|jdd  tg dtg dd |jjdd	d	dd}| j|d jtg dtg dd | j|d jtg dtg dd | j|d jtg dtg dd d S )NrY   )r  )r   r   r   r   r   r   )r  r  rJ   r  r  T)r  r	  )      r   r     )r  r	  r(   r   r+   r4   r  )r  r  )r  r  )r  r	  r  )r  r	  r(   r  )r   r   r   r  r4  rN   r   )r!   r  r"   rU   r1   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 )Nr4   r  Tr  )r   rN   rO   rP   r   cumsumr   r   r    r#   r#   r$   test_plot_int_columns#  s    z(TestDataFramePlots.test_plot_int_columnsmarkers^+o)r  r  r  c                 C   s   dd l m} | }|  |d ttjd	d}|j
|d}t| d t| D ]\}}| || ks`J q`d S )Nr   o   r4   rI   )style)matplotlib.pyplotr   gcfZclfadd_subplotr   rN   rO   rP   r   r   	enumerater   r   Z
get_marker)r!   r  pltr0  r"   rU   r  rE   r#   r#   r$   test_style_by_column'  s    

 z'TestDataFramePlots.test_style_by_columnc                 C   sP   t ddg}| }| d u s$J |jdd}|  d  dksLJ d S )Nr+   r4   Tr  r    )r   r   
get_legend	get_textsr  )r!   r   rU   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sLJ d S )	Nc                 S   s    i | ]}|t jd dqS r  )rN   rO   rP   )rE  kr#   r#   r$   
<dictcomp>N  rH  zHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ABCcolorZC1r  r  r   )r   r   r  Z	get_color)r!   propsr]  r"   Zkwdr   r#   r#   r$   !test_specified_props_kwd_plot_boxC  s    z4TestDataFramePlots.test_specified_props_kwd_plot_boxc                 C   s   t tg dtdddtdddtdddgdgd}| }|jd	  }|d	 |d k sbJ |jd	  }t	|tg d
 d S )N)r   r   r     rJ   r+   r  ry   testr   r   )r   r   r   )
r   rN   r   r   r   r   r   r  r   r   )r!   r"   rU   rZ   Zydatar#   r#   r$   test_unordered_tsT  s     z$TestDataFramePlots.test_unordered_tsc                 C   s8   t d tdg di}|j|d t|j|  d S Nr  r>   r   r  rB   r  r   r   r   r!   r  r"   r#   r#   r$   test_kind_both_ways`  s    
z&TestDataFramePlots.test_kind_both_waysc                 C   s@   t d tdg di}|jdd|d t|j|dd d S r$  r%  r&  r#   r#   r$   test_kind_both_ways_x_yg  s    
z*TestDataFramePlots.test_kind_both_ways_x_yc                 C   sN   t td}d}tjt|d |j|d W d    n1 s@0    Y  d S )NZabcdno numeric data to plotr@   r  )r   rQ   rB   rC   rh  r   r!   r  r"   rG   r#   r#   r$   test_all_invalid_plot_datan  s    z-TestDataFramePlots.test_all_invalid_plot_datac                 C   s|   t tjddtd}d|tjd|jd dk< d}tjt	|d |j
|d	 W d    n1 sn0    Y  d S )
Nr4   rJ   r4   r   r   r   r  r)  r@   r  )r   rN   rO   rP   r   r   r  rB   rC   rh  r   r*  r#   r#   r$   (test_partially_invalid_plot_data_numericu  s     z;TestDataFramePlots.test_partially_invalid_plot_data_numericc                 C   sX   t tjdd}d}tjt|d |jdd W d    n1 sJ0    Y  d S )Nr4   r,  z*invalid_plot_kind is not a valid plot kindr@   Zinvalid_plot_kindr  )	r   rN   rO   rP   r   rB   rC   r   r   rF   r#   r#   r$   test_invalid_kind  s    z$TestDataFramePlots.test_invalid_kindzx,y,lblr   r   r   c                 C   s^   t ddgddgddgd}tjtdd	  |j|||d
 W d    n1 sP0    Y  d S )Nr+   r4   r<   r)   rY   rt   rX  x must be a label or positionr@   r>   r?   r   r   rB   rC   r   r   )r!   r>   r?   lblr"   r#   r#   r$   test_invalid_xy_args  s    	z'TestDataFramePlots.test_invalid_xy_argsc                 C   sf   t ddgddgddgd}d}tjt|d	$ |jd
ddgdd W d    n1 sX0    Y  d S )Nr+   r4   r<   r)   rY   rt   rX  z.label should be list-like and same length as yr@   r   r   r   Z	bad_labelr0  r1  rF   r#   r#   r$   test_bad_label  s    z!TestDataFramePlots.test_bad_labelzx,yr   c                 C   s\   t g dg dgtdd}tjtdd |j||d W d    n1 sN0    Y  d S )N)r+   r<   rY   )r4   r)   rt   ZAABr   r/  r@   r=   )r   rQ   rB   rC   r   r   rd  r#   r#   r$   test_invalid_xy_args_dup_cols  s    z0TestDataFramePlots.test_invalid_xy_args_dup_colszx,y,lbl,colorsr  Zbluer   ZbokehZcythongreenZyellowc                 C   sj   t ddgddgddgd}t|jd||d	 |j||||d
}t|jt|ksVJ t| |d d S )Nr+   r4   r<   r)   rY   rt   rX  r   r0  )r>   r?   r   r  Z
linecolors)r   r   r   r   r   r   r   )r!   r>   r?   r2  r  r"   rU   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+   r4   r<   r)   r   r=   )r   r{   r   r   )r!   r>   r?   Zcolnamesr"   r#   r#   r$   test_xy_args_integer  s    z'TestDataFramePlots.test_xy_args_integerc                 C   sr   t tjdjddtjdjddtdtjdjdd d}|jjdddd}t|j	d	ksnJ d S )
Nr4   rV  r  rX  r   r   rJ   )r>   r?   Zgridsizer+   
r   rN   rO   rP   r  r   r   r   r   r  rT   r#   r#   r$   test_hexbin_basic  s    z$TestDataFramePlots.test_hexbin_basicc                 C   s   t tjdjddtjdjddtdtjdjdd d}|jjdddd}t|d	 j	j
dkstJ t|d
dd d S )Nr4   rV  r  rX  r   r   T)r>   r?   r(   r   r+   r~   r,   )r   rN   rO   rP   r  r   r   r   r   figurer1   r   r0   r#   r#   r$   test_hexbin_basic_subplots  s    z-TestDataFramePlots.test_hexbin_basic_subplotsreduce_Cc                 C   st   t tjdjddtjdjddtdtjdjdd d}|jjddd|d}t|j	d	kspJ d S )
Nr4   rV  r  rX  r   r   r   )r>   r?   r   Zreduce_C_functionr+   r:  )r!   r>  r"   rU   r#   r#   r$   test_hexbin_with_c  s    z%TestDataFramePlots.test_hexbin_with_czkwargs, expectedZBuGnr  r  r  ZYlGnc                 C   s|   t tjdjddtjdjddtdtjdjdd d}|jjf ddd|}|jd j	j
|ksxJ d S )	Nr4   rV  r  rX  r   r   r=   r   )r   rN   rO   rP   r  r   r   r   r  r  r   )r!   rW   r]  r"   rU   r#   r#   r$   test_hexbin_cmap  s    	z#TestDataFramePlots.test_hexbin_cmapc                 C   sd   t tjddg dg dd}d}tjt|d |j  W d    n1 sV0    Y  d S )Nr4   rY   r<   XYZr   r   r   derz   z/pie requires either y column or 'subplots=True'r@   )	r   rN   rO   rP   rB   rC   r   r   r   rF   r#   r#   r$   test_pie_df_err  s    z"TestDataFramePlots.test_pie_df_errrD  c                 C   sF   t tjddg dg dd}t|jj|d}t|j|j	 d S )Nr4   rA  rB  rF  rz   r   )
r   rN   rO   rP   r   r   r   r   textsrL   )r!   r?   r"   rU   r#   r#   r$   test_pie_df  s    zTestDataFramePlots.test_pie_dfc                 C   s   t tjddg dg dd}t|jjddd}t|t|jksLJ |D ]}t	|j
|j qPt||jD ]\}}| |kspJ qpd S )Nr4   rA  rB  rF  rz   Tr&   )r   rN   rO   rP   r   r   r   r   r{   r   rJ  rL   rl   r  )r!   r"   r1   rU   ylabelr#   r#   r$   test_pie_df_subplots  s    z'TestDataFramePlots.test_pie_df_subplotsc                 C   s   t tjddg dg dd}g d}g d}t|jjdd||d	}t|t|jks`J |D ]}t	|j
| t|j|d
 qdd S )Nr4   rA  rB  rF  rz   r   )r6  gr   r   mT)r'   r(   r  r  r  )r   rN   rO   rP   r   r   r   r   r{   r   rJ  r   r4  )r!   r"   r  Z
color_argsr1   rU   r#   r#   r$   test_pie_df_labels_colors  s$    z,TestDataFramePlots.test_pie_df_labels_colorsc                 C   s  t tjdd}tdD ]}tj|j||f< qtjj	dd\}}ddi}t
d * |jjf d|dd| W d    n1 s0    Y  g d}t|D ]r\}}t|}d	||< d
d |jD }	|	|ksJ dd |  D }
|d | ||d d   }|
|ksJ qd S )Nr4   )r)   r)   r)   )Zncols	normalizeT)r(   rU   r  )0123r  c                 S   s   g | ]}|  qS r#   r  r  r#   r#   r$   rG  A  rH  z6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>c                 S   s   g | ]}|  qS r#   r  r  r#   r#   r$   rG  G  rH  r+   )r   rN   rO   rP   rm   r   Zilocr   r   r(   r   r   r   r   r  rQ   rJ  r  r  )r!   r"   r  r   r1   rW   Zbase_expectedrU   r]  r   Zresult_labelsexpected_labelsr#   r#   r$   test_pie_df_nan1  s     8z"TestDataFramePlots.test_pie_df_nanr   )r   r   r   c                 C   sp   t dt dddd}t|}t dd t dd d}t|}t|jfd|i|}t|ddd	 d S )
Nrr  r   r3   r=   皙?皙?yerrr4   xerrrZ  rN   r   r   onesr   r   r   )r!   rW   rG  r"   d_errdf_errrU   r#   r#   r$   test_errorbar_plotK  s    
z%TestDataFramePlots.test_errorbar_plotc                 C   sr   t dt dddd}t|}t dd t dd d}t|}t|d j||dd	d
}t|ddd d S )Nrr  r   r3   r=   rX  rY  r+   rx   T)rZ  r\  r  r   r4   r[  r]  )r!   rG  r"   r_  r`  rU   r#   r#   r$   test_errorbar_plot_bar^  s    z)TestDataFramePlots.test_errorbar_plot_barc                 C   sv   t dt dddd}t|}t|d jt dd d}t|ddd	 t|jt d
d d}t|ddd	 d S )Nrr  r   r3   r=   r?   rY  rZ  r+   r[  )r4   rr  r4   )rN   r   r   r   r   r^  r   r!   rG  r"   rU   r#   r#   r$   test_errorbar_plot_yerr_arrayi  s    z0TestDataFramePlots.test_errorbar_plot_yerr_arrayrZ  u   誤差c                 C   st   t dt dddd}t|}t dd ||< t|j|d}t|ddd t|jd	d
|d}t|ddd d S )Nrr  r   r3   r=   rX  rc  r4   r[  r?   r>   )r?   r>   rZ  r+   r]  )r!   rZ  rG  r"   rU   r#   r#   r$   test_errorbar_plot_column_namet  s    z1TestDataFramePlots.test_errorbar_plot_column_namec                 C   sj   t dt dddd}t|}tt* |jt jd	dd W d    n1 s\0    Y  d S )Nrr  r   r3   r=   r4   r  rc  )
rN   r   r   r   external_error_raisedr   r   rO   rP   r   r!   rG  r"   r#   r#   r$   &test_errorbar_plot_external_valueerror  s    z9TestDataFramePlots.test_errorbar_plot_external_valueerrorc                 C   sv   t dt dddd}t|}tdgd dgd d}tt |j|d W d    n1 sh0    Y  d S )Nrr  r   r3   r=   Zzzzrc  )rN   r   r   r   rg  rh  r   )r!   rG  r"   r`  r#   r#   r$   %test_errorbar_plot_external_typeerror  s
    z8TestDataFramePlots.test_errorbar_plot_external_typeerror)rE   rx   r:  y_errrr  rX  )r   rY  c                 C   s@   t tdtdddd}t|j||d}t|ddd d S )Nrr  r   r3   r=   rZ  r  r4   r[  r   rN   r   r   r   r   )r!   r  rk  r"   rU   r#   r#   r$   !test_errorbar_plot_different_yerr  s    
z4TestDataFramePlots.test_errorbar_plot_different_yerrzy_err, x_err)rX  rX  c                 C   sB   t tdtdddd}t|j|||d}t|ddd d S )Nrr  r   r3   r=   )rZ  r\  r  r4   r[  rm  )r!   r  rk  Zx_errr"   rU   r#   r#   r$   &test_errorbar_plot_different_yerr_xerr  s    z9TestDataFramePlots.test_errorbar_plot_different_yerr_xerrc                 C   sh   t tdtdddd}t tdd tdd d}t|jd||d|d}t|d	d	d
 d S )Nrr  r   r3   r=   rX  rY  T)r'   rZ  r\  r(   r  r+   r[  )r   rN   r   r^  r   r   r   )r!   r  r"   r`  r1   r#   r#   r$   /test_errorbar_plot_different_yerr_xerr_subplots  s    "zBTestDataFramePlots.test_errorbar_plot_different_yerr_xerr_subplotszIterator is consumed)r;   rC   c                 C   sN   t dt dddd}t|}t|jtdt|d}t|ddd d S )	Nrr  r   r3   r=   r  rc  r4   r[  )	rN   r   r   r   r   	itertoolsrepeatr   r   rd  r#   r#   r$   test_errorbar_plot_iterator  s    z.TestDataFramePlots.test_errorbar_plot_iteratorc                 C   sv   t ttjdd}t ttjdd}t|j|d}t|ddd t|jddd}t|ddd d S )Nr4   r,  rc  r   r[  r+   )r?   rZ  	r   rN   absrO   rP   r   r   r   r   r!   r"   r`  rU   r#   r#   r$   'test_errorbar_with_integer_column_names  s    z:TestDataFramePlots.test_errorbar_with_integer_column_namesc                 C   sb   t ttjdd}t ttjddddgd}t|j||d}t|ddd d S )Nr4   rI   r,  r   r   rl  r[  rt  )r!   r  r"   r`  rU   r#   r#   r$   'test_errorbar_with_partial_columns_kind  s    z:TestDataFramePlots.test_errorbar_with_partial_columns_kindc                 C   s   t ttjdd}t ttjddddgd}tdddd	}|j|d
d |j|d
d t|j	|dd}t
|ddd d S )Nr4   rI   r,  r   r   1/1/2000rJ   M)r  r  T)ZinplacerE   rl  r[  )r   rN   ru  rO   rP   r   r
   r   r   r   r   )r!   r"   r`  ixrU   r#   r#   r$   &test_errorbar_with_partial_columns_dti  s    z9TestDataFramePlots.test_errorbar_with_partial_columns_dtierr_boxc                 C   s   | S r  r#   r   r#   r#   r$   <lambda>  rH  zTestDataFramePlots.<lambda>c                 C   sd   t dt dddd}t|}|t dd t dd d}t|j|d}t|dd	d
 d S )Nrr  r   r3   r=   rX  rY  )r>   r   rc  r+   r[  r]  )r!   r}  rG  r"   errrU   r#   r#   r$   &test_errorbar_with_partial_columns_box  s
    "z9TestDataFramePlots.test_errorbar_with_partial_columns_boxc           	      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}t|ddd t|j||d}t|ddd t|jd|d |d}t|ddd t|jdd|d}t|ddd t|j||d}t|ddd t|jd||dd}t|ddd d S )Nrr  r   r3   r=   rX  rY  ry  z1/1/2001rz  )r  rK   rl  r4   r[  r?   r>   )r?   rZ  r  r+   T)r'   r  rZ  r(   )rN   r   r^  r
   r   r   r   r   )	r!   r  rG  r_  r{  ZtdfZtdf_errrU   r1   r#   r#   r$   test_errorbar_timeseries  s.    z+TestDataFramePlots.test_errorbar_timeseriesc                 C   s   t j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 d    n1 s0    Y  d S )Nr4   )r<   r4   rY   r  r<   rY   )rZ  r\  r+   r   r3   zCAsymmetrical error bars should be provided with the shape (3, 2, 5)r@   rc  )rN   rO   rP   r   r   ZreshapeTr   r  	get_pathsZverticesr   r   r  rf  rg  rB   rC   r   )r!   r  r"   rU   Zyerr_0_0Zexpected_0_0rG   r#   r#   r$   test_errorbar_asymmetrical  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 J | }t|jdksjJ t||j t|jdksJ W d    n1 s0    Y  d S )	Nr4   rI   rJ   rK   T)tabler   r+   )r   rN   rO   rP   rQ   rR   rS   r   r   r   r   r   Ztablesr   r  r  rT   r#   r#   r$   
test_table%  s    zTestDataFramePlots.test_tablec                 C   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}t
|ddd	 t|jj	dd|d
}t
|ddd	 t|jj	dd|d}t
|ddd	 t|jj	dd||d}t
|ddd	 d S )Nr4   )rY   r4   rY   r>   r?   r   r=   r   r[  )r>   r?   r\  r+   )r>   r?   rZ  )r>   r?   r\  rZ  )r   rN   ru  rO   rP   r   rm   r   r   r   r   rv  r#   r#   r$   test_errorbar_scatter4  s$    z(TestDataFramePlots.test_errorbar_scatterc                    s   d fdd	}t ttjddg dd}|jjdd	d
ddd t ddd | j	ddd | j	ddd |jjdd	ddd t ddd | j	ddd d S )Nhas_xerrc                    sv   g }t  fddjD }|D ]"}t|r8|| q || q fdd|D }t|t|gt| d d S )Nc                 3   s    | ]}t | d r|jV  qdS )FN)r   r   r  has_errr#   r$   r  M  rH  z`TestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_color.<locals>.<genexpr>c                    s   g | ]}| j v r|qS r#   )r  r  rU   r#   r$   rG  S  rH  zaTestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_color.<locals>.<listcomp>r7  )	next
containersr   extendappendr   rN   r   r   )r  r]  r  r   ZerrselZ	err_linesr  r  r$   _check_errorbar_colorK  s    zMTestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_colorr4   )rJ   rY   rF  r   r   r   rG  rH  r  )r>   r?   r\  rZ  r   r+   r[  r  Zhas_yerrr6  )r>   r?   rZ  r  r   )r  )
r   rN   ru  rO   rP   r   r   r   r   r  )r!   r  r"   r#   r  r$   test_errorbar_scatter_colorJ  s    z.TestDataFramePlots.test_errorbar_scatter_colorc                 C   sZ   t g ddd}tjttfdd" |jdddd	d
 W d    n1 sL0    Y  d S )Nr   r)   r  z'unknown' is not ar@   r   r   unknownr   )r>   r?   r  r  )r   rB   rC   r   KeyErrorr   r    r#   r#   r$   test_scatter_unknown_colormapd  s    z0TestDataFramePlots.test_scatter_unknown_colormapc                 C   s   dd l m} |d t \}}tg dg dg dg dd}dd }|D ]}|jddd	|d
d qN||  || |d t \}}t	t
  |jd
|d
d}W d    n1 s0    Y  || d S )Nr   r  r+   r4   r<   r)   rY   rt   r   r   r   rG  c                 S   s   | D ]&}t |jdksJ t| dd q| d | d fD ](}t| dd t|jdddd q<| d | d fD ](}t| dd t|jdddd qvd S )	Nr+   Trc   r   r4   Frd   r<   )r   r   r   r  rg   r1   rU   r#   r#   r$   _check|  s    z5TestDataFramePlots.test_sharex_and_ax.<locals>._checkr   r   r^   T)r>   r?   r^   rU   sharex)r(   rU   r  )r  r   close_generate_4_axes_via_gridspecr   r   tight_layoutr  r   r   UserWarningr!   r  gsr1   r"   r  rU   r#   r#   r$   test_sharex_and_axj  s(    

	

.z%TestDataFramePlots.test_sharex_and_axc                 C   s   dd l m} tg dg dg dg dd}t \}}|D ]}|jddd|d q<||  |D ]J}t|jdks|J t	|
 d	d
 t	| d	d
 t	|jd	dd	d
 qfd S Nr   r  r  r   r   r^   )r>   r?   r^   rU   r+   Trc   rd   r  r   r   r  r   r  r  r   r   r   r  rg   r!   r  r"   r  r1   rU   r#   r#   r$   test_sharex_false_and_ax  s"    
z+TestDataFramePlots.test_sharex_false_and_axc                 C   s   dd l m} t \}}tg dg dg dg dd}dd }|D ]}|jddd|d	d
 qD||  || |d t \}}t	t
  |jd	|d	d}W d    n1 s0    Y  ||  || d S )Nr   r  r  c                 S   s   | D ]:}t |jdksJ t| dd t|jdddd q| d | d fD ]}t| dd qP| d | d fD ]}t| dd qvd S )	Nr+   Trc   rd   r   r4   r<   F)r   r   r   rg   r  r  r#   r#   r$   r    s    z5TestDataFramePlots.test_sharey_and_ax.<locals>._checkr   r   r^   T)r>   r?   r^   rU   r/  r  )r(   rU   r/  )r  r   r  r   r   r  r  r  r   r   r  r  r#   r#   r$   test_sharey_and_ax  s(    
	


.z%TestDataFramePlots.test_sharey_and_axc                 C   s   dd l m} tg dg dg dg dd}t \}}|D ]}|jddd|d q<||  |D ]J}t|jdks|J t	|
 d	d
 t	| d	d
 t	|jd	dd	d
 qfd S r  r  r  r#   r#   r$   test_sharey_and_ax_tight  s"    
z+TestDataFramePlots.test_sharey_and_ax_tightc                 C   s   t d i }|dv rlttjdjddtjdjddtdtjdjdd d}ddd	}n|d
krt	 
 }nt	 }t|jf d|i|}td t  | du sJ dS )z3Check that every plot type gets properly collected.r  )r   r   r   r4   rV  r  rX  r   r   r=   r   r  r  N)rB   r  r   rN   rO   rP   r  r   r   r   ru  weakrefrefr   r  r  gcZcollect)r!   r  argsr"   r  r#   r#   r$   test_memory_leak  s"    

z#TestDataFramePlots.test_memory_leakc           	         s  ddl m  dd lm ttjd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sJ |j|d}t|jdksJ ||fD ]8}t| dd t| dd t|jdddd qЈd q| | fD ]\}}|jd||gd}t|jdksPJ t|jdksdJ |D ]:}t| dd t| dd t|jdddd qhd q"| \}}tt& |jd||gddd}W d    n1 s0    Y  t|d jdksJ t|d jdks.J ||fD ]}t| dd q6t|d  dd t|d jdddd t|d  dd t|d jdddd d | \}}tt& |jd||gddd}W d    n1 s0    Y  t|d jdksJ t|d jdks,J t|d  dd t|d  dd ||fD ]*}t| dd t|jdddd q\d d S )Nr   gridspecr4   rJ   ry  r  rK   r,  ABr   c                     sL     dd}  }|| d dd d f }|| dd d f }||fS )Nr<   r+   r4   GridSpecr<  r  r  r0  r  r  r  r  r#   r$   _get_vertical_grid  s
    zSTestDataFramePlots.test_df_gridspec_patterns_vert_horiz.<locals>._get_vertical_gridc                     sL     dd}  }|| d d d df }|| d d df }||fS )Nr+   r<   r4   r  r  r  r#   r$   _get_horizontal_grid   s
    zUTestDataFramePlots.test_df_gridspec_patterns_vert_horiz.<locals>._get_horizontal_gridr  r+   Trc   rd   r  r   r(   rU   r  r/  Fr   r  r  r   r   rN   rO   rP   r   r
   r   rL   rQ   r   r   r   r   r  rg   r  r   r   r  )	r!   tsr"   r  r  r  r  rU   r1   r#   r  r$   $test_df_gridspec_patterns_vert_horiz	  sn    

6

6z7TestDataFramePlots.test_df_gridspec_patterns_vert_horizc                    s  ddl m  dd lm ttjddt	dddd} fdd	}| }t
tjdd
|jtdd}|jd|d}|D ]J}t|jdksJ t| dd t| dd t|jdddd qd | }tt" |jd|ddd}W d    n1 s0    Y  |D ]}t|jdks J q |d |d fD ]}t| dd qL|d |d fD ]}t| dd qt|d |d fD ]*}t| dd t|jdddd q|d |d fD ]*}t| dd t|jdddd q؈d d S )Nr   r  r4   rJ   ry  r  rK   c                     st     dd}  }|| d dd df }|| d ddf }|| dd df }|| d }||||fS )Nr<   r4   r5   r  )r  r0  r  r  Zax3Zax4r  r#   r$   _get_boxed_gridg  s    zKTestDataFramePlots.test_df_gridspec_patterns_boxed.<locals>._get_boxed_gridr  ABCDr   Tr   r+   rc   rd   r  r  r<   Fr  )r!   r  r  r1   r"   rU   r#   r  r$   test_df_gridspec_patterns_boxed\  sH    
	
2z2TestDataFramePlots.test_df_gridspec_patterns_boxedc                 C   s.   t tg dg ddtjjdddd d S )Nr   rw  r  r   r   r=   )kws)r   r   r   PlotAccessorZ_dataframe_kinds)r!   r#   r#   r$   test_df_grid_settings  s
    z(TestDataFramePlots.test_df_grid_settingsc                 C   s>   t j \}}|g d ttjddj|d d S )N)rX  rX  rX  rX  r4   rJ   r  )	r   r   r(   add_axesr   rN   rO   rP   r   )r!   r0  rU   r#   r#   r$   test_plain_axes  s    z"TestDataFramePlots.test_plain_axesc                 C   sX   t tjddtjddd}tj }|d}|j	d|ddddd	 d S )
Nr4   ry   r  )r   r   r+   r+   r   r   r   Zhsv)r  rU   r>   r?   r   r  )
r   rN   rO   rP   r   r   r   r<  r  r   )r!   r"   r0  rU   r#   r#   r$   test_plain_axes_df  s    

z%TestDataFramePlots.test_plain_axes_dfc                 C   sr   t j \}}ddlm} ||}|jdddd}ttj	ddj
|d	 ttj	ddj
|d	 d S )
Nr   )make_axes_locatabler  z5%g?)r  padr4   rJ   r  )r   r   r(   Zmpl_toolkits.axes_grid1r  Zappend_axesr   rN   rO   rP   r   )r!   r0  rU   r  dividerZcaxr#   r#   r$   #test_plain_axes_make_axes_locatable  s    z6TestDataFramePlots.test_plain_axes_make_axes_locatablec                 C   sj   t j \}}ddlm} ||dddd}ttjddj	|d	 ttjddj	|d	 d S )
Nr   )
inset_axesz30%r   r<   )r=  r  r  r4   rJ   r  )
r   r   r(   Z%mpl_toolkits.axes_grid1.inset_locatorr  r   rN   rO   rP   r   )r!   r0  rU   r  Ziaxr#   r#   r$   test_plain_axes_make_inset_axes  s
    z2TestDataFramePlots.test_plain_axes_make_inset_axesmethod)rE   r:  rx   c                 C   sv   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 i |}t	|j
|d d S )Nr4   )r  r4   r  r   c                 S   s
   | j  S r  )r   r	  r"   r#   r#   r$   r~    rH  zBTestDataFramePlots.test_secondary_axis_font_size.<locals>.<lambda>r   c                 S   s
   | j d S )Ng?r  r  r#   r#   r$   r~    rH  )r   rV  r   r   T)r%  r  Z
mark_right)r1   r  )r   rN   rO   rP   r   rQ   Zassignr   r   r   r(  )r!   r  r"   r  r  rW   rU   r#   r#   r$   test_secondary_axis_font_size  s    z0TestDataFramePlots.test_secondary_axis_font_sizec                 C   s   t g dg dg dd}|jjdd}|dd d	d
 | D }tt|| }|d dksjJ |d dkszJ |d dksJ d S )N)r<   r4   r<   )rV  *      )MondayTuesday	Wednesday)ZsalesZvisitsdayr  r   r3   r<   c                 S   s   g | ]}|  qS r#   r  rE  tr#   r#   r$   rG    rH  zATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>r  r   r  r   r  r   )r   r   r   set_xlimrg   r  rl   
get_xticks)r!   r"   rU   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s~J |d dksJ |d dksJ |d dksJ d S )Nr!  i  r+   r4   r.  r   r   rz   r3   r)   c                 S   s   g | ]}|  qS r#   r  r  r#   r#   r$   rG    rH  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   rN   rO   rP   r   r   r  rg   r  rl   r  )r!   rL   r"   rU   r  r  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 s8J |d dksHJ d S )Nr4   r)   r+   rK   r  r   )r   r   r   )r!   r  r"   rU   xlimsr#   r#   r$   test_xlim_plot_line  s
    z&TestDataFramePlots.test_xlim_plot_linec                 C   s   t j \}}g d}tg dg dg dg dd|d}|g d jj|d	d
 |dg j|dd | }|d dk sJ |d dksJ dd | D }||ksJ d S )N)Zk1Zk2Zk3Zk4)i  r     r   )i  ix  r   i  )r  r  i@  i  )r+   r<   r)   r<   )s1s2s3r%  rK   )r  r  r  F)rU   r	  r%  T)rU   r%  r   r+   r<   c                 S   s   g | ]}|  qS r#   r  r  r#   r#   r$   rG  	  rH  zWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)r   r   r(   r   r   rx   r   rg   )r!   r0  rU   Zindexesr"   r  r  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J | }t| dks4J | d }t| dksTJ t| dkshJ d S )NZfoo)r{   r   r+   r   )r   intemptyr   r   r   r   r  )r!   r"   rU   rE   r#   r#   r$   test_plot_no_rows	  s    
z$TestDataFramePlots.test_plot_no_rowsc                 C   sF   t g d}tjtdd |  W d    n1 s80    Y  d S )Nr   r)  r@   )r   rB   rC   rh  r   r    r#   r#   r$   test_plot_no_numeric_data%	  s    z,TestDataFramePlots.test_plot_no_numeric_data)rE   rx   r:  r   r  r  r   r   c                 C   s   t d tdtdd tdd tdtdd}t|}|jddg|d}t|dksjJ d	d
gddgdgf}t||D ]:\}}|dkrt||d |dkrt|j	t|ksJ qd S )Nr  rJ   r+   rF  )r   rH  )r   rG  r(   r  r<   r   rH  r   rG  r   r   r  rE   )
rB   r  rN   r   r   r   r   rl   r   r   )r!   r  rG  r"   r1   rV  rU   r  r#   r#   r$   test_group_subplot*	  s     
z%TestDataFramePlots.test_group_subplotc                 C   sP   t td}d}tjt|d |jdgd W d    n1 sB0    Y  d S )Nr+   z!An iterable subplots for a Seriesr@   r   r(   )r   rm   rB   rC   NotImplementedErrorr   )r!   ZserrG   r#   r#   r$   (test_group_subplot_series_notimplementedB	  s    z;TestDataFramePlots.test_group_subplot_series_notimplementedc                 C   s`   t tdtddgd}d}tjt|d |jdgd W d    n1 sR0    Y  d S )Nr4   rq  rc  r   z6An iterable subplots for a DataFrame with a MultiIndexr@   r  )	r   rN   eyer   rn   rB   rC   r  r   rF   r#   r#   r$   ,test_group_subplot_multiindex_notimplementedH	  s    z?TestDataFramePlots.test_group_subplot_multiindex_notimplementedc                 C   sZ   t tdddgd}d}tjt|d |jdgd W d    n1 sL0    Y  d S )Nr4   r   r   z4An iterable subplots for a DataFrame with non-uniquer@   r  r  )r   rN   r  rB   rC   r  r   rF   r#   r#   r$   0test_group_subplot_nonunique_cols_notimplementedN	  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+   r  )r  r  c                 C   s\   t dt dd}t|}tjt|d |j|d W d    n1 sN0    Y  d S )NrJ   r  r@   r  rN   r   r   rB   rC   r   r   )r!   r(   Zexpected_msgrG  r"   r#   r#   r$   test_group_subplot_bad_inputT	  s    z/TestDataFramePlots.test_group_subplot_bad_inputc                 C   s^   t dt dd}t|}tjtdd |jdgd W d    n1 sP0    Y  d S )NrJ   r  z Column label\(s\) \['bad_name'\]r@   )r   Zbad_namer  r  rh  r#   r#   r$   &test_group_subplot_invalid_column_nameg	  s    z9TestDataFramePlots.test_group_subplot_invalid_column_namec                 C   sh   t dt dt dd}t|}tjtdd  |jddgd W d    n1 sZ0    Y  d S )NrJ   r   zshould be in only one subplotr@   r  )r   r   r  r  rh  r#   r#   r$   $test_group_subplot_duplicated_columnn	  s    z7TestDataFramePlots.test_group_subplot_duplicated_column)r  r   r   c                 C   s`   t dt dd}t|}tjtdd  |jdg|d W d    n1 sR0    Y  d S )NrJ   r  z1When subplots is an iterable, kind must be one ofr@   r  r  )r!   r  rG  r"   r#   r#   r$   test_group_subplot_invalid_kindu	  s    z2TestDataFramePlots.test_group_subplot_invalid_kindz index_name, old_label, new_label)Nr  new)oldr  r  )Nr  r  )Nr  r+   r  )rE   r   rx   c                 C   s   t ddgddggddgd}||j_|j|d}| |ks@J | dksPJ |j|||d	}| t|kstJ | t|ksJ d S )
Nr+   r4   rY   Type AType Br   r  r  )r  rL  xlabel)r   rL   r   r   
get_xlabelr  str)r!   r  Z
index_nameZ	old_labelZ	new_labelr"   rU   r#   r#   r$   (test_xlabel_ylabel_dataframe_single_plot~	  s    z;TestDataFramePlots.test_xlabel_ylabel_dataframe_single_plotzxlabel, ylabel))NN)X LabelN)NY Label)r  r   c                 C   st   d}d}t ddgddgg||gd}|j|||||d}| |d u rJ|n|ksTJ | |d u rf|n|kspJ d S )Nr  r  r+   r4   rY   r   )r  r>   r?   r  rL  )r   r   r  r  )r!   r  r  rL  ZxcolZycolr"   rU   r#   r#   r$   'test_xlabel_ylabel_dataframe_plane_plot	  s    z:TestDataFramePlots.test_xlabel_ylabel_dataframe_plane_plot)FTc                 C   sj   t dgj|dddgd}|jjD ]B}|j r"| dks@J | dksPJ | d dks"J q"d S )Nr   rD  )r   r[   r   )r%  rL  r\   rX   )	r   r   r<  r1   r   Zget_visibler  r,  Z
get_yticks)r!   r%  Zax_dfrU   r#   r#   r$   test_secondary_y	  s    


z#TestDataFramePlots.test_secondary_y)NNNN)__name__
__module____qualname__rB   markZslowr%   r2   r6   r:   ZxfailrH   rV   Zparametrizera   ri   rk   ro   r}   r   r   rQ   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rN   r   r  r   r   r   r   r   r   r  r  r  r  r  rm   r
   r  r#  r$  r'  r*  r-  r1  r7  r8  r@  rA  rO  rT  rU  r^  r`  r   r   ZCategoricalIndexrb  re  ri  rj  rn  ru  rx  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r  r  r  r  r  r  r  r  r  r  r  r^  r  r  rr  r   r  r
  r  r  r   r#  r   r  Z_common_kindsr'  r(  r+  r-  r.  r3  r4  r5  r8  r9  r;  r=  Zstdr?  r@  rI  rK  rM  rP  rW  ra  rb  re  rf  ri  rj  r   rn  ro  rp  r   rs  rw  rx  r|  r  r  r  r  r  r  r  r  r  r  r  Z
_all_kindsr  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   2   sH  





	


	


	




	



	



	

	



	





	
	


				








	
		.   """***l
		
"	,
	



(((6	!((S5
	
	

	r   c                  C   sb   dd l m}  tjdd}| |d }| |d }| |d }| |d }|||||gfS )Nr   r4   r  )r+   r   rq  r~   )r  r   r   r  r  Zsubplot)r  r  Zax_tlZax_llZax_trZax_lrr#   r#   r$   r  	  s    r  ).__doc__r   r   r  rq  rf  rR   r  numpyrN   rB   Zpandas.core.dtypes.apir   Zpandasr   r   r   r   r   r	   r
   r   Zpandas._testingZ_testingr   Zpandas.tests.plotting.commonr   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas.io.formats.printingr   r  r   r  r   r  r#   r#   r#   r$   <module>   sJ   $	<

                   