o
    Df<                    @   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. e
/dZ0e
/d	Z1G d
d dZ2dd Z3d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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 r9   _/home/ubuntu/webapp/venv/lib/python3.10/site-packages/pandas/tests/plotting/frame/test_frame.py	test_plot7   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   r/   r0   r1   r2   r   r3   r4   r   r   r5   r   r7   r8   axesr9   r9   r:   test_plot_subplots@   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>   rC   r"   r   r   rA   rD   rE   r9   r9   r:   "test_plot_subplots_negative_layoutK   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?   rA   )r   r/   r0   r1   r2   r   r3   r4   r   r   r5   r   r   rE   r9   r9   r:   test_plot_subplots_use_indexZ   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 )
Nr@   r      r"   xyz''Line2D' object has no property 'blarg'matchT)blarg)r   pytestraisesAttributeErrorr5   liner7   r8   msgr9   r9   r:   test_plot_invalid_argj   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!   rP   r!   r-   TrK   r   rL   )
r   r/   r0   r1   r3   stringascii_lettersr   r5   r   r7   r8   axr9   r9   r:   test_plot_tick_propsr   s   z'TestDataFramePlots.test_plot_tick_propskwargsyticks)r@      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   r/   r0   r1   r3   ra   rb   r   r5   r7   rf   r8   r9   r9   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_   Trm   )r>   rn   rP   rP   r@   rA   Fvisibleminorr   rL   )r   r/   r0   r1   r3   ra   rb   r5   r   r   xaxisget_xticklabels	get_labelr   )r7   r8   rF   rd   r9   r9   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_   rm   rn   ro   r6   r9   r9   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_   Tr`   r   rL   )zipra   rb   ranger   r/   r0   r1   r   from_tuplesr   r5   r   )r7   tuplesr8   rd   r9   r9   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   r@   )   βr   )r   rP   )   γr"   )r   rh   )   δ   )r      i0i1)names)baru   Δ)r   u   Εc0c1r   r   r!   )   r   r+   u   Σr{   )	r   r   r   r/   r0   r1   integersr   r5   )r7   r-   r,   r8   r9   r9   r:   test_plot_multiindex_unicode   s   
z/TestDataFramePlots.test_plot_multiindex_unicoderC   N)rH   r@   c                 C   s>   t dtjddi}t|jjd|d}t|ddd d S )	NrR   r   r!   T)r>   rC   r@   r@   r@   rA   )r   r/   r0   r1   r   r5   r   r   )r7   rC   r8   rF   r9   r9   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 )NrR   r   r!   Tr>   rd   r@   r   )r   r/   r0   r1   mplpyplotr>   r5   r   lenrF   )r7   r8   _rd   rF   resultr9   r9   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r@   r   rP   r"   rh   r   rh   rP   r   r$   z%Yformati8T)r   utcr   r'   r   r   r   rQ   )
r   r/   arraynanr4   pdto_datetimeviewr   r5   )r7   colsrR   rS   datesr8   r9   r9   r:   test_nullable_int_plot   s   
z)TestDataFramePlots.test_nullable_int_plotr5   )rZ   r   histpiec                 C   s.   t jg ddd}t|}tt|j| d S )Nr@   r   rP   r"   UInt32r$   )r   r   r	   r   getattrr5   )r7   r5   arrsr9   r9   r:   test_integer_array_plot_series   s   z1TestDataFramePlots.test_integer_array_plot_serieszplot, kwargsrZ   r   r   r   rS   scatterrR   rQ   hexbinc                 C   s<   t jg ddd}t||d}tt|j|fi | d S )Nr   r   r$   rQ   )r   r   r   r   r   r5   )r7   r5   rf   r   r8   r9   r9   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rR   rS   zr@   r   rP   r   r'   r@   )r   r5   r   	get_linesrc   r9   r9   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   rQ   )	r   r/   r0   r1   r2   r5   r   rw   ry   rc   r9   r9   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   rI   r   r   r   NAMELABEL)rS   label)r   r/   r0   r1   r2   r-   namer5   r6   r9   r9   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   rh   r"   r#   r$   r&   rh   r'   r(   r+   r   r@   rQ   r   rR   rS   )r   r/   r0   r1   r2   r   r3   r4   r   r   r5   	set_indexr'   r6   r9   r9   r:   test_plot_xy0  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&   rh   r'   r(   r+   r@   rQ   r   r   )r   r/   r0   r1   r2   r   r3   r4   r   aranger   r,   r   r5   r   r6   r9   r9   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&   rh   r'   r(   r+   r@   Test)   r   )rR   rS   rn   figsizer   )g      0@g       @)rB   rC   r   )r   r/   r0   r1   r2   r   r3   r4   r   r5   r   rn   r   rc   r9   r9   r:   test_plot_xy_figsize_and_titleJ  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   rj   r_   logyyaxis)logxrw   loglog)rw   r   )r   r/   r   r5   r   
get_yscale
get_xscale)r7   	input_logexpected_logr8   rd   r9   r9   r:   test_logscalesX  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   rj   r_   z	keyword 'z*' should be bool, None, or 'sym', not 'sm'rT   smzPiePlot ignores the 'z	' keywordr>   Tr9   )r   r/   r   rW   rX   
ValueErrorr5   tmassert_produces_warningUserWarningr   )r7   r   r8   r\   r9   r9   r:   test_invalid_logscalek  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      rL   )r   r/   r0   r1   r2   r   r3   r4   r   r5   r   
isinstance	get_xdatar   r   r7   r8   rd   linesr9   r9   r:   test_xcompatx  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   rL   )r   r/   r0   r1   r2   r   r3   r4   r   r   plot_paramsr5   r   r   r   r   r   r   r9   r9   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 deprecatedrT   )r   r/   r0   r1   r2   r   r3   r4   r   r   r   r5   r   r   r   r   r   r   FutureWarningr7   r8   rd   r   r\   r9   r9   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   rL   )r   r/   r0   r1   r2   r   r3   r4   r   r   r   user5   r   r   r   r   r   r   r9   r9   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 rT   rL   )r   r/   r0   r1   r2   r   r3   r4   r   r5   r   r   r   r   r   r   r   r   r   r9   r9   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     r@      r   r   r-   r,   r   r   )
r   r/   r0   r1   r
   r   r5   r   r   axhliner6   r9   r9   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 )NrS   rj   c   rH   r$   )r-   r%   r   r@   )r%   r   F)check_index_type)r   r/   r   r   int64r5   r   
