o
    ŀgi                    @   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  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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. ddl/m0Z0 e
1d	Z2e
1d
Z3G dd dZ4dd Z5dS )z Test cases for DataFrame.plot     )datedatetimeN)is_list_like)		DataFrameIndex
MultiIndexPeriodIndexSeriesbdate_range
date_rangeoption_context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)Versionpprint_thing
matplotlibzmatplotlib.pyplotc                   @   s  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deGeHjIgdd ZJejdd>dgdd ZKdd ZLdd ZMdd ZNejdddgdd ZOejddejPdeQRdádčgejdddgejdg dǢg dȢgddʄ ZSejdddgejdg d͢g d΢fddЄ ZTejdg dѢddӄ ZUejdddgdd؄ ZVddڄ ZWdd܄ ZXddބ ZYdd ZZdd Z[ejjejdi ddidddddigdd Z\ejjdd Z]ejjdd Z^ejjdd Z_dd Z`dd Zadd Zbdd Zcejdddd Zedd Zfdd Zgejdg ddd Zhd d Zidd Zjdd Zkdd Zldd	 Zmd
d Zndd Zodd Zpdd Zqdd Zrejdde'jsdd de'jsdd gdd Zt	#	#	#	#dddZuejde've'wg de'wg de've'wg de'wg d e've'wg de'wg d!d"e've'we'j,d|d#d$dd%ge'wg d&e've'wd|e'j,d#d$dd%ge'wg d'e've'wd|d#d$e'j,dd%ge'wg d(d"gd)d* Zxd+d, Zyejd-d.d/d0d֜d.d/dg d1d.d/ggd2d3 Zzd4d5 Z{ejd6g d7d8d9 Z|d:d; Z}ejdye~jjd<d= Zejdyd<d?gd>d? Zejdye~jjd@dA Zejdyee~jjdzg dBdC ZdDdE ZejdFd,d-gd+dGfd+gd,d-gdHdIgfgdJdK ZdLdM ZejdNdOd+gd,fgdPdQ ZejdRd+d,gdHgdSgfd+d,d-gdHdIgdSdTgfdUd|d#gdVdWgdXdYgfgdZd[ Zejd\dUd|d+d,gfd|dUdUd|gfgd]d^ Zd_d` Zdadb Zejdcd#e'jgddde Zejdfi dgfdhdiidifdjdkidkfgdldm Zdndo Zejd;dpd#gdqdr Zdsdt Zdudv Zdwdx Zejjejddydidddzd{digd|d} 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'sdd d=de+e'sdd e'sdd d>gdd Zejjejdyg dejde+e'sdd e'sdd d>e+e'sdd e'sdd d>fee'sdd d=dee's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 Zejjdd  Zd#S (  TestDataFramePlotsc                 C   sD   t tjddttdtdtddddd	}t	|j
d
d d S )N   
      ABCDdtype
2000-01-01r"   BperiodsfreqcolumnsindexF)grid)r   nprandomdefault_rngstandard_normalr   listobjectr   r   plotselfdf r:   Z/var/www/html/myenv/lib/python3.10/site-packages/pandas/tests/plotting/frame/test_frame.py	test_plot8   s   zTestDataFramePlots.test_plotc                 C   sT   t tjddttdtdtddddd	}t	|j
d
d
d}t|ddd d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   Tdefault_axessubplotsr#   r#      axes_numlayoutr   r0   r1   r2   r3   r   r4   r5   r   r   r6   r   r8   r9   axesr:   r:   r;   test_plot_subplotsA   s   z%TestDataFramePlots.test_plot_subplotsc                 C   sV   t tjddttdtdtddddd	}t	|j
d
d
dd}t|ddd d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   T)r    )r>   r?   rD   r#   r    r    rB   rE   rF   r:   r:   r;   "test_plot_subplots_negative_layoutL   s   z5TestDataFramePlots.test_plot_subplots_negative_layoutc                 C   sb   t tjddttdtdtddddd	}t	|j
d
d
dd}t|dd t|ddd d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   TF)r>   r?   	use_indexr   xrotr#   r@   rB   )r   r0   r1   r2   r3   r   r4   r5   r   r   r6   r   r   rF   r:   r:   r;   test_plot_subplots_use_index[   s   z/TestDataFramePlots.test_plot_subplots_use_indexzApi changed in 3.6.0)reasonc                 C   s\   t ddgddgd}d}tjt|d |jjdd	 W d    d S 1 s'w   Y  d S )
NrA   r       r#   xyz''Line2D' object has no property 'blarg'matchT)blarg)r   pytestraisesAttributeErrorr6   liner8   r9   msgr:   r:   r;   test_plot_invalid_argk   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 )	Nr    r"   rQ   r"   r.   TrL   r   rM   )
r   r0   r1   r2   r4   stringascii_lettersr   r6   r   r8   r9   axr:   r:   r;   test_plot_tick_propss   s   z'TestDataFramePlots.test_plot_tick_propskwargsyticks)rA      r"   xticks)id   )ylimxlimTblah)r>   r?   titlec                 C   s>   t tjddttjd d d}t|jfi | d S )Nr    r_   r"   r`   	r   r0   r1   r2   r4   rb   rc   r   r6   r8   rg   r9   r:   r:   r;   test_plot_other_args}   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 ]#}t	|j
 t	| dd t	|jdddd t	|j
 gdd q(|d fD ]}t	|j
 t	|  t	|j
 g t|dd qQd S )Nr    r_   r"   r`   Trn   )r?   ro   rQ   rQ   rA   rB   Fvisibleminorr   rM   )r   r0   r1   r2   r4   rb   rc   r6   r   r   xaxisget_xticklabels	get_labelr   )r8   r9   rG   re   r:   r:   r;   test_plot_visible_ax   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 )Nr    r_   r"   r`   rn   ro   rp   r7   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 )	Nr"   r    r_   r`   Tra   r   rM   )ziprb   rc   ranger   r0   r1   r2   r   from_tuplesr   r6   r   )r8   tuplesr9   re   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   )r   rA   )   βr    )r   rQ   )   γr#   )r   ri   )   δ   )r      i0i1)names)baru   Δ)r   u   Εc0c1r    r   r"   )   r    r,   u   Σr|   )	r   r   r   r0   r1   r2   integersr   r6   )r8   r.   r-   r9   r:   r:   r;   test_plot_multiindex_unicode   s   
z/TestDataFramePlots.test_plot_multiindex_unicoderD   N)rI   rA   c                 C   s>   t dtjddi}t|jjd|d}t|ddd d S )	NrS   r    r"   T)r?   rD   rA   rA   rA   rB   )r   r0   r1   r2   r   r6   r   r   )r8   rD   r9   rG   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s$J |j
}||d u s/J d S )NrS   r    r"   Tr?   re   rA   r   )r   r0   r1   r2   mplpyplotr?   r6   r   lenrG   )r8   r9   _re   rG   resultr:   r:   r;   test_plot_passed_ax   s   z&TestDataFramePlots.test_plot_passed_axz
cols, x, yABCDEAr(   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)20082009N20112012rA   r    rQ   r#   ri   r   ri   rQ   r    r%   z%Yformati8T)r   utcr   r(   r   r   r   rR   )
r   r0   arraynanr5   pdto_datetimeviewr   r6   )r8   colsrS   rT   datesr9   r:   r:   r;   test_nullable_int_plot   s   
z)TestDataFramePlots.test_nullable_int_plotr6   )r[   r   histpiec                 C   s.   t jg ddd}t|}tt|j| d S )NrA   r    rQ   r#   UInt32r%   )r   r   r	   r   getattrr6   )r8   r6   arrsr:   r:   r;   test_integer_array_plot_series  s   z1TestDataFramePlots.test_integer_array_plot_serieszplot, kwargsr[   r   r   r   rT   scatterrS   rR   hexbinc                 C   s<   t jg ddd}t||d}tt|j|fi | d S )Nr   r   r%   rR   )r   r   r   r   r   r6   )r8   r6   rg   r   r9   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sJ d S )NrS   rT   zrA   r    rQ   r   r(   rA   )r   r6   r   	get_linesrd   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 )Nr    r_   abcr-   r   r   rR   )	r   r0   r1   r2   r3   r6   r   rx   rz   rd   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s"J d S )	Nr    rJ   r   r   r   NAMELABEL)rT   label)r   r0   r1   r2   r3   r.   namer6   r7   r:   r:   r;   test_donot_overwrite_index_name(  s   z2TestDataFramePlots.test_donot_overwrite_index_namec                 C   s   t tjddttdtdtdddd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 )Nr    ri   r#   r$   r%   r'   ri   r(   r)   r,   r   rA   rR   r   rS   rT   )r   r0   r1   r2   r3   r   r4   r5   r   r   r6   	set_indexr(   r7   r:   r:   r;   test_plot_xy1  s   " zTestDataFramePlots.test_plot_xyc                 C   s   t tjddttdtdtdddd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 )Nr    r   r$   r%   r'   ri   r(   r)   r,   rA   rR   r   r   )r   r0   r1   r2   r3   r   r4   r5   r   aranger   r-   r   r6   r   r7   r:   r:   r;   test_plot_xy_int_cols?  s   "z(TestDataFramePlots.test_plot_xy_int_colsc                 C   sd   t tjddttdtdtddddd	}|j	d
dddd}t
|jd t|d
ddd d S )Nr    r   r$   r%   r'   ri   r(   r)   r,   rA   Test)   r   )rS   rT   ro   figsizer   )g      0@g       @)rC   rD   r   )r   r0   r1   r2   r3   r   r4   r5   r   r6   r   ro   r   rd   r:   r:   r;   test_plot_xy_figsize_and_titleK  s   z1TestDataFramePlots.test_plot_xy_figsize_and_titlezinput_log, expected_log)Tlog)symsymlogc                 C   s   t dtditdd}|j|d}t||d | |ks"J |j|d}t||d | |ks6J |j|d}t|||d	 | |ksKJ | |ksSJ d S )
Nr   rk   r`   logyyaxis)logxrx   loglog)rx   r   )r   r0   r   r6   r   
get_yscale
get_xscale)r8   	input_logexpected_logr9   re   r:   r:   r;   test_logscalesY  s   z!TestDataFramePlots.test_logscalesinput_param)r   r   r   c                 C   s   t dtditdd}d| d}tjt|d |jdi |di W d    n1 s0w   Y  d| d	}tjt	|d |jj
dd
di|di W d    d S 1 s[w   Y  d S )Nr   rk   r`   z	keyword 'z*' should be bool, None, or 'sym', not 'sm'rU   smzPiePlot ignores the 'z	' keywordr?   Tr:   )r   r0   r   rX   rY   
ValueErrorr6   tmassert_produces_warningUserWarningr   )r8   r   r9   r]   r:   r:   r;   test_invalid_logscalel  s   "z(TestDataFramePlots.test_invalid_logscalec                 C   sl   t tjddttdtdtddddd	}|j	d
d}|
 }t|d  tr.J t|dd d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   T)x_compatr      rM   )r   r0   r1   r2   r3   r   r4   r5   r   r6   r   
isinstance	get_xdatar   r   r8   r9   re   linesr:   r:   r;   test_xcompaty  s   zTestDataFramePlots.test_xcompatc                 C   sr   t tjddttdtdtddddd	}d
t	j
d< | }| }t|d  tr1J t|dd d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   Tzxaxis.compatr   r   rM   )r   r0   r1   r2   r3   r   r4   r5   r   r   plot_paramsr6   r   r   r   r   r   r   r:   r:   r;   test_xcompat_plot_params  s   
z+TestDataFramePlots.test_xcompat_plot_paramsc                 C   s   t tjddttdtdtddddd	}d
t	j
d< | }| }t|d  tr1J d}tjt|d tt|d  tsHJ W d    d S 1 sSw   Y  d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   Fr   r   zPeriodDtype\[B\] is deprecatedrU   )r   r0   r1   r2   r3   r   r4   r5   r   r   r   r6   r   r   r   r   r   r   FutureWarningr8   r9   re   r   r]   r:   r:   r;   !test_xcompat_plot_params_x_compat  s   
"z4TestDataFramePlots.test_xcompat_plot_params_x_compatc                 C   s   t tjddttdtdtddddd	}t	j
d
d" | }| }t|d  tr4J t|dd W d    d S 1 sEw   Y  d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   r   Tr   r   rM   )r   r0   r1   r2   r3   r   r4   r5   r   r   r   user6   r   r   r   r   r   r   r:   r:   r;   (test_xcompat_plot_params_context_manager  s   "z;TestDataFramePlots.test_xcompat_plot_params_context_managerc                 C   s   t tjddttdtdtddddd	}|	 }|
 }t|d
  tr,J d}tjt|d tt|d
  tsCJ W d    n1 sMw   Y  t|d
d d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   r   zPeriodDtype\[B\] is deprecated rU   rM   )r   r0   r1   r2   r3   r   r4   r5   r   r6   r   r   r   r   r   r   r   r   r   r:   r:   r;   test_xcompat_plot_period  s   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 )Nr    )   r      rA      r   r   r.   r-   r   r   )
r   r0   r1   r2   r
   r   r6   r   r   axhliner7   r:   r:   r;   test_period_compat  s   z%TestDataFramePlots.test_period_compatindex_dtypec                 C   s   t dtdit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 )NrT   rk   c   rI   r%   )r.   r&   r   rA   )r&   r   F)check_index_type)r   r0   r   r   int64r6   r   