get_xydatar	   r   assert_series_equalrS   )r7   r  r8   rd   r   rsr9   r9   r:   test_unsorted_index  s   *z&TestDataFramePlots.test_unsorted_indexr8                 ?       @      @)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   )r5   get_xlimr   r/   nanminget_datananmaxr7   r8   rd   xminxmaxr   r9   r9   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@)rS   r   r   rS   rQ   r   )r   r5   r  r   r/   r  r  r  r  r9   r9   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   rR   rS   r   fourr  z+Log-y scales are not supported in area plotrT   Tr   r   )r   r/   r0   r1   r3   ra   rb   rW   rX   r   r5   arear[   r9   r9   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   r@   )r/   zerosr   r  r}   r   assert_numpy_array_equal)r7   normal_linesstacked_linesbasenlslsyr9   r9   r:   _compare_stacked_y_cood  s   z*TestDataFramePlots._compare_stacked_y_coodkindr  multr@   rH   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  wrR   rS   r   r   Fr(  stackedTr   r/   r0   r1   r   r5   r'  r   )r7   r(  r)  r8   ax1ax2r9   r9   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.  )r7   r(  sep_dfr/  r0  r9   r9   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 valuesrT   T)r   r/   r0   r1   r2   r3   ra   rb   r   r5   rW   rX   r   )r7   mixed_dfr\   r9   r9   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   r@   T)r(  r   r-  )r   r/   r0   r1   r   r-   r   r5   )r7   r(  r8   df2r9   r9   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 )Nr@   r   rP   r   r   r_   r   r   r$   )rP   r   r@   )FFTF)FTFF)r/   r   r   r   r5   r   	get_ydatar   float64r   r   deletedatamask)	r7   r9  values1values2r8   rd   masked1masked2expr9   r9   r:   test_line_area_nan_df3  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@   r   rP   r:  r_   r@   r   r   rP   r$   rP   r   r   r@   Tr4  r   )r/   r   r   r   r<  r   r5   r   r   r   r;  )r7   r9  r@  rA  r8   	expected1	expected2rd   r9   r9   r:   test_line_area_nan_df_stackedH  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 )Nr@   r   rP   r:  r_   rF  r$   rG  r   Fr4  )r/   r   r   r   r<  r   r5   r  r   r   r   r;  )	r7   r9  rf   r@  rA  r8   rH  rI  rd   r9   r9   r:   "test_line_area_nan_df_stacked_areaW  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   rP   r   r   r   rH   r9   )r   r/   r0   r1   r5   r  r   r  )r7   rf   r8   rd   r  r  r   r9   r9   r:   test_line_limn  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   rM  r   r   T)rL  r>   rP   rr   rA   left_axright_axr   rH   )
r   r/   r0   r1   r5   r   hasattrr  r   r  )r7   r8   rF   rd   r  r  r   r9   r9   r:   test_line_lim_subplotsw  s   z)TestDataFramePlots.test_line_lim_subplotszX2020-12-01 this has been failing periodically on the ymin==0 assertion for a week or so.)strictrO   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   r4  r   rH   )r   r/   r0   r1   r   r5   r  r  get_ylimr   r  )
r7   r-  r8   neg_dfrd   r  r  yminymaxr   r9   r9   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   rR   rS   r   r@   T)shareyr  )rd   r(  )
r   r/   r0   r1   r   r   r>   r5   r   joined)r7   r8   figr/  r0  r9   r9   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   rh   rh   )r-  	linewidth)	r   r/   r0   r1   r2   r5   r   patchesget_linewidth)r7   r-  r8   rd   rr9   r9   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>   rh   )rh   r@   rA   )
r   r/   r0   r1   r2   r5   r   r   r`  ra  )r7   r8   rF   rd   rb  r9   r9   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   r/   r0   r1   r2   r   r5   r`  r   r,   )r7   methdimr-  r8   ri  rd   rb  r9   r9   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^  rh  T)ri  r>   )r   r/   r0   r1   r2   r   r5   r`  )r7   rj  rk  r8   ri  rF   rd   rb  r9   r9   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^  Fr@   )r-  bottomc                 S      g | ]}|  qS r9   get_y.0pr9   r9   r:   
<listcomp>      zBTestDataFramePlots.test_bar_bottom_left_bottom.<locals>.<listcomp>   T)rH   c                 S   ro  r9   rp  rr  r9   r9   r:   ru    rv  rh   )r   r/   r0   r1   r5   r   r`  r7   r8   rd   r   r9   r9   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r@   r@   r@   r@   r@   )r-  leftc                 S   ro  r9   get_xrr  r9   r9   r:   ru    rv  z@TestDataFramePlots.test_bar_bottom_left_left.<locals>.<listcomp>r@   rw  Tr   c                 S   ro  r9   r  rr  r9   r9   r:   ru    rv  rh   )r   r/   r0   r1   r5   rf  r   r`  r|  r9   r9   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^  TrH   )r>   rn  c                 S   ro  r9   rp  rr  r9   r9   r:   ru    rv  zDTestDataFramePlots.test_bar_bottom_left_subplots.<locals>.<listcomp>rh   r~  )r>   r  c                 S   ro  r9   r  rr  r9   r9   r:   ru    rv  r@   )	r   r/   r0   r1   r5   r   r`  rf  r   )r7   r8   rF   rd   r   r9   r9   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!      rh   r!   r  r   r   r'   r   	r!   r   r  rh   r!   r  r@   r   rP   c                 S   ro  r9   rg  rr  r9   r9   r:   ru    rv  z3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>r   r/   r   r5   r   r`  r7   r8   rd   expectedr   r9   r9   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  Tr4  r  c                 S   ro  r9   r  rr  r9   r9   r:   ru     rv  z;TestDataFramePlots.test_bar_nan_stacked.<locals>.<listcomp>c                 S   ro  r9   rp  rr  r9   r9   r:   ru    rv  )	r  r  r        $@r  g      4@g      .@r  g      D@r  r  r9   r9   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   rh   ABCDEFabcder  )r   r@   r   rP   r"   rh   )g      g      @r   g      пrH   g@Tr4  g      @)r   r/   r0   r1   r2   r3   r5   r   rw   get_ticklocsr   r   r   r  r`  r  )r7   r9  r8   rd   ticksr9   r9   r:   test_bar_categorical  s    