get_xydatar	   r   assert_series_equalrT   )r8   r  r9   re   r   rsr:   r:   r;   test_unsorted_index  s   *z&TestDataFramePlots.test_unsorted_indexr9                 ?       @      @)r  r  r  r  r`   r  r  r  g      @g      @g      @r  c                 C   s\   |  }| \}}| }|t|d  d ksJ |t|d  d ks,J d S )Nr   )r6   get_xlimr   r0   nanminget_datananmaxr8   r9   re   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s+J |t|d  d ks:J d S )Nr  )g     V@g     V@g     @W@g      W@)rT   r   r   rT   rR   r   )r   r6   r  r   r0   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 s3w   Y  tjt	|d |j
jdd
 W d    d S 1 sRw   Y  d S )Nr    r   r#   r   rS   rT   r   fourr  z+Log-y scales are not supported in area plotrU   Tr   r   )r   r0   r1   r2   r4   rb   rc   rX   rY   r   r6   arear\   r:   r:   r;   test_negative_log  s   "z$TestDataFramePlots.test_negative_logc                 C   sZ   t t|d  d }t||D ]\}}|| d 7 }| d }t|| qd S )Nr   rA   )r0   zerosr   r  r~   r   assert_numpy_array_equal)r8   normal_linesstacked_linesbasenlslsyr:   r:   r;   _compare_stacked_y_cood  s   z*TestDataFramePlots._compare_stacked_y_coodkindr  multrA   rI   c                 C   sV   |t tjddg dd }t|j|dd}t|j|dd}| |j|j d S )Nr    r  wrS   rT   r   r   Fr)  stackedTr   r0   r1   r2   r   r6   r(  r   )r8   r)  r*  r9   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 )Nr    r   r+  Fr-  Tr/  )r8   r)  sep_dfr0  r1  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    d S 1 s9w   Y  d S )Nr    r  r   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 valuesrU   T)r   r0   r1   r2   r3   r4   rb   rc   r   r6   rX   rY   r   )r8   mixed_dfr]   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 )Nr    r  r+  r   rA   T)r)  r   r.  )r   r0   r1   r2   r   r.   r   r6   )r8   r)  r9   df2r:   r:   r;   #test_line_area_stacked_positive_idx*  s
   z6TestDataFramePlots.test_line_area_stacked_positive_idxidxr#   z	2023-01-1)r+   r*   c           	      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 )NrA   r    rQ   r   r   r`   r   r   r%   )rQ   r    rA   )FFTF)FTFF)r0   r   r   r   r6   r   	get_ydatar   float64r   r!  deletedatamask)	r8   r:  values1values2r9   re   masked1masked2expr:   r:   r;   test_line_area_nan_df4  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 )NrA   r    rQ   r;  r`   rA   r    r   rQ   r%   rQ   r   r    rA   Tr5  r   )r0   r   r   r   r=  r   r6   r   r!  r   r<  )r8   r:  rA  rB  r9   	expected1	expected2re   r:   r:   r;   test_line_area_nan_df_stackedI  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	  | |rNt	|j
d  | nt	|j
d  ||  t|jjd
d}t	|j
d	  | t	|j
d  | d S )NrA   r    rQ   r;  r`   rG  r%   rH  r   Fr5  )r0   r   r   r   r=  r   r6   r  r   r!  r   r<  )	r8   r:  rg   rA  rB  r9   rI  rJ  re   r:   r:   r;   "test_line_area_nan_df_stacked_areaX  s   z5TestDataFramePlots.test_line_area_nan_df_stacked_areasecondary_yc                 C   s~   t tjddg dd}|jdi |}| \}}| }||d  d d ks/J ||d  d d ks=J d S )Nr    r   rQ   r   r   r   rI   r:   )r   r0   r1   r2   r6   r  r   r  )r8   rg   r9   re   r  r  r   r:   r:   r;   test_line_limo  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 ]6}t|d
s(J t|dr/J | \}}| }||d 	 d d ksGJ ||d 	 d d ksUJ qd S )Nr    rN  r   r   T)rM  r?   rQ   rs   rB   left_axright_axr   rI   )
r   r0   r1   r2   r6   r   hasattrr  r   r  )r8   r9   rG   re   r  r  r   r:   r:   r;   test_line_lim_subplotsx  s   z)TestDataFramePlots.test_line_lim_subplotszX2020-12-01 this has been failing periodically on the ymin==0 assertion for a week or so.)strictrP   c           
      C   s   t tjddg dd}| }t|jj|d}| \}}| \}}|	 }	||	d 
 d d ks8J ||	d 
 d d ksFJ |dksLJ t|jj|d}| \}}|dks`J d S )Nr    r  r  r   r5  r   rI   )r   r0   r1   r2   r   r6   r  r  get_ylimr   r  )
r8   r.  r9   neg_dfre   r  r  yminymaxr   r:   r:   r;   test_area_lim  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|	||s4J t|	||s>J d S )Nr    r#   r    rS   rT   r   rA   T)shareyr  )re   r)  )
r   r0   r1   r2   r   r   r?   r6   r   joined)r8   r9   figr0  r1  r:   r:   r;   test_area_sharey_dont_overwrite  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 )Nr    ri   ri   )r.  	linewidth)	r   r0   r1   r2   r3   r6   r   patchesget_linewidth)r8   r.  r9   re   rr:   r:   r;   test_bar_linewidth  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s+J q!qd S )Nr    r_  T)r`  r?   ri   )ri   rA   rB   )
r   r0   r1   r2   r3   r6   r   r   ra  rb  )r8   r9   rG   re   rc  r:   r:   r;   test_bar_linewidth_subplots  s   
z.TestDataFramePlots.test_bar_linewidth_subplotsz	meth, dim)r   	get_width)barh
get_heightc                 C   sv   t tjdd}d}t|j|||d}|jD ]}|s.t|| |t|j	 ks-J qt|| |ks8J qd S )Nr    r_  ?)r.  width)
r   r0   r1   r2   r3   r   r6   ra  r   r-   )r8   methdimr.  r9   rj  re   rc  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qd S )Nr    r_  ri  T)rj  r?   )r   r0   r1   r2   r3   r   r6   ra  )r8   rk  rl  r9   rj  rG   re   rc  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s$J |jjd	g d
d}dd |jd d D }|g d
ksBJ d S )Nr    r_  FrA   )r.  bottomc                 S      g | ]}|  qS r:   get_y.0pr:   r:   r;   
<listcomp>      zBTestDataFramePlots.test_bar_bottom_left_bottom.<locals>.<listcomp>   T)rI   c                 S   rp  r:   rq  rs  r:   r:   r;   rv    rw  ri   )r   r0   r1   r2   r6   r   ra  r8   r9   re   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s)J |jjd
g dd}dd |jd d D }|g dksGJ d S )Nr    r_  FrA   rA   rA   rA   rA   )r.  leftc                 S   rp  r:   get_xrs  r:   r:   r;   rv    rw  z@TestDataFramePlots.test_bar_bottom_left_left.<locals>.<listcomp>rA   rx  Tr   c                 S   rp  r:   r  rs  r:   r:   r;   rv    rw  ri   )r   r0   r1   r2   r6   rg  r   ra  r}  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sKJ q8d S )Nr    r_  TrI   )r?   ro  c                 S   rp  r:   rq  rs  r:   r:   r;   rv    rw  zDTestDataFramePlots.test_bar_bottom_left_subplots.<locals>.<listcomp>ri   r  )r?   r  c                 S   rp  r:   r  rs  r:   r:   r;   rv    rw  rA   )	r   r0   r1   r2   r6   r   ra  rg  r   )r8   r9   rG   re   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s'J d S )	Nr"      ri   r"   r  r   r   r(   r   	r"   r   r  ri   r"   r  rA   r    rQ   c                 S   rp  r:   rh  rs  r:   r:   r;   rv    rw  z3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>r   r0   r   r6   r   ra  r8   r9   re   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s)J dd
 |jD }g d}||ks;J d S )Nr"   r  r  r   r  Tr5  r  c                 S   rp  r:   r  rs  r:   r:   r;   rv    rw  z;TestDataFramePlots.test_bar_nan_stacked.<locals>.<listcomp>c                 S   rp  r:   rq  rs  r:   r:   r;   rv    rw  )	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s3J |jd  d	ks>J |jd
  dksIJ |jjdd}t
|tg d | dkscJ |jd  d	ksnJ |jd
  dksyJ d S )Nr    )r   ri   ABCDEFabcder  )r   rA   r    rQ   r#   ri   )g      g      @r   g      пrI   g@Tr5  g      @)r   r0   r1   r2   r3   r4   r6   r   rx   get_ticklocsr   r!  r   r  ra  r  )r8   r:  r9   re   ticksr:   r:   r;   test_bar_categorical  s    



z'TestDataFramePlots.test_bar_categoricalzx, yrA   r    c                 C   sD   t tjddttjd d g dd}t|j	j
||d d S )Nr    r  r   r  r  rR   )r   r0   r1   r2   r3   r4   rb   rc   r   r6   r   r8   rS   rT   r9   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 s5w   Y  t	d
}t
jt|d |jjdd W d    d S 1 sYw   Y  d S )Nr    r  r   r  r  z5scatter() missing 1 required positional argument: 'y'rU   rS   r   z5scatter() missing 1 required positional argument: 'x'rT   r   )r   r0   r1   r2   r3   r4   rb   rc   reescaperX   rY   	TypeErrorr6   r   r\   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 )Nr    r  r   r  r  rS   rT   r   T)rS   rT   r)  r?   rA   r   rB   )
r   r0   r1   r2   r3   r4   rb   rc   r6   r   rF   r:   r:   r;   test_plot_scatter_shape6  s   z*TestDataFramePlots.test_plot_scatter_shapec                 C   sx   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    d S 1 s5w   Y  d S )Nr    r"   r   r   z
2014-01-01h)startr+   r*   dtimez9must be a string or a (real )?number, not 'datetime.time'rU   r   )r)  rS   rT   )r   r0   r1   r2   r3   r   timerX   rY   r  r6   r\   r:   r:   r;   &test_raise_error_on_datetime_time_data@  s   "z9TestDataFramePlots.test_raise_error_on_datetime_time_datar   valsr   rA   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  rA      W)r  r*   r+   r    r   r  rR   )r   r   r0   r1   r2   normalr   r   r   r6   r   )r8   rS   rT   r   r  r9   r:   r:   r;   test_scatterplot_datetime_dataI  s   z1TestDataFramePlots.test_scatterplot_datetime_datainfer_stringpyarrow)marksr;  b_colr    rQ   r#   r   c                 C   sT   t d| tg d|d}t|jj||d W d    d S 1 s#w   Y  d S )Nzfuture.infer_stringr  r;  rR   )r   r   r   r6   r   )r8   r  rS   rT   r  r9   r:   r:   r;   test_scatterplot_object_dataR  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 snJ d S )Ngffffff@g      @g@r  g      @g	@g@g@lengthrj  r   )r  r  r  r  r  )r  r  speciesr   rA   rS   rT   r   )      ?g      ?g      @r  c                 S   rp  r:   get_text)rt  ir:   r:   r;   rv  z  rw  zLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>c                 s   s    | ]	\}}||kV  qd S Nr:   )rt  r  jr:   r:   r;   	<genexpr>{  s    zKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)r   r   Categoricalr6   r   collectionscolorbarr0   r   	get_ticksr   r!  _boundariesre   get_ymajorticklabelsallr~   )r8   r  r  r9   re   colorbar_collectionr  expected_ticksresult_ticksexpected_boundariesresult_boundariesexpected_yticklabelsresult_yticklabelsr:   r:   r;   %test_scatterplot_color_by_categorical^  s*    
 z8TestDataFramePlots.test_scatterplot_color_by_categorical)rR   )rT   rS   )rT   rT   c                 C   s2   t g dtg dd}t|jj||d d S )Nr   )r   r   r   r   rR   )r   r   r  r   r6   r   r  r:   r:   r;   'test_plot_scatter_with_categorical_data}  s   z:TestDataFramePlots.test_plot_scatter_with_categorical_datazx, y, cr   )r   rA   r    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s;J d S )Nr    r   rk   r  lowhighsizer   r  r  r  Greysr   )r   r0   r1   r2   r   r4   rb   rc   r6   r   r  cmapr   r  re   
get_ylabel)r8   rS   rT   r   r9   re   r:   r:   r;   test_plot_scatter_with_c  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s1J |jj	d
dddd}|j
d jd u sEJ |jj	dddd}|j
d jd u sXJ t|j
dgd d S )Nr    r   rk   r  r  r   r  r  	cubehelixrS   rT   r   )rS   rT   r   colormapF)rS   rT   r   r  rA   redr  rc  
facecolors)r   r0   r1   r2   r   r4   rb   rc   r6   r   r  r  r   r  r   )r8   r9   cmre   r:   r:   r;   test_plot_scatter_with_c_props  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 )NrA   r    rQ   r#   r   )r  r  r  r  )r  r  r  r  r   r(   r  r   r  r  spring)rS   rT   r   r  )	r   r0   r   r6   r   r   r!  r  get_facecolor)r8   r9   red_rgba
green_rgba
rgba_arrayre   float_arrayr:   r:   r;   test_plot_scatter_with_c_array  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 )Nr    r_   rk   r   r   r   r   r   )rS   rT   r   r   )right)r   r0   r1   r2   r6   r   r   r!  valuesr  	get_sizesrd   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 s*J d S )Nr    r_   rk   r   r   r   r   r   )rS   rT   r   normr   )r   r0   r1   r2   r   colorsLogNormr6   r   r  r  )r8   r9   r  re   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s?J q3d S )Nr    r_   rk   r   r   r   r   r   r  r   )r   r0   r1   r2   r6   r   r  r  r   minmaxr   r  	Normalize)r8   r9   re   	plot_normcolor_min_max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 )Nr    r  r   onetwothreer  r  )r   r0   r1   r2   r3   r4   rb   rc   r   r6   r   rq   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 )Nr    )r"      r"   r  r  )r   r0   r1   r2   r3   r4   rb   rc   r   r   r6   r   r7   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   rA   r;  Z   rM   #   r"   rotfontsizerN   
xlabelsize
ylabelsize)r   r   r6   r   r   rd   r:   r:   r;   test_plot_bar_ticks  
   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   rA   r;  )yrot7      r  )r  r  r  )r   r   r6   rg  r   rd   r:   r:   r;   test_plot_barh_ticks  r  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s9J d S )Nc                 S      g | ]}t |qS r:   r   rt  r   r:   r:   r;   rv    rw  z3TestDataFramePlots.test_boxplot.<locals>.<listcomp>rA   r   )_get_numeric_datar-   r   r6   boxr   ry   r   r!  rx   r  r0   r   r   r   r8   hist_dfr9   numeric_colslabelsre   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   rN   r  )r6   r  r   r   )r8   r  r9   seriesrG   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s9J d S )N)rA   r   r   )	positionsc                 S   r
  r:   r   r  r:   r:   r;   rv  !  rw  zDTestDataFramePlots.test_boxplot_series_positions.<locals>.<listcomp>r   )r0   r   r6   r  r  r-   r   ry   r   r!  rx   r  r   r   )r8   r  r9   r  re   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s3J d S )
Nc                 S   r
  r:   r   r  r:   r:   r;   rv  )  rw  z<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>2   r   F)r  r   vertr   rN   r  r  r   )	r  r-   r6   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s@J q+d S )Nc                 S   r
  r:   r   r  r:   r:   r;   rv  5  rw  zETestDataFramePlots.test_boxplot_vertical_subplots.<locals>.<listcomp>TF)r>   r?   r  r   rQ   )rA   rQ   rB   r   r   r   )r  r-   r   r6   r  r   r   r~   r   r  r   r   )r8   r  r9   r  r  rG   re   r   r:   r:   r;   test_boxplot_vertical_subplots1  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s:J d S )Nc                 S   r
  r:   r   r  r:   r:   r;   rv  F  rw  zFTestDataFramePlots.test_boxplot_vertical_positions.<locals>.<listcomp>)rQ   r    r   F)r  r  r   )r  r-   r0   r   r6   r  r   r  r   r!  r   r  r   r   )r8   r  r9   r  r  r  re   r:   r:   r;   test_boxplot_vertical_positionsC  s   
z2TestDataFramePlots.test_boxplot_vertical_positionsc                 C   st   t tjddttjd d g dd}d}tj	t
|d |jjdd	 W d    d S 1 s3w   Y  d S )
Nr    r  r   r  r  z2return_type must be {None, 'axes', 'dict', 'both'}rU   
not_a_typereturn_type)r   r0   r1   r2   r3   r4   rb   rc   rX   rY   r   r6   r  r\   r:   r:   r;    test_boxplot_return_type_invalidM  s   "z3TestDataFramePlots.test_boxplot_return_type_invalidr$  )dictrG   bothc                 C   sJ   t tjddttjd d g dd}|jj	|d}t
|| d S )Nr    r  r   r  r  r#  )r   r0   r1   r2   r3   r4   rb   rc   r6   r  r   )r8   r$  r9   r   r:   r:   r;   %test_boxplot_return_type_invalid_typeW  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scipyr    rk   r#   kder)  c                 S   r
  r:   r   r  r:   r:   r;   rv  e  rw  z2TestDataFramePlots.test_kde_df.<locals>.<listcomp>r  r   rM   )rX   importorskipr   r0   r1   r2   r3   r   r6   r-   r   r   )r8   r9   re   r  r:   r:   r;   test_kde_dfa  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)  r    r!   r+  r  ri   )r)  r  r   r  )	rX   r.  r   r0   r1   r2   r3   r6   r   rd   r:   r:   r;   test_kde_df_roti  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)  r    r!   Tr+  )r>   r)  r?   r#   r@   rB   )
rX   r.  r   r0   r1   r2   r3   r   r6   r   rF   r:   r:   r;   test_kde_df_subplotso  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)  r    r!   r+  T)r)  r   r?   r   r   )	rX   r.  r   r0   r1   r2   r3   r6   r   rF   r:   r:   r;   test_kde_df_logyz  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)  r    r*  r  r   r   r+  r,  )rX   r.  r   r0   r1   r2   uniformr   locr   r6   r7   r:   r:   r;   test_kde_missing_vals  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 )Nr    r*  c                 S   r
  r:   r   r  r:   r:   r;   rv    rw  z3TestDataFramePlots.test_hist_df.<locals>.<listcomp>r-  T)r>   r?   r   r#   r@   rB   r   r   )r   r0   r1   r2   r3   r   r6   r   r-   r   r   r   )r8   r9   re   r  rG   r:   r:   r;   test_hist_df  s   zTestDataFramePlots.test_hist_dfc                 C   s6   t tjdd}|jjdd}t|ddd d S )Nr    r"   r  r  r   r  )r	   r0   r1   r2   r6   r   r   )r8   r  rG   r:   r:   r;   test_hist_df_series  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   	Rectangler    r"   Tr#   )