z'TestDataFramePlots.test_bar_categoricalzx, yr@   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  rQ   )r   r/   r0   r1   r2   r3   ra   rb   r   r5   r   r7   rR   rS   r8   r9   r9   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'rT   rR   r   z5scatter() missing 1 required positional argument: 'x'rS   r   )r   r/   r0   r1   r2   r3   ra   rb   reescaperW   rX   	TypeErrorr5   r   r[   r9   r9   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  rR   rS   r   T)rR   rS   r(  r>   r@   r   rA   )
r   r/   r0   r1   r2   r3   ra   rb   r5   r   rE   r9   r9   r:   test_plot_scatter_shape5  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'rT   r   )r(  rR   rS   )r   r/   r0   r1   r2   r   timerW   rX   r  r5   r[   r9   r9   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)r  r)   r*   r   r   r  rQ   )r   r   r/   r0   r1   normalr   r   r   r5   r   )r7   rR   rS   r   r  r8   r9   r9   r:   test_scatterplot_datetime_dataH  s   z1TestDataFramePlots.test_scatterplot_datetime_datainfer_stringpyarrow)marksr:  b_colr   rP   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:  rQ   )r   r   r   r5   r   )r7   r  rR   rS   r  r8   r9   r9   r:   test_scatterplot_object_dataQ  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@lengthri  r   )r  r  r  r  r  )r  r  speciesr   r@   rR   rS   r   )      ?g      ?g      @r  c                 S   ro  r9   get_text)rs  ir9   r9   r:   ru  y  rv  zLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>c                 s   s    | ]	\}}||kV  qd S Nr9   )rs  r  jr9   r9   r:   	<genexpr>z  s    zKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)r   r   Categoricalr5   r   collectionscolorbarr/   r   	get_ticksr   r   _boundariesrd   get_ymajorticklabelsallr}   )r7   r  r  r8   rd   colorbar_collectionr  expected_ticksresult_ticksexpected_boundariesresult_boundariesexpected_yticklabelsresult_yticklabelsr9   r9   r:   %test_scatterplot_color_by_categorical]  s*    
 z8TestDataFramePlots.test_scatterplot_color_by_categorical)rQ   )rS   rR   )rS   rS   c                 C   s2   t g dtg dd}t|jj||d d S )Nr   )r   r   r   r   rQ   )r   r   r  r   r5   r   r  r9   r9   r:   'test_plot_scatter_with_categorical_data|  s   z:TestDataFramePlots.test_plot_scatter_with_categorical_datazx, y, cr   )r   r@   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   rj   r  lowhighsizer   r  r  r  Greysr   )r   r/   r0   r1   r   r3   ra   rb   r5   r   r  cmapr   r  rd   
get_ylabel)r7   rR   rS   r   r8   rd   r9   r9   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   rj   r  r  r   r  r  	cubehelixrR   rS   r   )rR   rS   r   colormapF)rR   rS   r   r  r@   redr  rb  
facecolors)r   r/   r0   r1   r   r3   ra   rb   r5   r   r  r  r   r  r   )r7   r8   cmrd   r9   r9   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 )Nr@   r   rP   r"   r   )r  r  r  r  )r  r  r  r  r   r'   r  r   r  r  spring)rR   rS   r   r  )	r   r/   r   r5   r   r   r   r  get_facecolor)r7   r8   red_rgba
green_rgba
rgba_arrayrd   float_arrayr9   r9   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^   rj   r   r   r   r   r   )rR   rS   r   r   )right)r   r/   r0   r1   r5   r   r   r   valuesr  	get_sizesrc   r9   r9   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^   rj   r   r   r   r   r   )rR   rS   r   normr   )r   r/   r0   r1   r   colorsLogNormr5   r   r  r  )r7   r8   r  rd   r9   r9   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^   rj   r   r   r   r   r   r  r   )r   r/   r0   r1   r5   r   r  r  r   minmaxr   r  	Normalize)r7   r8   rd   	plot_normcolor_min_maxdefault_normvaluer9   r9   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   r/   r0   r1   r2   r3   ra   rb   r   r5   r   rp   r9   r9   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   r/   r0   r1   r2   r3   ra   rb   r~   r   r5   r   r6   r9   r9   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   rL   #   r!   rotfontsizerM   
xlabelsize
ylabelsize)r   r   r5   r   r   rc   r9   r9   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   r@   r:  )yrot7      r  )r  r  r  )r   r   r5   rf  r   rc   r9   r9   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 r9   r   rs  r   r9   r9   r:   ru  
  rv  z3TestDataFramePlots.test_boxplot.<locals>.<listcomp>r@   r   )_get_numeric_datar,   r   r5   boxr   rx   r   r   rw   r  r/   r   r   r   r7   hist_dfr8   numeric_colslabelsrd   r9   r9   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   rM   r  )r5   r  r   r   )r7   r  r8   seriesrF   r9   r9   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)r@   r   r   )	positionsc                 S   r	  r9   r   r
  r9   r9   r:   ru     rv  zDTestDataFramePlots.test_boxplot_series_positions.<locals>.<listcomp>r   )r/   r   r5   r  r  r,   r   rx   r   r   rw   r  r   r   )r7   r  r8   r  rd   r  r  r9   r9   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	  r9   r   r
  r9   r9   r:   ru  (  rv  z<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>2   r   F)r  r  vertr   rM   r  r  r   )	r  r,   r5   r  r   r   get_yticklabelsr   r   r  r9   r9   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	  r9   r   r
  r9   r9   r:   ru  4  rv  zETestDataFramePlots.test_boxplot_vertical_subplots.<locals>.<listcomp>TF)r=   r>   r  r   rP   )r@   rP   rA   r   r   r   )r  r,   r   r5   r  r   r   r}   r   r  r   r   )r7   r  r8   r  r  rF   rd   r   r9   r9   r:   test_boxplot_vertical_subplots0  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	  r9   r   r
  r9   r9   r:   ru  E  rv  zFTestDataFramePlots.test_boxplot_vertical_positions.<locals>.<listcomp>)rP   r   r   F)r  r  r   )r  r,   r/   r   r5   r  r   r  r   r   r   r  r   r   )r7   r  r8   r  r  r  rd   r9   r9   r:   test_boxplot_vertical_positionsB  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'}rT   
not_a_typereturn_type)r   r/   r0   r1   r2   r3   ra   rb   rW   rX   r   r5   r  r[   r9   r9   r:    test_boxplot_return_type_invalidL  s   "z3TestDataFramePlots.test_boxplot_return_type_invalidr#  )dictrF   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   r/   r0   r1   r2   r3   ra   rb   r5   r  r   )r7   r#  r8   r   r9   r9   r:   %test_boxplot_return_type_invalid_typeV  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   rj   r"   kder(  c                 S   r	  r9   r   r
  r9   r9   r:   ru  d  rv  z2TestDataFramePlots.test_kde_df.<locals>.<listcomp>r  r   rL   )rW   importorskipr   r/   r0   r1   r2   r   r5   r,   r   r   )r7   r8   rd   r  r9   r9   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(  r   r    r*  r  rh   )r(  r  r  r   )	rW   r-  r   r/   r0   r1   r2   r5   r   rc   r9   r9   r:   test_kde_df_roth  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?   rA   )