cumulativebinsdensityc                       g | ]	}t | r|qS r:   r   rt  rS   r:  r:   r;   rv        zMTestDataFramePlots.test_hist_df_series_cumulative_density.<locals>.<listcomp>rI   r  matplotlib.patchesr;  r	   r0   r1   r2   r6   r   get_childrenr   assert_almost_equalrh  r8   r  re   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:  r    r"   Tr#   )r<  r=  c                    r?  r:   r@  rA  r:  r:   r;   rv    rB  zETestDataFramePlots.test_hist_df_series_cumulative.<locals>.<listcomp>ry  r  rC  rG  r:   r:  r;   test_hist_df_series_cumulative  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 )	Nr    r!   r  r   
horizontal)r  r   orientationr   r  )r   r0   r1   r2   r3   r6   r   r   rF   r:   r:   r;   test_hist_df_orientation  s   z+TestDataFramePlots.test_hist_df_orientationweights皙?)rk   )shape)rk   r    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(   r    r    rk   r   )r)  rN  r,  c                 S   rp  r:   r  rt  patchr:   r:   r;   rv    rw  z8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>c                 S   s   g | ]}d |   qS )rO  r  rR  r:   r:   r;   rv        )r   r&  r~   r0   r1   r2   r3   r   r6   ra  r   rF  )r8   rN  r9   r0  r1  patch_height_with_weightsexpected_patch_heightr:   r:   r;   test_hist_weights  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r4tj||dd |d ur@tj||dd |d urLtj||dd |d urZtj|	|dd d S d S )Nc                 S   rp  r:   rq  rs  r:   r:   r;   rv    rw  z7TestDataFramePlots._check_box_coord.<locals>.<listcomp>c                 S   rp  r:   r  rs  r:   r:   r;   rv    rw  c                 S   rp  r:   r  rs  r:   r:   r;   rv    rw  c                 S   rp  r:   )rf  rs  r:   r:   r;   rv    rw  F)check_dtype)r0   r   r   r!  )
r8   ra  
expected_y
expected_h
expected_x
expected_wresult_yresult_heightresult_xresult_widthr:   r:   r;   _check_box_coord  s   z#TestDataFramePlots._check_box_coordr?  r   r"   	   r   r   r   r   r   r   r   r   r   r   r   rc  r"   r  r    rQ   ri   )rQ   r"   rc  r   r   r   )r   rQ   r   r   r   r   )r   r   r   rQ   rc  r"   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 )Nri   )r=  )r   r   r   r   r   rb  )rY  rZ  r"   rd  re  T)r=  r.  )      r   r     )r=  r.  r?   r   rA   r    rK  )r=  rL  )r[  r\  )r=  r.  rL  )r=  r.  r?   rL  )r   r6   r   ra  ra  r0   r   )r8   r?  r9   re   rG   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 )Nr    r*  Tr  )r   r0   r1   r2   r3   cumsumr   r6   r7   r:   r:   r;   test_plot_int_columns`  s   z(TestDataFramePlots.test_plot_int_columnsmarkers^+o)rn  ro  rp  c                 C   s   dd l m} | }|  |d ttjd	d}|j
|d}t| d t| D ]\}}| || ks>J q0d S )Nr   o   r    r_   )style)matplotlib.pyplotr   gcfclfadd_subplotr   r0   r1   r2   r3   r6   	enumerater   r   
get_marker)r8   rm  pltr]  r9   re   r:  r[   r:   r:   r;   test_style_by_columnd  s   

 z'TestDataFramePlots.test_style_by_columnc                 C   sP   t ddg}| }| d u sJ |jdd}|  d  dks&J d S )NrA   r    Trj  r    )r	   r6   
get_legend	get_textsr  )r8   r   re   r:   r:   r;   test_line_label_nonex  s
    z'TestDataFramePlots.test_line_label_nonezprops, expected))boxpropsboxes)whiskerpropswhiskers)cappropscaps)medianpropsmediansc                 C   sP   t dd dD }|ddii}|jjd	ddi|}|| d  dks&J d S )
Nc                 S   s    i | ]}|t jd dqS rQ  )r0   r1   r2   )rt  kr:   r:   r;   
<dictcomp>  s     zHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ABCcolorC1r$  r&  r   r:   )r   r6   r  	get_color)r8   propsr  r9   kwdr   r:   r:   r;   !test_specified_props_kwd_plot_box  s   z4TestDataFramePlots.test_specified_props_kwd_plot_boxc           	      C   s   t dddt dddt dddg}g d}tt||dgd}| }|jd	  }t|tj|t	d
 |jd	 
 }t|t| |j }dd |D }t|jsYJ dd |D }tj|ddjsjJ d S )N  r"   rA   rc  r   )r  r  r  testr  r   r%   c                 S   s   g | ]}|  d  qS )r   )get_positionrA  r:   r:   r;   rv    rT  z8TestDataFramePlots.test_unordered_ts.<locals>.<listcomp>c                 S   rp  r:   r  rA  r:   r:   r;   rv    rw  z%Y-%m-%dr   )r   r   r0   r   r6   r   r   r   r!  r5   r<  rx   get_ticklabelsr   is_monotonic_increasingr   r   )	r8   r.   r  r9   re   rj   ydataxlocsxlabelsr:   r:   r;   test_unordered_ts  s"   "
z$TestDataFramePlots.test_unordered_tsc                 C   s8   t d tdg di}|j|d t|j|  d S Nr)  rS   r   r,  rX   r.  r   r6   r   r8   r)  r9   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_y  s   
z*TestDataFramePlots.test_kind_both_ways_x_yc                 C   sP   t td}d}tjt|d |j|d W d    d S 1 s!w   Y  d S )Nabcdno numeric data to plotrU   r,  )r   r4   rX   rY   r  r6   r8   r)  r9   r]   r:   r:   r;   test_all_invalid_plot_data  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    d S 1 s8w   Y  d S )
Nr    r"   r    r%   r   r   r  r  rU   r,  )r   r0   r1   r2   r3   r5   rP  rX   rY   r  r6   r  r:   r:   r;   (test_partially_invalid_plot_data_numeric  s    "z;TestDataFramePlots.test_partially_invalid_plot_data_numericc                 C   sZ   t tjdd}d}tjt|d |jdd W d    d S 1 s&w   Y  d S )Nr    r  z*invalid_plot_kind is not a valid plot kindrU   invalid_plot_kindr,  )	r   r0   r1   r2   r3   rX   rY   r   r6   r\   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    d S 1 s)w   Y  d S )NrA   r    rQ   r#   ri   r   r  x must be a label or positionrU   rS   rT   r   r   rX   rY   r   r6   )r8   rS   rT   lblr9   r:   r:   r;   test_invalid_xy_args  s   	"z'TestDataFramePlots.test_invalid_xy_argsc                 C   sh   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    d S 1 s-w   Y  d S )NrA   r    rQ   r#   ri   r   r  z.label should be list-like and same length as yrU   r   r(   r   	bad_labelr  r  r\   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    d S 1 s(w   Y  d S )N)rA   rQ   ri   )r    r#   r   AABr   r  rU   rR   )r   r4   rX   rY   r   r6   r  r:   r:   r;   test_invalid_xy_args_dup_cols  s   "z0TestDataFramePlots.test_invalid_xy_args_dup_colszx,y,lbl,colorsr  bluer   bokehcythongreenyellowc                 C   sj   t ddgddgddgd}t|jd||d	 |j||||d
}t|jt|ks+J t| |d d S )NrA   r    rQ   r#   ri   r   r  r   r  )rS   rT   r   r  
linecolors)r   r   r6   r   r   r   r   )r8   rS   rT   r  r  r9   re   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 )NrA   r    rQ   r#   r   rR   )r   r-   r   r6   )r8   rS   rT   colnamesr9   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s7J d S )
Nr    r  r3  r  r   r(   r"   )rS   rT   gridsizerA   
r   r0   r1   r2   r5  r   r6   r   r   r  rd   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s:J t|d
dd d S )Nr    r  r3  r  r   r(   T)rS   rT   r?   r   rA   r   rB   )r   r0   r1   r2   r5  r   r6   r   r   figurerG   r   rF   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s8J d S )
Nr    r  r3  r  r   r(   r   )rS   rT   r   reduce_C_functionrA   r  )r8   r  r9   re   r:   r:   r;   test_hexbin_with_c  s   z%TestDataFramePlots.test_hexbin_with_czkwargs, expectedBuGnr  r  r  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d	ddd|}|jd j	j
|ks<J d S )
Nr    r  r3  r  r   r(   rR   r   r:   )r   r0   r1   r2   r5  r   r6   r   r  r  r   )r8   rg   r  r9   re   r:   r:   r;   test_hexbin_cmap,  s   	z#TestDataFramePlots.test_hexbin_cmapc                 C   sf   t tjddg dg dd}d}tjt|d |j  W d    d S 1 s,w   Y  d S )Nr    ri   rQ   XYZr   r   r   der,   z/pie requires either y column or 'subplots=True'rU   )	r   r0   r1   r2   rX   rY   r   r6   r   r\   r:   r:   r;   test_pie_df_err?  s   "z"TestDataFramePlots.test_pie_df_errr  c                 C   sF   t tjddg dg dd}t|jj|d}t|j|j	 d S )Nr    r  r  r  r,   r   )
r   r0   r1   r2   r   r6   r   r   textsr.   )r8   rT   r9   re   r:   r:   r;   test_pie_dfI  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s&J |D ]	}t	|j
|j q(t||jD ]\}}| |ksDJ q8d S )Nr    r  r  r  r,   Tr=   )r   r0   r1   r2   r   r6   r   r   r-   r   r  r.   r~   r  )r8   r9   rG   re   ylabelr:   r:   r;   test_pie_df_subplotsS  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s0J |D ]}t	|j
| t|j|d
 q2d S )Nr    r  r  r  r,   r   )rc  gr   r   mT)r>   r?   r  r  r  )r   r0   r1   r2   r   r6   r   r   r-   r   r  r   ra  )r8   r9   r  