rW   r-  r   r/   r0   r1   r2   r   r5   r   rE   r9   r9   r:   test_kde_df_subplotsn  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   )	rW   r-  r   r/   r0   r1   r2   r5   r   rE   r9   r9   r:   test_kde_df_logyy  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+  )rW   r-  r   r/   r0   r1   uniformr   locr   r5   r6   r9   r9   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	  r9   r   r
  r9   r9   r:   ru    rv  z3TestDataFramePlots.test_hist_df.<locals>.<listcomp>r,  T)r=   r>   r   r"   r?   rA   r   r   )r   r/   r0   r1   r2   r   r5   r   r,   r   r   r   )r7   r8   rd   r  rF   r9   r9   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	   r/   r0   r1   r5   r   r   )r7   r  rF   r9   r9   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 r9   r   rs  rR   r9  r9   r:   ru        zMTestDataFramePlots.test_hist_df_series_cumulative_density.<locals>.<listcomp>rH   r  matplotlib.patchesr:  r	   r/   r0   r1   r5   r   get_childrenr   assert_almost_equalrg  r7   r  rd   rectsr9   r9  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   r9  r   r!   Tr"   )r;  r<  c                    r>  r9   r?  r@  r9  r9   r:   ru    rA  zETestDataFramePlots.test_hist_df_series_cumulative.<locals>.<listcomp>rx  r  rB  rF  r9   r9  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   r/   r0   r1   r2   r5   r   r   rE   r9   r9   r:   test_hist_df_orientation  s   z+TestDataFramePlots.test_hist_df_orientationweights皙?)rj   )shape)rj   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   rj   r   )r(  rM  r+  c                 S   ro  r9   r  rs  patchr9   r9   r:   ru    rv  z8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>c                 S   s   g | ]}d |   qS )rN  r  rQ  r9   r9   r:   ru        )r   r%  r}   r/   r0   r1   r2   r   r5   r`  r   rE  )r7   rM  r8   r/  r0  patch_height_with_weightsexpected_patch_heightr9   r9   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   ro  r9   rp  rr  r9   r9   r:   ru    rv  z7TestDataFramePlots._check_box_coord.<locals>.<listcomp>c                 S   ro  r9   r  rr  r9   r9   r:   ru    rv  c                 S   ro  r9   r  rr  r9   r9   r:   ru    rv  c                 S   ro  r9   )re  rr  r9   r9   r:   ru    rv  F)check_dtype)r/   r   r   r   )
r7   r`  
expected_y
expected_h
expected_x
expected_wresult_yresult_heightresult_xresult_widthr9   r9   r:   _check_box_coord  s   z#TestDataFramePlots._check_box_coordr>  r   r!   	   r   r   r   r   r   r   r   r   r   r   r   rb  r!   r  r   rP   rh   )rP   r!   rb  r   r   r   )r   rP   r   r   r   r   )r   r   r   rP   rb  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 )Nrh   )r<  )r   r   r   r   r   ra  )rX  rY  r!   rc  rd  T)r<  r-  )      r   r     )r<  r-  r>   r   r@   r   rJ  )r<  rK  )rZ  r[  )r<  r-  rK  )r<  r-  r>   rK  )r   r5   r   r`  r`  r/   r   )r7   r>  r8   rd   rF   r9   r9   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   r/   r0   r1   r2   cumsumr   r5   r6   r9   r9   r:   test_plot_int_columns_  s   z(TestDataFramePlots.test_plot_int_columnsmarkers^+o)rm  rn  ro  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   r/   r0   r1   r2   r5   	enumerater   r   
get_marker)r7   rl  pltr\  r8   rd   r9  rZ   r9   r9   r:   test_style_by_columnc  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 )Nr@   r   Tri  r    )r	   r5   
get_legend	get_textsr  )r7   r   rd   r9   r9   r:   test_line_label_nonew  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 rP  )r/   r0   r1   )rs  kr9   r9   r:   
<dictcomp>  s     zHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ABCcolorC1r#  r%  r   r9   )r   r5   r  	get_color)r7   propsr  r8   kwdr   r9   r9   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!   r@   rb  r   )r  r  r  testr  r   r$   c                 S   s   g | ]}|  d  qS )r   )get_positionr@  r9   r9   r:   ru    rS  z8TestDataFramePlots.test_unordered_ts.<locals>.<listcomp>c                 S   ro  r9   r  r@  r9   r9   r:   ru    rv  z%Y-%m-%dr   )r   r   r/   r   r5   r   r   r   r   r4   r;  rw   get_ticklabelsr   is_monotonic_increasingr   r   )	r7   r-   r  r8   rd   ri   ydataxlocsxlabelsr9   r9   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(  rR   r   r+  rW   r-  r   r5   r   r7   r(  r8   r9   r9   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  r9   r9   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 plotrT   r+  )r   r3   rW   rX   r  r5   r7   r(  r8   r\   r9   r9   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  rT   r+  )r   r/   r0   r1   r2   r4   rO  rW   rX   r  r5   r  r9   r9   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 kindrT   invalid_plot_kindr+  )	r   r/   r0   r1   r2   rW   rX   r   r5   r[   r9   r9   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 )Nr@   r   rP   r"   rh   r   r  x must be a label or positionrT   rR   rS   r   r   rW   rX   r   r5   )r7   rR   rS   lblr8   r9   r9   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 )Nr@   r   rP   r"   rh   r   r  z.label should be list-like and same length as yrT   r   r'   r   	bad_labelr  r  r[   r9   r9   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)r@   rP   rh   )r   r"   r   AABr   r  rT   rQ   )r   r3   rW   rX   r   r5   r  r9   r9   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 )Nr@   r   rP   r"   rh   r   r  r   r  )rR   rS   r   r  
linecolors)r   r   r5   r   r   r   r   )r7   rR   rS   r  r  r8   rd   r9   r9   r:   test_y_listlike  s
   
z"TestDataFramePlots.test_y_listlikezx,y,colnamesc                 C   s0   t ddgddgd}||_t|j||d d S )Nr@   r   rP   r"   r   rQ   )r   r,   r   r5   )r7   rR   rS   colnamesr8   r9   r9   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  r2  r  r   r'   r!   )rR   rS   gridsizer@   
r   r/   r0   r1   r4  r   r5   r   r   r  rc   r9   r9   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  r2  r  r   r'   T)rR   rS   r>   r   r@   r   rA   )r   r/   r0   r1   r4  r   r5   r   r   figurerF   r   rE   r9   r9   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  r2  r  r   r'   r   )rR   rS   r   reduce_C_functionr@   r  )r7   r  r8   rd   r9   r9   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  r2  r  r   r'   rQ   r   r9   )r   r/   r0   r1   r4  r   r5   r   r  r  r   )r7   rf   r  r8   rd   r9   r9   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   rh   rP   XYZr   r   r   der+   z/pie requires either y column or 'subplots=True'rT   )	r   r/   r0   r1   rW   rX   r   r5   r   r[   r9   r9   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   r/   r0   r1   r   r5   r   r   textsr-   )r7   rS   r8   rd   r9   r9   r:   test_pie_dfH  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   r/   r0   r1   r   r5   r   r   r,   r   r  r-   r}   r  )r7   r8   rF   rd   ylabelr9   r9   r:   test_pie_df_subplotsR  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   )rb  gr   r   mT)r=   r>   r  r  r  )r   r/   r0   r1   r   r5   r   r   r,   r   r  r   r`  )r7   r8   r  
color_argsrF   rd   r9   r9   r:   test_pie_df_labels_colorsc  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>   rd   r  )0123rz  c                 S   ro  r9   r  r@  r9   r9   r:   ru    rv  z6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>c                 S   ro  r9   r  r@  r9   r9   r:   ru    rv  r@   r9   )r   r/   r0   r1   r~   r   ilocr   r   r>   r   r   r5   r   rv  r3   r  r{  r|  )r7   r8   r  r   rF   rf   base_expectedrd   r  r   result_labelsexpected_labelsr9   r9   r:   test_pie_df_nanx  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   rH   rQ   皙?皙?yerrr   xerrr  r/   r   r   onesr   r5   r   )r7   rf   r  r8   d_errdf_errrd   r9   r9   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   rH   rQ   r  r  r@   r   T)r  r  r(  r   r   r  r  )r7   r  r8   r  r  rd   r9   r9   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   rH   rQ   rS   r  r  r@   r  )r   r  r   )r/   r   r   r   r5   r  r   r7   r  r8   rd   r9   r9   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   rH   rQ   r  r  r   r  rS   rR   )rS   rR   r  r@   r  )r7   r  r  r8   rd   r9   r9   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   rH   rQ   r   r  r  )
r/   r   r   r   external_error_raisedr   r5   r0   r1   r2   r7   r  r8   r9   r9   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   rH   rQ   zzzr  )r/   r   r   r   r  r  r5   )r7   r  r8   r  r9   r9   r:   %test_errorbar_plot_external_typeerror  s   "z8TestDataFramePlots.test_errorbar_plot_external_typeerror)rZ   r   rf  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   rH   rQ   r  r(  r   r  r   r/   r   r   r5   r   )r7   r(  r  r8   rd   r9   r9   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   rH   rQ   )r  r  r(  r   r  r  )r7   r(  r  x_errr8   rd   r9   r9   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   rH   rQ   r  r  T)r=   r  r  r>   r(  r@   r  )r   r/   r   r  r   r5   r   )r7   r(  r8   r  rF   r9   r9   r:   /test_errorbar_plot_different_yerr_xerr_subplots  s   "zBTestDataFramePlots.test_errorbar_plot_different_yerr_xerr_subplotszIterator is consumed)rO   rX   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   rH   rQ   rN  r  r   r  )	r/   r   r   r   r5   	itertoolsrepeatr   r   r  r9   r9   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  r@   )rS   r  	r   r/   absr0   r1   r2   r   r5   r   r7   r8   r  rd   r9   r9   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  )r7   r(  r8   r  rd   r9   r9   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)inplacerZ   r  r  )r   r/   r  r0   r1   r2   r   r   r   r5   r   )r7   r8   r  ixrd   r9   r9   r:   &test_errorbar_with_partial_columns_dti#  s   z9TestDataFramePlots.test_errorbar_with_partial_columns_dtierr_boxc                 C   s   | S r  r9   r   r9   r9   r:   <lambda>0  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   rH   rQ   r  r  )rR   r   r  r@   r  r  )r7   r  r  r8   errrd   r9   r9   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 )Nr  r   rH   rQ   r  r  r  z1/1/2001r  )r*   r_   r  r   r  rS   rR   )rS   r  r(  r@   T)r=   r(  r  r>   )r/   r   r  r   r   r   r5   r   )	r7   r(  r  r  r  tdftdf_errrd   rF   r9   r9   r:   test_errorbar_timeseries8  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   )rP   r   rh   r  rP   rh   )r  r  r@   r   rH   zCAsymmetrical error bars should be provided with the shape (3, 2, 5)rT   r  )r/   r0   r1   r   r   reshapeTr5   r  	get_pathsverticesr   r   rE  r  r  rW   rX   r   )r7   r	  r8   rd   yerr_0_0expected_0_0r\   r9   r9   r:   test_errorbar_asymmetricalZ  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   r@   )r   r/   r0   r1   r3   ra   rb   r   r5   r   r   r   tablesr   r  r  rc   r9   r9   r:   
test_tablel  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   )rh   r   rh   rR   rS   r  rQ   r   r  )rR   rS   r  r@   )rR   rS   r  )rR   rS   r  r  )r   r/   r  r0   r1   r2   r~   r   r5   r   r   r  r9   r9   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_errr9   r:   r    s     z`TestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_color.<locals>.<genexpr>c                    s   g | ]	}| j v r|qS r9   )r  r@  rd   r9   r:   ru    rA  zaTestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_color.<locals>.<listcomp>r  )	next
containersr   extendappendr   r/   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!   rh   r  r   r   r   r  r  r  )rR   rS   r  r  r   r@   r  r  has_yerrr  )rR   rS   r  r  r   )r  )
r   r/   r  r0   r1   r2   r5   r   r   r  )r7   r$  r8   r9   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 arT   r   r   unknownr   )rR   rS   r  r(  )r   rW   rX   r   KeyErrorr5   r6   r9   r9   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  r@   r   rP   r"   rh   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 )	Nr@   Trs   r   r   Fru   rP   )r   r   r   r  rx   rF   rd   r9   r9   r:   _check  s   z5TestDataFramePlots.test_sharex_and_ax.<locals>._checkr   r   rn   T)rR   rS   rn   rd   sharex)r>   rd   r.  )rr  r   close_generate_4_axes_via_gridspecr   r5   tight_layoutrs  r   r   r   r7   rx  gsrF   r8   r-  rd   r9   r9   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   rn   )rR   rS   rn   rd   r@   Trs   ru   rr  r   r   r0  r5   r1  rs  r   r   r   r  rx   r7   rx  r8   r3  rF   rd   r9   r9   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 )	Nr@   Trs   ru   r   r   rP   F)r   r   r   rx   r  r,  r9   r9   r:   r-    s   z5TestDataFramePlots.test_sharey_and_ax.<locals>._checkr   r   rn   T)rR   rS   rn   rd   rZ  r  )r>   rd   rZ  )rr  r   r0  r   r5   r1  rs  r/  r   r   r   r2  r9   r9   r:   test_sharey_and_ax  s*   
	


z%TestDataFramePlots.test_sharey_and_axc                 C   r5  r6  r7  r8  r9   r9   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  r2  r  r   r'   rQ   r  r    r#   r$   r&   r!   r(   r+   r(  r  Nr9   )rW   r-  r   r/   r0   r1   r4  r   r2   r   r3   r4   r   r  weakrefrefr5   rx  r/  gccollect)r7   r(  argsr8   r=  r9   r9   r:   test_memory_leak3  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 )NrP   r@   r   GridSpecr  ru  r3  r\  r/  r0  rC  rx  r9   r:   _get_vertical_gridh  
   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@   rP   r   rF  rH  rI  r9   r:   _get_horizontal_grido  rK  zUTestDataFramePlots.test_df_gridspec_patterns_vert_horiz.<locals>._get_horizontal_gridr  r@   Trs   ru   r  r   r>   rd   r.  rZ  Fr   rC  rr  r   r	   r/   r0   r1   r2   r   r   r-   r3   r5   r   r   r   r  rx   r/  r   r   r   )	r7   tsr8   rJ  rL  r/  r0  rd   rF   r9   rI  r:   $test_df_gridspec_patterns_vert_horizX  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   rB  r   r!   r  rD  r_   c                     st     dd}  }|| d dd df }|| d ddf }|| dd df }|| d }||||fS )NrP   r   rI   rF  )r3  r\  r/  r0  ax3ax4rI  r9   r:   _get_boxed_grid  s   zKTestDataFramePlots.test_df_gridspec_patterns_boxed.<locals>._get_boxed_gridr    r#   r  Tr   r@   rs   ru   r  rM  rP   FrN  )r7   rO  rS  rF   r8   rd   r9   rI  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   rQ   )kws)r   r   r   PlotAccessor_dataframe_kinds)r7   r9   r9   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	   r/   r0   r1   r5   )r7   r\  rd   r9   r9   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   r@   r@   r   r   r   hsv)r(  rd   rR   rS   r   r  )
r   r/   r0   r1   r2   r   r   r  rY  r5   )r7   r8   r\  rd   r9   r9   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	   r/   r0   r1   r5   )r7   r\  rd   r]  dividercaxr9   r9   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  rP   )ri  r  r5  r   r!   r  )
r   r   r>   %mpl_toolkits.axes_grid1.inset_locatorrd  r	   r/   r0   r1   r5   )r7   r\  rd   rd  iaxr9   r9   r:   test_plain_axes_make_inset_axes	  s
   "z2TestDataFramePlots.test_plain_axes_make_inset_axesmethod)rZ   rf  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   rE  r   c                 S   s
   | j  S r  )r'   rj  r8   r9   r9   r:   r  	     
 zBTestDataFramePlots.test_secondary_axis_font_size.<locals>.<lambda>r   c                 S   s
   | j d S )Ng?rk  ri  r9   r9   r:   r  	  rj  )r   r  r   r   T)rL  r  
mark_right)rF   r  r9   )r   r/   r0   r1   r2   r3   assignr   r5   r   rP  )r7   rh  r8   r  r&  rf   rd   r9   r9   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)rP   r   rP   )r  *      )MondayTuesday	Wednesday)salesvisitsdayrv  r   rH   rP   c                 S   ro  r9   r  rs  tr9   r9   r:   ru  ,	  rv  zATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>rq  r  rr  r  rs  r  )r   r5   r  set_xlimrx   r%  r}   
get_xticks)r7   r8   rd   xticklabelslabels_positionr9   r9   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  r@   r   rY  r   r'   r+   rH   r"   c                 S   ro  r9   r  rw  r9   r9   r:   ru  >	  rv  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   r/   r0   r1   r2   r5   ry  rx   r%  r}   rz  )r7   r-   r8   rd   r{  r|  r9   r9   r:   test_x_multiindex_values_ticks3	  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"   r@   r_   r+  r   )r   r5   r  )r7   r(  r8   rd   xlimsr9   r9   r:   test_xlim_plot_lineF	  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  )r@   rP   r"   rP   )s1s2s3rL  r_   )r  r  r  F)rd   r-  rL  T)rd   rL  r   r@   rP   c                 S   ro  r9   r  rw  r9   r9   r:   ru  g	  rv  zWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)r   r   r>   r   r5   r   r  rx   )r7   r\  rd   indexesr8   r  r{  r9   r9   r:   0test_xlim_plot_line_correctly_in_mixed_plot_typeP	  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%   r@   r   )r   intemptyr5   r   r   r   r;  )r7   r8   rd   rZ   r9   r9   r:   test_plot_no_rowsj	  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  rT   )r   rW   rX   r  r5   r6   r9   r9   r:   test_plot_no_numeric_datat	  s   
"z,TestDataFramePlots.test_plot_no_numeric_data)rZ   r   rf  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!   r@   r  )r   r  )r   r  r>   r(  rP   r   r  r   r  r   r   r,  rZ   )
rW   r-  r/   r   r   r5   r   r}   r   r   )r7   r(  r  r8   rF   r  rd   r  r9   r9   r:   test_group_subploty	  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 )Nr@   z!An iterable subplots for a SeriesrT   r   r>   )r	   r~   rW   rX   NotImplementedErrorr5   )r7   serr\   r9   r9   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 MultiIndexrT   r  )	r   r/   eyer   r   rW   rX   r  r5   r[   r9   r9   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-uniquerT   r  r  )r   r/   r  rW   rX   r  r5   r[   r9   r9   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))r@   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:  rT   r  r/   r   r   rW   rX   r   r5   )r7   r>   expected_msgr  r8   r9   r9   r:   test_group_subplot_bad_input	  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    d S 1 s)w   Y  d S )Nr!   r:  z Column label\(s\) \['bad_name'\]rT   )r   bad_namer  r  r  r9   r9   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 subplotrT   r:  )r   r   r  r  r  r9   r9   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 ofrT   r  r  )r7   r(  r  r8   r9   r9   r:   test_group_subplot_invalid_kind	  s   "z2TestDataFramePlots.test_group_subplot_invalid_kindz index_name, old_label, new_label)Nrz  new)oldr  r  )Nrz  rz  )Nrz  r@   rz  )rZ   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 )
Nr@   r   rh   Type AType Br   r+  rz  )r(  r  xlabel)r   r-   r   r5   
get_xlabelr  str)r7   r(  
index_name	old_label	new_labelr8   rd   r9   r9   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  r@   r   rh   r   )r(  rR   rS   r  r  )r   r5   r  r  )r7   r(  r  r  xcolycolr8   rd   r9   r9   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   rj   r  )rL  r  rk   rg   )	r   r5   r  rF   r   get_visibler  rT  
get_yticks)r7   rL  ax_dfrd   r9   r9   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   r/   r0   r1   r2   r   r3   r4   r   r   r   r5   r  )r7   r8   r   r9   r9   r:   test_plot_no_warning	
  s   "z'TestDataFramePlots.test_plot_no_warning)NNNN)__name__
__module____qualname__rW   markslowr;   rG   rJ   rN   xfailr]   re   parametrizerq   rz   r|   r   r   r   r   r3   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'  r1  r3  r6  r8  r~   r   rE  rJ  rK  rN  rR  rX  r]  rc  rd  rl  rm  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.  r/  r0  r1  r6  r7  r8  rH  rI  rL  r  rV  r`  r  r   rh  rk  ry  r}  r  r  r   rV  _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)  r4  r9  r:  r;  
_all_kindsrA  rP  rT  rX  rZ  r\  rc  rg  rn  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r9   r9   r9   r:   r   6   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   r3  )r@   r   r  r   )rr  r   r   rC  rG  subplot)rx  r3  ax_tlax_llax_trax_lrr9   r9   r:   r0  
  s   r0  )4__doc__r   r   r>  r  r  ra   r<  numpyr/   rW   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.io.formats.printingr   r-  r   rx  r   r0  r9   r9   r9   r:   <module>   sN    ,<

                   t