color_argsrG   re   r:   r:   r;   test_pie_df_labels_colorsd  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dd|dd| W d    n1 sDw   Y  g d}t|D ]9\}}t|}d	||< d
d |jD }	|	|kskJ dd |  D }
|d | ||d d   }|
|ksJ qQd S )Nr    )r#   r#   r#   )ncols	normalizeT)r?   re   r  )0123r{  c                 S   rp  r:   r  rA  r:   r:   r;   rv    rw  z6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>c                 S   rp  r:   r  rA  r:   r:   r;   rv    rw  rA   r:   )r   r0   r1   r2   r   r   ilocr   r   r?   r   r   r6   r   rw  r4   r  r|  r}  )r8   r9   r  r   rG   rg   base_expectedre   r  r   result_labelsexpected_labelsr:   r:   r;   test_pie_df_nany  s$   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 )
Nr  r   rI   rR   皙?皙?yerrr    xerrr  r0   r   r   onesr   r6   r   )r8   rg   r  r9   d_errdf_errre   r:   r:   r;   test_errorbar_plot  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 )Nr  r   rI   rR   r  r  rA   r   T)r  r  r)  r   r    r  r  )r8   r  r9   r  r  re   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 )Nr  r   rI   rR   rT   r  r  rA   r  )r    r  r    )r0   r   r   r   r6   r  r   r8   r  r9   re   r:   r:   r;   test_errorbar_plot_yerr_array  s   z0TestDataFramePlots.test_errorbar_plot_yerr_arrayr  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 )Nr  r   rI   rR   r  r  r    r  rT   rS   )rT   rS   r  rA   r  )r8   r  r  r9   re   r:   r:   r;   test_errorbar_plot_column_name  s   z1TestDataFramePlots.test_errorbar_plot_column_namec                 C   sl   t dt dddd}t|}tt |jt jd	dd W d    d S 1 s/w   Y  d S )Nr  r   rI   rR   r    r  r  )
r0   r   r   r   external_error_raisedr   r6   r1   r2   r3   r8   r  r9   r:   r:   r;   &test_errorbar_plot_external_valueerror  s
   "z9TestDataFramePlots.test_errorbar_plot_external_valueerrorc                 C   sx   t dt dddd}t|}tdgd dgd d}tt |j|d W d    d S 1 s5w   Y  d S )Nr  r   rI   rR   zzzr  )r0   r   r   r   r  r  r6   )r8   r  r9   r  r:   r:   r;   %test_errorbar_plot_external_typeerror  s   "z8TestDataFramePlots.test_errorbar_plot_external_typeerror)r[   r   rg  y_errr  r  )r   r  c                 C   s@   t tdtdddd}t|j||d}t|ddd d S )Nr  r   rI   rR   r  r)  r    r  r   r0   r   r   r6   r   )r8   r)  r  r9   re   r:   r:   r;   !test_errorbar_plot_different_yerr  s   
z4TestDataFramePlots.test_errorbar_plot_different_yerrzy_err, x_err)r  r  c                 C   sB   t tdtdddd}t|j|||d}t|ddd d S )Nr  r   rI   rR   )r  r  r)  r    r  r  )r8   r)  r  x_errr9   re   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 )Nr  r   rI   rR   r  r  T)r>   r  r  r?   r)  rA   r  )r   r0   r   r  r   r6   r   )r8   r)  r9   r  rG   r:   r:   r;   /test_errorbar_plot_different_yerr_xerr_subplots  s   "zBTestDataFramePlots.test_errorbar_plot_different_yerr_xerr_subplotszIterator is consumed)rP   rY   c                 C   sN   t dt dddd}t|}t|jtdt|d}t|ddd d S )	Nr  r   rI   rR   rO  r  r    r  )	r0   r   r   r   r6   	itertoolsrepeatr   r   r  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 )Nr    r  r  r   r  rA   )rT   r  	r   r0   absr1   r2   r3   r   r6   r   r8   r9   r  re   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 )Nr    r_   r  r   r   r  r  r  )r8   r)  r9   r  re   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 )Nr    r_   r  r   r   1/1/2000r"   MEr)   T)inplacer[   r  r  )r   r0   r  r1   r2   r3   r   r   r   r6   r   )r8   r9   r  ixre   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>1  s    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 )Nr  r   rI   rR   r  r  )rS   r   r  rA   r  r  )r8   r  r  r9   errre   r:   r:   r;   &test_errorbar_with_partial_columns_box0  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 )Nr  r   rI   rR   r  r  r  z1/1/2001r  )r+   r`   r  r    r  rT   rS   )rT   r  r)  rA   T)r>   r)  r  r?   )r0   r   r  r   r   r   r6   r   )	r8   r)  r  r  r  tdftdf_errre   rG   r:   r:   r;   test_errorbar_timeseries9  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    d S 1 scw   Y  d S )Nr    )rQ   r    ri   r  rQ   ri   )r  r  rA   r   rI   zCAsymmetrical error bars should be provided with the shape (3, 2, 5)rU   r  )r0   r1   r2   r   r   reshapeTr6   r  	get_pathsverticesr   r   rF  r  r  rX   rY   r   )r8   r
  r9   re   yerr_0_0expected_0_0r]   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 & | }t|jdks5J t||j t|jdksEJ W d    d S 1 sPw   Y  d S )	Nr    r_   r"   r`   T)tabler   rA   )r   r0   r1   r2   r4   rb   rc   r   r6   r   r   r   tablesr   r  r  rd   r:   r:   r;   
test_tablem  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 )Nr    )ri   r    ri   rS   rT   r  rR   r   r  )rS   rT   r  rA   )rS   rT   r  )rS   rT   r  r  )r   r0   r  r1   r2   r3   r   r   r6   r   r   r   r:   r:   r;   test_errorbar_scatter|  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|r|| 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    s     z`TestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_color.<locals>.<genexpr>c                    s   g | ]	}| j v r|qS r:   )r  rA  re   r:   r;   rv    rB  zaTestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_color.<locals>.<listcomp>r  )	next
containersr   extendappendr   r0   r   r   )r  r  r  r   errsel	err_linesr  r  r;   _check_errorbar_color  s    zMTestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_colorr    )r"   ri   r  r   r   r   r  r  r  )rS   rT   r  r  r   rA   r  r  has_yerrr  )rS   rT   r  r  r   )r  )
r   r0   r  r1   r2   r3   r6   r   r   r  )r8   r%  r9   r:   r  r;   test_errorbar_scatter_color  s   z.TestDataFramePlots.test_errorbar_scatter_colorc                 C   s\   t g ddd}tjttfdd |jdddd	d
 W d    d S 1 s'w   Y  d S )Nr   r#   r;  z'unknown' is not arU   r   r   unknownr   )rS   rT   r  r)  )r   rX   rY   r   KeyErrorr6   r7   r:   r:   r;   test_scatter_unknown_colormap  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 q'||  || |d t \}}t	t
 |jd
|d
d}W d    n1 saw   Y  || d S )Nr   r  rA   r    rQ   r#   ri   r   r   r   r   r  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 q;d S )	NrA   Trt   r   r    Frv   rQ   )r   r   r   r  ry   rG   re   r:   r:   r;   _check  s   z5TestDataFramePlots.test_sharex_and_ax.<locals>._checkr   r   ro   T)rS   rT   ro   re   sharex)r?   re   r/  )rs  r   close_generate_4_axes_via_gridspecr   r6   tight_layoutrt  r   r   r   r8   ry  gsrG   r9   r.  re   r:   r:   r;   test_sharex_and_ax  s*   

	

z%TestDataFramePlots.test_sharex_and_axc                 C      dd l m} tg dg dg dg dd}t \}}|D ]}|jddd|d q||  |D ]%}t|jdks>J t	|
 d	d
 t	| d	d
 t	|jd	dd	d
 q3d S Nr   r+  r,  r   r   ro   )rS   rT   ro   re   rA   Trt   rv   rs  r   r   r1  r6   r2  rt  r   r   r   r  ry   r8   ry  r9   r4  rG   re   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
 q"||  || |d t \}}t	t
 |jd	|d	d}W d    n1 s\w   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 q(| d | d fD ]
}t| dd q;d S )	NrA   Trt   rv   r   r    rQ   F)r   r   r   ry   r  r-  r:   r:   r;   r.    s   z5TestDataFramePlots.test_sharey_and_ax.<locals>._checkr   r   ro   T)rS   rT   ro   re   r[  r  )r?   re   r[  )rs  r   r1  r   r6   r2  rt  r0  r   r   r   r3  r:   r:   r;   test_sharey_and_ax  s*   
	


z%TestDataFramePlots.test_sharey_and_axc                 C   r6  r7  r8  r9  r:   r:   r;   test_sharey_and_ax_tight  s$   
z+TestDataFramePlots.test_sharey_and_ax_tightc                 C   s  t d i }|dv r6ttjdjddtjdjddtdtjdjdd d}ddd	}n9|d
krVttjddt	t
dtdtddddd }nttjddt	t
dtdtddddd}t|jdd|i|}td t  | du sJ dS )z3Check that every plot type gets properly collected.r)  )r   r   r   r    r  r3  r  r   r(   rR   r  r!   r$   r%   r'   r"   r)   r,   r)  r  Nr:   )rX   r.  r   r0   r1   r2   r5  r   r3   r   r4   r5   r   r  weakrefrefr6   ry  r0  gccollect)r8   r)  argsr9   r>  r:   r:   r;   test_memory_leak4  s6   

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 ]H\}}|j|d}t|jdksUJ |j|d}t|jdksdJ ||fD ]}t| dd t| dd t|jdddd qhd qB| | fD ]C\}}|jd||gd}t|jdksJ t|jdksJ |D ]}t| dd t| dd t|jdddd qd q| \}}tt |jd||gddd}W d    n1 sw   Y  t|d jdksJ t|d jdksJ ||fD ]}t| dd qt|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 stw   Y  t|d jdksJ t|d jdksJ t|d  dd t|d  dd ||fD ]}t| dd t|jdddd qd d S )Nr   gridspecr    r"   r  r*   r`   r  ABr  c                     sL     dd}  }|| d dd d f }|| dd d f }||fS )NrQ   rA   r    GridSpecr  rv  r4  r]  r0  r1  rD  ry  r:   r;   _get_vertical_gridi  
   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 )NrA   rQ   r    rG  rI  rJ  r:   r;   _get_horizontal_gridp  rL  zUTestDataFramePlots.test_df_gridspec_patterns_vert_horiz.<locals>._get_horizontal_gridr  rA   Trt   rv   r  r   r?   re   r/  r[  Fr   rD  rs  r   r	   r0   r1   r2   r3   r   r   r.   r4   r6   r   r   r   r  ry   r0  r   r   r   )	r8   tsr9   rK  rM  r0  r1  re   rG   r:   rJ  r;   $test_df_gridspec_patterns_vert_horizY  sr   



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 ]%}t|jdksLJ t| dd t| dd t|jdddd qAd | }tt |jd|ddd}W d    n1 sw   Y  |D ]}t|jdksJ q|d |d fD ]
}t| dd q|d |d fD ]
}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 qd d S )Nr   rC  r    r"   r  rE  r`   c                     st     dd}  }|| d dd df }|| d ddf }|| dd df }|| d }||||fS )NrQ   r    rJ   rG  )r4  r]  r0  r1  ax3ax4rJ  r:   r;   _get_boxed_grid  s   zKTestDataFramePlots.test_df_gridspec_patterns_boxed.<locals>._get_boxed_gridr!   r$   r  Tr   rA   rt   rv   r  rN  rQ   FrO  )r8   rP  rT  rG   r9   re   r:   rJ  r;   test_df_gridspec_patterns_boxed  sJ   
	
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   r  r;  r   r   rR   )kws)r   r   r   PlotAccessor_dataframe_kinds)r8   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)r  r  r  r  r    r"   r  )	r   r   r?   add_axesr	   r0   r1   r2   r6   )r8   r]  re   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 )
Nr    r   r;  )r   r   rA   rA   r   r   r   hsv)r)  re   rS   rT   r   r  )
r   r0   r1   r2   r3   r   r   r  rZ  r6   )r8   r9   r]  re   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  padr    r"   r  )r   r   r?   mpl_toolkits.axes_grid1r^  append_axesr	   r0   r1   r2   r6   )r8   r]  re   r^  divider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  rQ   )rj  r  r6  r    r"   r  )
r   r   r?   %mpl_toolkits.axes_grid1.inset_locatorre  r	   r0   r1   r2   r6   )r8   r]  re   re  iaxr:   r:   r;   test_plain_axes_make_inset_axes	  s
   "z2TestDataFramePlots.test_plain_axes_make_inset_axesmethod)r[   rg  r   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|di |}t	|j
|d d S )Nr    )r  r    rF  r   c                 S   s
   | j  S r  )r(   rk  r9   r:   r:   r;   r	  	     
 zBTestDataFramePlots.test_secondary_axis_font_size.<locals>.<lambda>r   c                 S   s
   | j d S )Ng?rl  rj  r:   r:   r;   r	  	  rk  )r   r  r   r   T)rM  r   
mark_right)rG   r  r:   )r   r0   r1   r2   r3   r4   assignr   r6   r   rQ  )r8   ri  r9   r   r'  rg   re   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s5J |d dks=J |d dksEJ d S )N)rQ   r    rQ   )r  *      )MondayTuesday	Wednesday)salesvisitsdayrw  r   rI   rQ   c                 S   rp  r:   r  rt  tr:   r:   r;   rv  -	  rw  zATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>rr  r  rs  r  rt  r  )r   r6   r  set_xlimry   r&  r~   
get_xticks)r8   r9   re   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sGJ |d dksOJ |d dksWJ d S )Nr  i  rA   r    rZ  r   r(   r,   rI   r#   c                 S   rp  r:   r  rx  r:   r:   r;   rv  ?	  rw  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   from_productr   r0   r1   r2   r3   r6   rz  ry   r&  r~   r{  )r8   r.   r9   re   r|  r}  r:   r:   r;   test_x_multiindex_values_ticks4	  s   z1TestDataFramePlots.test_x_multiindex_values_ticksc                 C   sL   t ddgddgd}|j|d}| }|d dk sJ |d dks$J d S )Nr    r#   rA   r`   r,  r   )r   r6   r  )r8   r)  r9   re   xlimsr:   r:   r;   test_xlim_plot_lineG	  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 s@J |d dksHJ dd | D }||ksWJ d S )N)k1k2k3k4)i  r     r   )i  ix  r   i  )r  r  i@  i  )rA   rQ   r#   rQ   )s1s2s3rM  r`   )r  r  r  F)re   r.  rM  T)re   rM  r   rA   rQ   c                 S   rp  r:   r  rx  r:   r:   r;   rv  h	  rw  zWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)r   r   r?   r   r6   r   r  ry   )r8   r]  re   indexesr9   r  r|  r:   r:   r;   0test_xlim_plot_line_correctly_in_mixed_plot_typeQ	  s"   	zCTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_typec                 C   sl   t dgtd}|jsJ | }t| dksJ | d }t| dks*J t| dks4J d S )Nfoo)r-   r&   rA   r   )r   intemptyr6   r   r   r   r<  )r8   r9   re   r[   r:   r:   r;   test_plot_no_rowsk	  s   
z$TestDataFramePlots.test_plot_no_rowsc                 C   sH   t g d}tjtdd |  W d    d S 1 sw   Y  d S )Nr   r  rU   )r   rX   rY   r  r6   r7   r:   r:   r;   test_plot_no_numeric_datau	  s   
"z,TestDataFramePlots.test_plot_no_numeric_data)r[   r   rg  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s5J d	d
gddgdgf}t||D ]\}}|dkrRt||d |dkrat|j	t|ksaJ qDd S )Nr)  r"   rA   r  )r   r  )r   r  r?   r)  rQ   r   r  r   r  r   r   r-  r[   )
rX   r.  r0   r   r   r6   r   r~   r   r   )r8   r)  r  r9   rG   r  re   r  r:   r:   r;   test_group_subplotz	  s$   
z%TestDataFramePlots.test_group_subplotc                 C   sR   t td}d}tjt|d |jdgd W d    d S 1 s"w   Y  d S )NrA   z!An iterable subplots for a SeriesrU   r   r?   )r	   r   rX   rY   NotImplementedErrorr6   )r8   serr]   r:   r:   r;   (test_group_subplot_series_notimplemented	  s
   "z;TestDataFramePlots.test_group_subplot_series_notimplementedc                 C   sb   t tdtddgd}d}tjt|d |jdgd W d    d S 1 s*w   Y  d S )Nr    r  r  r   z6An iterable subplots for a DataFrame with a MultiIndexrU   r  )	r   r0   eyer   r   rX   rY   r  r6   r\   r:   r:   r;   ,test_group_subplot_multiindex_notimplemented	  s
   "z?TestDataFramePlots.test_group_subplot_multiindex_notimplementedc                 C   s\   t tdddgd}d}tjt|d |jdgd W d    d S 1 s'w   Y  d S )Nr    r   r   z4An iterable subplots for a DataFrame with non-uniquerU   r  r  )r   r0   r  rX   rY   r  r6   r\   r:   r:   r;   0test_group_subplot_nonunique_cols_notimplemented	  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))rA   r  )r  r  c                 C   s^   t dt dd}t|}tjt|d |j|d W d    d S 1 s(w   Y  d S )Nr"   r;  rU   r  r0   r   r   rX   rY   r   r6   )r8   r?   expected_msgr  r9   r:   r:   r;   test_group_subplot_bad_input	  s
   "z/TestDataFramePlots.test_group_subplot_bad_inputc                 C   s   t dt dd}t|}tt jtdk r9tjtdd |jdgd W d    d S 1 s2w   Y  d S tjtdd |jdgd W d    d S 1 sSw   Y  d S )	Nr"   r;  z2.0.0z Column label\(s\) \['bad_name'\]rU   )r   bad_namer  z-Column label\(s\) \[np\.str\_\('bad_name'\)\])	r0   r   r   r   __version__rX   rY   r   r6   r  r:   r:   r;   &test_group_subplot_invalid_column_name	  s   ""z9TestDataFramePlots.test_group_subplot_invalid_column_namec                 C   sj   t dt dt dd}t|}tjtdd |jddgd W d    d S 1 s.w   Y  d S )Nr"   r   zshould be in only one subplotrU   r;  )r   r   r  r  r  r:   r:   r;   $test_group_subplot_duplicated_column	  s
   "z7TestDataFramePlots.test_group_subplot_duplicated_column)r  r   r   c                 C   sb   t dt dd}t|}tjtdd |jdg|d W d    d S 1 s*w   Y  d S )Nr"   r;  z1When subplots is an iterable, kind must be one ofrU   r  r  )r8   r)  r  r9   r:   r:   r;   test_group_subplot_invalid_kind	  s   "z2TestDataFramePlots.test_group_subplot_invalid_kindz index_name, old_label, new_label)Nr{  new)oldr  r  )Nr{  r{  )Nr{  rA   r{  )r[   r  r   c                 C   s   t ddgddggddgd}||j_|j|d}| |ks J | dks(J |j|||d	}| t|ks:J | t|ksDJ d S )
NrA   r    ri   Type AType Br   r,  r{  )r)  r  xlabel)r   r.   r   r6   
get_xlabelr  str)r8   r)  
index_name	old_label	new_labelr9   re   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 r%|n|ks*J | |d u r3|n|ks8J d S )Nr  r  rA   r    ri   r   )r)  rS   rT   r  r  )r   r6   r  r  )r8   r)  r  r  xcolycolr9   re   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 ]!}|j r2| dks J | dks(J | d dks2J qd S )Nr   r  )r   rk   r  )rM  r  rl   rh   )	r   r6   r  rG   r   get_visibler  rU  
get_yticks)r8   rM  ax_dfre   r:   r:   r;   test_secondary_y
  s   


z#TestDataFramePlots.test_secondary_yc                 C   st   t tjddttdtdtddddd	}t	
d
 | }|j }W d    d S 1 s3w   Y  d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   F)r   r0   r1   r2   r3   r   r4   r5   r   r   r   r6   r  )r8   r9   r   r:   r:   r;   test_plot_no_warning
  s   "z'TestDataFramePlots.test_plot_no_warning)NNNN)__name__
__module____qualname__rX   markslowr<   rH   rK   rO   xfailr^   rf   parametrizerr   r{   r}   r   r   r   r   r4   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r0   r  r=  r  r   r   r  r  r  r(  r2  r4  r7  r9  r   r   rF  rK  rL  rO  rS  rY  r^  rd  re  rm  rn  r~  r  r  r  r  r   r   CategoricalIndexr  r  r  r  r  r  paramtd
skip_if_nor  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  filterwarningsr   r!  r%  r(  r/  r0  r1  r2  r7  r8  r9  rI  rJ  rM  r  rW  ra  r  r   ri  rl  rz  r~  r  r  r   rW  _common_kindsr  r  r  r  r  r  r  r  r  r  r  r  stdr  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*  r5  r:  r;  r<  
_all_kindsrB  rQ  rU  rY  r[  r]  rd  rh  ro  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r:   r:   r:   r;   r   7   sT   



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

	

	



	





	
	


				








			."""***l
		
",	
	



(((6	!(($S5
	
	

	
r   c                  C   sb   dd l m}  tjdd}| |d }| |d }| |d }| |d }|||||gfS )Nr   r    r4  )rA   r   r  r   )rs  r   r   rD  rH  subplot)ry  r4  ax_tlax_llax_trax_lrr:   r:   r;   r1  
  s   r1  )6__doc__r   r   r?  r  r  rb   r=  numpyr0   rX   pandas.util._test_decoratorsutil_test_decoratorsr  pandas.core.dtypes.apir   pandasr   r   r   r   r   r	   r
   r   r   r   pandas._testing_testingr   pandas.tests.plotting.commonr   r   r   r   r   r   r   r   r   r   r   r   r   pandas.util.versionr   pandas.io.formats.printingr   r.  r   ry  r   r1  r:   r:   r:   r;   <module>   sP    ,<

                   z