o
    %j>                    @   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 Zbejcdejj
edeejfeddkdd
dd Zgejcdejj
edeejfeddkdd
dd Zhejcdejj
edeejfeddkdd
dd Zidd Zjejd g ddd Zkdd Zldd Zmdd	 Znd
d Zodd Zpdd Zqdd Zrdd Zsdd Ztdd Zuejdde'jvdd de'jvdd gdd Zw	#	#	#	#ddd Zxejd!e'ye'zg d"e'zg d#e'ye'zg d"e'zg d$e'ye'zg d"e'zg d%d&e'ye'ze'j,d|d'd(dd)ge'zg d*e'ye'zd|e'j,d'd(dd)ge'zg d+e'ye'zd|d'd(e'j,dd)ge'zg d,d&gd-d. Z{d/d0 Z|ejd1d2d3d4d֜d2d3dg d5d2d3ggd6d7 Z}d8d9 Z~ejd:g d;d<d= Zd>d? Zejdyejjd@dA Zejdyd<d?gdBdC ZejdyejjdDdE Zejdyeejjdzg dFdG ZdHdI ZejdJd,d-gd+dKfd+gd,d-gdLdMgfgdNdO ZdPdQ ZejdRdSd+gd,fgdTdU ZejdVd+d,gdLgdWgfd+d,d-gdLdMgdWdXgfdYd|d'gdZd[gd\d]gfgd^d_ Zejd`dYd|d+d,gfd|dYdYd|gfgdadb Zdcdd Zdedf Zejdgd#e'jgdhdi Zejdji dkfdldmidmfdndoidofgdpdq Zdrds Zejd;dtd'gdudv Zdwdx Zdydz Zd{d| Zejjejdd}diddd~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'vdd d=de+e'vdd e'vdd d>gdd Zejjejdyg dejde+e'vdd e'vdd d>e+e'vdd e'vdd d>fee'vdd d=dee'v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dyejj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:   g/var/www/html/Deteccion_Ine/venv/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)Z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   )ylimZxlimTblah)r>   r?   titlec                 C   s>   t tjddttjd d d}t|jfi | d S )Nr    r^   r"   r_   	r   r0   r1   r2   r4   ra   rb   r   r6   r8   rf   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_   Trl   )r?   rm   rQ   rQ   rA   rB   Fvisibleminorr   rM   )r   r0   r1   r2   r4   ra   rb   r6   r   r   xaxisget_xticklabels	get_labelr   )r8   r9   rG   rd   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_   rl   rm   rn   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_   Tr`   r   rM   )zipra   rb   ranger   r0   r1   r2   r   from_tuplesr   r6   r   )r8   Ztuplesr9   rd   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   rh   )   δ   )r      Zi0i1)names)baru   Δ)r   u   ΕZc0c1r    r   r"   )   r    r,   u   Σrz   )	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?   rd   rA   r   )r   r0   r1   r2   mplpyplotr?   r6   r   lenrG   )r8   r9   _rd   rG   resultr:   r:   r;   test_plot_passed_ax   s   z&TestDataFramePlots.test_plot_passed_axz
cols, x, yZ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)Z2008Z2009NZ2011Z2012rA   r    rQ   r#   rh   r   rh   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   )rZ   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, kwargsrZ   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   rf   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_linesrc   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   rv   rx   rc   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   NAMEZ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    rh   r#   r$   r%   r'   rh   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'   rh   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'   rh   r(   r)   r,   rA   ZTest)   r   )rS   rT   rm   figsizer   )g      0@g       @)rC   rD   r   )r   r0   r1   r2   r3   r   r4   r5   r   r6   r   rm   r   rc   r:   r:   r;   test_plot_xy_figsize_and_titleK  s   z1TestDataFramePlots.test_plot_xy_figsize_and_titlezinput_log, expected_log)Tlog)ZsymZ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rv   loglog)rv   r   )r   r0   r   r6   r   Z
get_yscaleZ
get_xscale)r8   Z	input_logZexpected_logr9   rd   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   rj   r_   z	keyword 'z*' should be bool, None, or 'sym', not 'sm'rU   smzPiePlot ignores the 'z	' keywordr?   Tr:   )r   r0   r   rW   rX   
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   rd   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   rd   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   Z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   Z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   rj   c   rI   r%   )r.   r&   r   rA   )r&   r   F)Zcheck_index_type)r   r0   r   r   int64r6   r   Z
get_xydatar	   r   Zassert_series_equalrT   )r8   r   r9   rd   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   rd   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   ra   rb   rW   rX   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   Zzerosr   r   r|   r   assert_numpy_array_equal)r8   Znormal_linesZ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  Zsep_dfr  r  r:   r:   r;   test_line_area_stacked_sep_df
  s    $z0TestDataFramePlots.test_line_area_stacked_sep_dfc                 C   s   t tjddttjd d g dd}t|j	dd d}t
jt|d	 |j	d
d W d    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   ra   rb   r   r6   rW   rX   r   )r8   Z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   Z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   rd   Zmasked1Z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   Tr  r   )r0   r   r   r   r   r   r6   r   r	  r   r  )r8   r  r$  r%  r9   	expected1	expected2rd   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_   r(  r%   r)  r   Fr  )r0   r   r   r   r   r   r6   r  r   r	  r   r  )	r8   r  rf   r$  r%  r9   r*  r+  rd   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   rf   r9   rd   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    r/  r   r   T)r.  r?   rQ   rq   rB   Zleft_axright_axr   rI   )
r   r0   r1   r2   r6   r   hasattrr   r   r   )r8   r9   rG   rd   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   r  r   rI   )r   r0   r1   r2   r   r6   r  r   get_ylimr   r   )
r8   r  r9   Zneg_dfrd   r   r  ZyminZymaxr   r:   r:   r;   test_area_lim  s   z TestDataFramePlots.test_area_limc                 C   s   t tjddddgd}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  )rd   r  )
r   r0   r1   r2   r   r   r?   r6   r   Zjoined)r8   r9   figr  r  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    rh   rh   )r  	linewidth)	r   r0   r1   r2   r3   r6   r   patchesget_linewidth)r8   r  r9   rd   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?   rh   )rh   rA   rB   )
r   r0   r1   r2   r3   r6   r   r   r=  r>  )r8   r9   rG   rd   r?  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   r=  r   r-   )r8   methdimr  r9   rF  rd   r?  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;  rE  T)rF  r?   )r   r0   r1   r2   r3   r   r6   r=  )r8   rG  rH  r9   rF  rG   rd   r?  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:   Zget_y.0pr:   r:   r;   
<listcomp>      zBTestDataFramePlots.test_bar_bottom_left_bottom.<locals>.<listcomp>   T)rI   c                 S   rL  r:   rM  rN  r:   r:   r;   rQ    rR  rh   )r   r0   r1   r2   r6   r   r=  r8   r9   rd   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   rL  r:   get_xrN  r:   r:   r;   rQ    rR  z@TestDataFramePlots.test_bar_bottom_left_left.<locals>.<listcomp>rA   rS  Tr   c                 S   rL  r:   r\  rN  r:   r:   r;   rQ    rR  rh   )r   r0   r1   r2   r6   rC  r   r=  rX  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?   rK  c                 S   rL  r:   rM  rN  r:   r:   r;   rQ    rR  zDTestDataFramePlots.test_bar_bottom_left_subplots.<locals>.<listcomp>rh   rZ  )r?   r[  c                 S   rL  r:   r\  rN  r:   r:   r;   rQ    rR  rA   )	r   r0   r1   r2   r6   r   r=  rC  r   )r8   r9   rG   rd   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"      rh   r"   r`  r   r   r(   r   	r"   r   r`  rh   r"   r`  rA   r    rQ   c                 S   rL  r:   rD  rN  r:   r:   r;   rQ    rR  z3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>r   r0   r   r6   r   r=  r8   r9   rd   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`  ra  r   rb  Tr  rc  c                 S   rL  r:   rd  rN  r:   r:   r;   rQ    rR  z;TestDataFramePlots.test_bar_nan_stacked.<locals>.<listcomp>c                 S   rL  r:   rM  rN  r:   r:   r;   rQ    rR  )	r   r   r         $@r   g      4@g      .@ri  g      D@re  rf  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   rh   ZABCDEFZabcder   )r   rA   r    rQ   r#   rh   )g      g      @r   g      пrI   g@Tr  g      @)r   r0   r1   r2   r3   r4   r6   r   rv   get_ticklocsr   r	  r   r   r=  r]  )r8   r  r9   rd   Z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   ra   rb   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   ra   rb   reescaperW   rX   	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   ra   rb   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*   Zdtimez9must be a string or a (real )?number, not 'datetime.time'rU   r   )r  rS   rT   )r   r0   r1   r2   r3   r   timerW   rX   rr  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)rv  r*   r+   r    r   ry  rR   )r   r   r0   r1   r2   normalr   r   r   r6   r   )r8   rS   rT   r   rz  r9   r:   r:   r;   test_scatterplot_datetime_dataI  s   z1TestDataFramePlots.test_scatterplot_datetime_datainfer_stringZpyarrow)Z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_stringrb  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@lengthrF  r   )r  r  r  r  r  )r  r  Zspeciesr   rA   rS   rT   r   )      ?g      ?g      @r   c                 S   rL  r:   get_text)rO  ir:   r:   r;   rQ  z  rR  zLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>c                 s   s    | ]	\}}||kV  qd S Nr:   )rO  r  jr:   r:   r;   	<genexpr>{  s    zKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)r   r   Categoricalr6   r   collectionscolorbarr0   r   Z	get_ticksr   r	  Z_boundariesrd   Zget_ymajorticklabelsallr|   )r8   r  r  r9   rd   Zcolorbar_collectionr  Zexpected_ticksZresult_ticksZexpected_boundariesZresult_boundariesZexpected_yticklabelsZresult_yticklabelsr:   r:   r;   %test_scatterplot_color_by_categorical^  s*    
 z8TestDataFramePlots.test_scatterplot_color_by_categorical)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   rn  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   rj   r  lowhighsizer   r  r   r  ZGreysr   )r   r0   r1   r2   r   r4   ra   rb   r6   r   r  cmapr   r  rd   
get_ylabel)r8   rS   rT   r   r9   rd   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   rj   r  r  r   r  r   	cubehelixrS   rT   r   )rS   rT   r   colormapF)rS   rT   r   r  rA   redr  r?  Z
facecolors)r   r0   r1   r2   r   r4   ra   rb   r6   r   r  r  r   r  r   )r8   r9   cmrd   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   Zspring)rS   rT   r   r  )	r   r0   r   r6   r   r   r	  r  Zget_facecolor)r8   r9   Zred_rgbaZ
green_rgbaZ
rgba_arrayrd   Z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^   rj   r   r   r   r   r   )rS   rT   r   r   )right)r   r0   r1   r2   r6   r   r   r	  valuesr  Z	get_sizesrc   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^   rj   r   r   r   r   r   )rS   rT   r   normr   )r   r0   r1   r2   r   colorsZLogNormr6   r   r  r  )r8   r9   r  rd   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^   rj   r   r   r   r   r   r  r   )r   r0   r1   r2   r6   r   r  r  r   minmaxr   r  Z	Normalize)r8   r9   rd   Z	plot_normZcolor_min_maxZdefault_normvaluer:   r:   r;   test_plot_scatter_without_norm  s   
z1TestDataFramePlots.test_plot_scatter_without_normlegendr=   c                 C   sF   t tjddttjd d g dd}t|j	j
fi | d S )Nr    r  r   onetwothreer  r   )r   r0   r1   r2   r3   r4   ra   rb   r   r6   r   ro   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   ra   rb   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   rc   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   rC  r   rc   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   rO  r   r:   r:   r;   rQ    rR  z3TestDataFramePlots.test_boxplot.<locals>.<listcomp>rA   r   )_get_numeric_datar-   r   r6   boxr   rw   r   r	  rv   rk  r0   r   r   r   )r8   hist_dfr9   numeric_colslabelsrd   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;   rQ  !  rR  zDTestDataFramePlots.test_boxplot_series_positions.<locals>.<listcomp>r   )r0   r   r6   r  r  r-   r   rw   r   r	  rv   rk  r   r   )r8   r  r9   r  rd   r  r  r:   r:   r;   test_boxplot_series_positions  s   
z0TestDataFramePlots.test_boxplot_series_positionsz!ignore:set_ticklabels:UserWarning3.10z#Fails starting with matplotlib 3.10c                 C   s   |}|  j}dd |D }ttjtdk rddinddi}|jjddd	d
|}t|ddd	d t|	 | t
|jdt
| ksGJ d S )Nc                 S   r  r:   r   r  r:   r:   r;   rQ  .  rR  z<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>r  vertForientation
horizontal2   r   r  r   rN   r  r  r   r:   )r  r-   r   r   __version__r6   r  r   r   get_yticklabelsr   r   )r8   r  r9   r  r  rf   rd   r:   r:   r;   test_boxplot_vertical&  s   
z(TestDataFramePlots.test_boxplot_verticalzignore::UserWarningz+Fails starting with matplotlib version 3.10c           	      C   s   |}|  j}dd |D }ttjtdk rddinddi}t|jjfdddd	|}t|d
dd t	|dd t
||D ]\}}t| |g t|jdksTJ q?d S )Nc                 S   r  r:   r   r  r:   r:   r;   rQ  C  rR  zETestDataFramePlots.test_boxplot_vertical_subplots.<locals>.<listcomp>r  r  Fr  r  T)r>   r?   r   rQ   )rA   rQ   rB   r   r   r   )r  r-   r   r   r  r   r6   r  r   r   r|   r   r  r   r   )	r8   r  r9   r  r  rf   rG   rd   r   r:   r:   r;   test_boxplot_vertical_subplots;  s(   
z1TestDataFramePlots.test_boxplot_vertical_subplotsc                 C   s   |}|  j}dd |D }tg d}ttjtdk r"ddinddi}|jjdd	|i|}t	|
 | t|j | t|jd
t| ksNJ d S )Nc                 S   r  r:   r   r  r:   r:   r;   rQ  Z  rR  zFTestDataFramePlots.test_boxplot_vertical_positions.<locals>.<listcomp>)rQ   r    r   r  r  Fr  r  r  r   r:   )r  r-   r0   r   r   r   r  r6   r  r   r  r   r	  r   rk  r   r   )r8   r  r9   r  r  r  rf   rd   r:   r:   r;   test_boxplot_vertical_positionsR  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   Z
not_a_typereturn_type)r   r0   r1   r2   r3   r4   ra   rb   rW   rX   r   r6   r  r[   r:   r:   r;    test_boxplot_return_type_invalidf  s   "z3TestDataFramePlots.test_boxplot_return_type_invalidr  )dictrG   Z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   ra   rb   r6   r  r   )r8   r  r9   r   r:   r:   r;   %test_boxplot_return_type_invalid_typep  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  r:   r   r  r:   r:   r;   rQ  ~  rR  z2TestDataFramePlots.test_kde_df.<locals>.<listcomp>r  r   rM   )rW   importorskipr   r0   r1   r2   r3   r   r6   r-   r   r   )r8   r9   rd   rg  r:   r:   r;   test_kde_dfz  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   r0   r1   r2   r3   r6   r   rc   r:   r:   r;   test_kde_df_rot  s   
z"TestDataFramePlots.test_kde_df_rotc                 C   sD   t d ttjdd}t|jdddd}t	|ddd	 d S )
Nr  r    r!   Tr  )r>   r  r?   r#   r@   rB   )
rW   r  r   r0   r1   r2   r3   r   r6   r   rF   r:   r:   r;   test_kde_df_subplots  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   r0   r1   r2   r3   r6   r   rF   r:   r:   r;   test_kde_df_logy  s   
z#TestDataFramePlots.test_kde_df_logyc                 C   s@   t d ttjdjdd}tj|jd< t	|j
dd d S )Nr  r    r  r  r   r   r  r  )rW   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;   rQ    rR  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   rd   rg  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   rO  rS   r  r:   r;   rQ        zMTestDataFramePlots.test_hist_df_series_cumulative_density.<locals>.<listcomp>rI   r   Zmatplotlib.patchesr  r	   r0   r1   r2   r6   r   Zget_childrenr   assert_almost_equalrD  r8   r  rd   Zrectsr:   r  r;   &test_hist_df_series_cumulative_density  s
   z9TestDataFramePlots.test_hist_df_series_cumulative_densityc                    s`   ddl m  ttjdd}|jjddd} fdd	| D }t	
|d
  d d S )Nr   r  r    r"   Tr#   )r  r  c                    r  r:   r  r  r  r:   r;   rQ    r  zETestDataFramePlots.test_hist_df_series_cumulative.<locals>.<listcomp>rT  ri  r   r  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   r  )r  r  r  r   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皙?)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  r  r  c                 S   rL  r:   rd  rO  patchr:   r:   r;   rQ    rR  z8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>c                 S   s   g | ]}d |   qS )r  rd  r
  r:   r:   r;   rQ        )r   r  r|   r0   r1   r2   r3   r   r6   r=  r   r  )r8   r  r9   r  r  Zpatch_height_with_weightsZ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   rL  r:   rM  rN  r:   r:   r;   rQ    rR  z7TestDataFramePlots._check_box_coord.<locals>.<listcomp>c                 S   rL  r:   rd  rN  r:   r:   r;   rQ    rR  c                 S   rL  r:   r\  rN  r:   r:   r;   rQ    rR  c                 S   rL  r:   )rB  rN  r:   r:   r;   rQ    rR  F)Zcheck_dtype)r0   r   r   r	  )
r8   r=  
expected_y
expected_h
expected_x
expected_wZresult_yZresult_heightZresult_xZresult_widthr:   r:   r;   _check_box_coord  s   z#TestDataFramePlots._check_box_coordr"  r   r"   	   r   r   r   r   r   r   r   r   r   r   r   r  r"   rb  r    rQ   rh   )rQ   r"   r  r   r   r   )r   rQ   r   r   r   r   )r   r   r   rQ   r  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   r  )r  r  r"   r  r  T)r  r  )      r   r     )r  r  r?   r   rA   r    r  )r  r  )r  r  )r  r  r  )r  r  r?   r  )r   r6   r   r  r=  r0   r   )r8   r"  r9   rd   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_columnsy  s   z(TestDataFramePlots.test_plot_int_columnsmarkers^+o)r  r   r!  c                 C   s   dd l m} | }|  |d ttjd	d}|j
|d}t| d t| D ]\}}| || ks>J q0d S )Nr   o   r    r^   )style)matplotlib.pyplotr   gcfZclfadd_subplotr   r0   r1   r2   r3   r6   	enumerater   r   Z
get_marker)r8   r  pltr9  r9   rd   r  rZ   r:   r:   r;   test_style_by_column}  s   

 z'TestDataFramePlots.test_style_by_columnc                 C   sP   t ddg}| }| d u sJ |jdd}|  d  dks&J d S )NrA   r    Tr  r    )r	   r6   
get_legend	get_textsr  )r8   r   rd   r:   r:   r;   test_line_label_none  s
    z'TestDataFramePlots.test_line_label_nonezprops, expected))ZboxpropsZboxes)ZwhiskerpropsZwhiskers)ZcappropsZcaps)ZmedianpropsZmediansc                 C   sP   t dd dD }|ddii}|jjd	ddi|}|| d  dks&J d S )
Nc                 S   s    i | ]}|t jd dqS r	  )r0   r1   r2   )rO  kr:   r:   r;   
<dictcomp>  s     zHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ABCcolorZC1r  r  r   r:   )r   r6   r  	get_color)r8   propsrg  r9   Z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   r  r   )r   r   r   testr   r   r%   c                 S   s   g | ]}|  d  qS )r   )Zget_positionr  r:   r:   r;   rQ    r  z8TestDataFramePlots.test_unordered_ts.<locals>.<listcomp>c                 S   rL  r:   r  r  r:   r:   r;   rQ    rR  z%Y-%m-%dr   )r   r   r0   r   r6   r   r   r   r	  r5   r  rv   Zget_ticklabelsr   Zis_monotonic_increasingr   r   )	r8   r.   r  r9   rd   ri   ZydataZxlocsZ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  rW   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 r8  r9  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   rW   rX   rr  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   r  rW   rX   rr  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    rA  z*invalid_plot_kind is not a valid plot kindrU   Zinvalid_plot_kindr  )	r   r0   r1   r2   r3   rW   rX   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#   rh   r   rb  x must be a label or positionrU   rS   rT   r   r   rW   rX   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#   rh   r   rb  z.label should be list-like and same length as yrU   r   r(   r   Z	bad_labelrE  rF  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   rh   )r    r#   r   ZAABr   rD  rU   rR   )r   r4   rW   rX   r   r6   rn  r:   r:   r;   test_invalid_xy_args_dup_cols  s   "z0TestDataFramePlots.test_invalid_xy_args_dup_colszx,y,lbl,colorsr  bluer   Z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#   rh   r   rb  r   rE  )rS   rT   r   r1  Z
linecolors)r   r   r6   r   r   r   r   )r8   rS   rT   rG  r  r9   rd   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   Z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`  r  rb  r   r(   r"   )rS   rT   ZgridsizerA   
r   r0   r1   r2   r  r   r6   r   r   r  rc   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`  r  rb  r   r(   T)rS   rT   r?   r   rA   r   rB   )r   r0   r1   r2   r  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`  r  rb  r   r(   r   )rS   rT   r   Zreduce_C_functionrA   rR  )r8   rV  r9   rd   r:   r:   r;   test_hexbin_with_c8  s   z%TestDataFramePlots.test_hexbin_with_czkwargs, expectedZBuGnr  r  r  ZYlGnc                 C   s|   t tjdjddtjdjddtdtjdjdd d}|jjd	ddd|}|jd j	j
|ks<J d S )
Nr    r`  r  rb  r   r(   rR   r   r:   )r   r0   r1   r2   r  r   r6   r   r  r  r   )r8   rf   rg  r9   rd   r:   r:   r;   test_hexbin_cmapE  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   rQ   XYZr   r   r   der,   z/pie requires either y column or 'subplots=True'rU   )	r   r0   r1   r2   rW   rX   r   r6   r   r[   r:   r:   r;   test_pie_df_errX  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    rY  rZ  r^  r,   r   )
r   r0   r1   r2   r   r6   r   r   textsr.   )r8   rT   r9   rd   r:   r:   r;   test_pie_dfb  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    rY  rZ  r^  r,   Tr=   )r   r0   r1   r2   r   r6   r   r   r-   r   rb  r.   r|   r  )r8   r9   rG   rd   ylabelr:   r:   r;   test_pie_df_subplotsl  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    rY  rZ  r^  r,   r   )r?  gr   r   mT)r>   r?   r  r  r  )r   r0   r1   r2   r   r6   r   r   r-   r   rb  r   r=  )r8   r9   r  Z
color_argsrG   rd   r:   r:   r;   test_pie_df_labels_colors}  s&   z,TestDataFramePlots.test_pie_df_labels_colorsc                 C   s  t tjdd}tdD ]
}tj|j||f< qtjj	dd\}}ddi}t
d  |jj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#   )Zncols	normalizeT)r?   rd   r  )0123r*  c                 S   rL  r:   r  r  r:   r:   r;   rQ    rR  z6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>c                 S   rL  r:   r  r  r:   r:   r;   rQ    rR  rA   r:   )r   r0   r1   r2   r}   r   Zilocr   r   r?   r   r   r6   r   r'  r4   rb  r+  r,  )r8   r9   r  r   rG   rf   Zbase_expectedrd   rg  r   Zresult_labelsexpected_labelsr:   r:   r;   test_pie_df_nan  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    xerrrr  r0   r   r   onesr   r6   r   )r8   rf   r_  r9   d_errdf_errrd   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   rp  rq  rA   r   T)rr  rt  r  r   r    rs  ru  )r8   r_  r9   rw  rx  rd   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   rq  rr  rA   rs  )r    r|  r    )r0   r   r   r   r6   rv  r   r8   r_  r9   rd   r:   r:   r;   test_errorbar_plot_yerr_array  s   z0TestDataFramePlots.test_errorbar_plot_yerr_arrayrr  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   rp  r{  r    rs  rT   rS   )rT   rS   rr  rA   ru  )r8   rr  r_  r9   rd   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  rr  r6   )r8   r_  r9   rx  r:   r:   r;   %test_errorbar_plot_external_typeerror  s   "z8TestDataFramePlots.test_errorbar_plot_external_typeerror)rZ   r   rC  y_errr|  rp  )r   rq  c                 C   s@   t tdtdddd}t|j||d}t|ddd d S )Nr|  r   rI   rR   rr  r  r    rs  r   r0   r   r   r6   r   )r8   r  r  r9   rd   r:   r:   r;   !test_errorbar_plot_different_yerr  s   
z4TestDataFramePlots.test_errorbar_plot_different_yerrzy_err, x_err)rp  rp  c                 C   sB   t tdtdddd}t|j|||d}t|ddd d S )Nr|  r   rI   rR   )rr  rt  r  r    rs  r  )r8   r  r  Zx_errr9   rd   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   rp  rq  T)r>   rr  rt  r?   r  rA   rs  )r   r0   r   rv  r   r6   r   )r8   r  r9   rx  rG   r:   r:   r;   /test_errorbar_plot_different_yerr_xerr_subplots  s   "zBTestDataFramePlots.test_errorbar_plot_different_yerr_xerr_subplotszIterator is consumed)rP   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   rI   rR   r  r{  r    rs  )	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    rA  r{  r   rs  rA   )rT   rr  	r   r0   absr1   r2   r3   r   r6   r   r8   r9   rx  rd   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^   rA  r   r   r  rs  r  )r8   r  r9   rx  rd   r:   r:   r;   'test_errorbar_with_partial_columns_kind3  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^   rA  r   r   1/1/2000r"   MEr)   T)ZinplacerZ   r  rs  )r   r0   r  r1   r2   r3   r   r   r   r6   r   )r8   r9   rx  ixrd   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>J  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   rp  rq  )rS   r   r{  rA   rs  ru  )r8   r  r_  r9   errrd   r:   r:   r;   &test_errorbar_with_partial_columns_boxI  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   rp  rq  r  z1/1/2001r  )r+   r_   r  r    rs  rT   rS   )rT   rr  r  rA   T)r>   r  rr  r?   )r0   r   rv  r   r   r   r6   r   )	r8   r  r_  rw  r  ZtdfZtdf_errrd   rG   r:   r:   r;   test_errorbar_timeseriesR  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    rh   r  rQ   rh   )rr  rt  rA   r   rI   zCAsymmetrical error bars should be provided with the shape (3, 2, 5)rU   r{  )r0   r1   r2   r   r   ZreshapeTr6   r  	get_pathsZverticesr   r   r  rp  rq  rW   rX   r   )r8   r  r9   rd   Zyerr_0_0Zexpected_0_0r\   r:   r:   r;   test_errorbar_asymmetricalt  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   ra   rb   r   r6   r   r   r   Ztablesr   r  r  rc   r:   r:   r;   
test_table  s   "zTestDataFramePlots.test_tablec                 C   s   t ttjddtdddgd}t ttjddd tdddgd}t|jj	ddd}t
|ddd	 t|jj	dd|d
}t
|ddd	 t|jj	dd|d}t
|ddd	 t|jj	dd||d}t
|ddd	 d S )Nr    )rh   r    rh   rS   rT   r   rR   r   rs  )rS   rT   rt  rA   )rS   rT   rr  )rS   rT   rt  rr  )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  r  rd   r:   r;   rQ    r  zaTestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_color.<locals>.<listcomp>rO  )	next
containersr   extendappendr   r0   r   r   )r  rg  r  r   ZerrselZ	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  )rS   rT   rt  rr  r   rA   rs  r  Zhas_yerrrM  )rS   rT   rr  r1  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   rW   rX   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#   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 )	NrA   Trr   r   r    Frt   rQ   )r   r   r   r  rw   rG   rd   r:   r:   r;   _check  s   z5TestDataFramePlots.test_sharex_and_ax.<locals>._checkr   r   rm   T)rS   rT   rm   rd   sharex)r?   rd   r  )r$  r   close_generate_4_axes_via_gridspecr   r6   tight_layoutr%  r   r   r   r8   r(  gsrG   r9   r  rd   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   rm   )rS   rT   rm   rd   rA   Trr   rt   r$  r   r   r  r6   r  r%  r   r   r   r  rw   r8   r(  r9   r  rG   rd   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   Trr   rt   r   r    rQ   F)r   r   r   rw   r  r  r:   r:   r;   r    s   z5TestDataFramePlots.test_sharey_and_ax.<locals>._checkr   r   rm   T)rS   rT   rm   rd   r8  r  )r?   rd   r8  )r$  r   r  r   r6   r  r%  r  r   r   r   r  r:   r:   r;   test_sharey_and_ax  s*   
	


z%TestDataFramePlots.test_sharey_and_axc                 C   r  r  r  r  r:   r:   r;   test_sharey_and_ax_tight5  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`  r  rb  r   r(   rR   r  r!   r$   r%   r'   r"   r)   r,   r  r  Nr:   )rW   r  r   r0   r1   r2   r  r   r3   r   r4   r5   r   r  weakrefrefr6   r(  r  gccollect)r8   r  argsr9   r  r:   r:   r;   test_memory_leakM  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_   rA  ABr   c                     sL     dd}  }|| d dd d f }|| dd d f }||fS )NrQ   rA   r    GridSpecrT  r&  r  r9  r  r  r  r(  r:   r;   _get_vertical_grid  
   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    r  r  r  r:   r;   _get_horizontal_grid  r  zUTestDataFramePlots.test_df_gridspec_patterns_vert_horiz.<locals>._get_horizontal_gridr  rA   Trr   rt   r  r   r?   rd   r  r8  Fr   r  r$  r   r	   r0   r1   r2   r3   r   r   r.   r4   r6   r   r   r   r  rw   r  r   r   r   )	r8   tsr9   r  r  r  r  rd   rG   r:   r  r;   $test_df_gridspec_patterns_vert_horizr  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   r  r    r"   r  r  r_   c                     st     dd}  }|| d dd df }|| d ddf }|| dd df }|| d }||||fS )NrQ   r    rJ   r  )r  r9  r  r  Zax3Zax4r  r:   r;   _get_boxed_grid  s   zKTestDataFramePlots.test_df_gridspec_patterns_boxed.<locals>._get_boxed_gridr!   r$   r   Tr   rA   rr   rt   r  r  rQ   Fr  )r8   r  r  rG   r9   rd   r:   r  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   PlotAccessorZ_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)rp  rp  rp  rp  r    r"   r  )	r   r   r?   add_axesr	   r0   r1   r2   r6   )r8   r9  rd   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   Zhsv)r  rd   rS   rT   r   r  )
r   r0   r1   r2   r3   r   r   rT  r  r6   )r8   r9   r9  rd   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?   Zmpl_toolkits.axes_grid1r  Zappend_axesr	   r0   r1   r2   r6   )r8   r9  rd   r  dividerZcaxr:   r:   r;   #test_plain_axes_make_axes_locatable	  s   "z6TestDataFramePlots.test_plain_axes_make_axes_locatablec                 C   sj   t j \}}ddlm} ||dddd}ttjddj	|d	 ttjddj	|d	 d S )
Nr   )
inset_axesz30%r   rQ   )rF  r  r  r    r"   r  )
r   r   r?   Z%mpl_toolkits.axes_grid1.inset_locatorr  r	   r0   r1   r2   r6   )r8   r9  rd   r  Ziaxr:   r:   r;   test_plain_axes_make_inset_axes 	  s
   "z2TestDataFramePlots.test_plain_axes_make_inset_axesmethod)rZ   rC  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    r  r   c                 S   s
   | j  S r  )r(   r  r9   r:   r:   r;   r  /	     
 zBTestDataFramePlots.test_secondary_axis_font_size.<locals>.<lambda>r   c                 S   s
   | j d S )Ng?r  r  r:   r:   r;   r  0	  r  )r   r`  r   r   T)r.  r  Z
mark_right)rG   r  r:   )r   r0   r1   r2   r3   r4   Zassignr   r6   r   r1  )r8   r  r9   r  r  rf   rd   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)ZsalesZvisitsdayr  r   rI   rQ   c                 S   rL  r:   r  rO  tr:   r:   r;   rQ  F	  rR  zATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>r  r   r  r   r  r   )r   r6   r  set_xlimrw   r  r|   
get_xticks)r8   r9   rd   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 )Nr5  i  rA   r    r7  r   r(   r,   rI   r#   c                 S   rL  r:   r  r  r:   r:   r;   rQ  X	  rR  zETestDataFramePlots.test_x_multiindex_values_ticks.<locals>.<listcomp>z	(2012, 1)r   z	(2012, 2)r   z	(2013, 1)r   z	(2013, 2)r   )r   Zfrom_productr   r0   r1   r2   r3   r6   r  rw   r  r|   r  )r8   r.   r9   rd   r  r  r:   r:   r;   test_x_multiindex_values_ticksM	  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   rd   xlimsr:   r:   r;   test_xlim_plot_line`	  s
   z&TestDataFramePlots.test_xlim_plot_linec                 C   s   t j \}}g d}tg dg dg dg dd|d}|g d jj|d	d
 |dg j|dd | }|d dk s@J |d dksHJ dd | D }||ksWJ d S )N)Zk1Zk2Zk3Zk4)i  r     r   )i  ix  r   i  )r  r  i@  i  )rA   rQ   r#   rQ   )s1s2s3r.  r_   )r  r  r  F)rd   r  r.  T)rd   r.  r   rA   rQ   c                 S   rL  r:   r  r  r:   r:   r;   rQ  	  rR  zWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)r   r   r?   r   r6   r   r   rw   )r8   r9  rd   Zindexesr9   r  r  r:   r:   r;   0test_xlim_plot_line_correctly_in_mixed_plot_typej	  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 )NZfoo)r-   r&   rA   r   )r   intemptyr6   r   r   r   r  )r8   r9   rd   rZ   r:   r:   r;   test_plot_no_rows	  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   rW   rX   rr  r6   r7   r:   r:   r;   test_plot_no_numeric_data	  s   
"z,TestDataFramePlots.test_plot_no_numeric_data)rZ   r   rC  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  rZ   )
rW   r  r0   r   r   r6   r   r|   r   r   )r8   r  r_  r9   rG   rn  rd   r  r:   r:   r;   test_group_subplot	  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}   rW   rX   NotImplementedErrorr6   )r8   Z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{  rm  r   z6An iterable subplots for a DataFrame with a MultiIndexrU   r  )	r   r0   eyer   r~   rW   rX   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  rW   rX   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   rW   rX   r   r6   )r8   r?   Z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   Zbad_namer  z-Column label\(s\) \[np\.str\_\('bad_name'\)\])	r0   r   r   r   r  rW   rX   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*  )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 )
NrA   r    rh   Type AType Br   r  r*  )r  rd  xlabel)r   r.   r   r6   
get_xlabelr  str)r8   r  Z
index_nameZ	old_labelZ	new_labelr9   rd   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    rh   r   )r  rS   rT   r  rd  )r   r6   r  r  )r8   r  r  rd  ZxcolZycolr9   rd   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   rj   r   )r.  rd  rk   rg   )	r   r6   rT  rG   r   Zget_visibler  r5  Z
get_yticks)r8   r.  Zax_dfrd   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__rW   markZslowr<   rH   rK   rO   Zxfailr]   re   Zparametrizerp   ry   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  r  r  r  r  r}   r   r'  r,  r-  r0  r3  r6  r:  r@  rA  rI  rJ  rY  r^  r_  rh  rj  r   r   ZCategoricalIndexrl  ro  rs  rt  rx  r  paramtdZ
skip_if_nor  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  filterwarningsr   r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rv  r  r  r  r   r  r  r)  r-  r4  r7  r   r  Z_common_kindsr;  r<  r@  rB  rC  rH  rI  rJ  rP  rQ  rS  rU  ZstdrW  rX  ra  rc  re  rh  ro  ry  rz  r}  r~  r  r  r	   r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  Z
_all_kindsr  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r	  r
  r  r  r  r  r  r  r  r  r:   r:   r:   r;   r   7   sp   



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

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




			."""***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    r  )rA   r   r{  r   )r$  r   r   r  r  Zsubplot)r(  r  Zax_tlZax_llZax_trZax_lrr:   r:   r;   r  7
  s   r  )6__doc__r   r   r  r  rp  ra   r  numpyr0   rW   Zpandas.util._test_decoratorsutilZ_test_decoratorsr$  Zpandas.core.dtypes.apir   Zpandasr   r   r   r   r   r	   r
   r   r   r   Zpandas._testingZ_testingr   Zpandas.tests.plotting.commonr   r   r   r   r   r   r   r   r   r   r   r   r   Zpandas.util.versionr   Zpandas.io.formats.printingr   r  r   r(  r   r  r:   r:   r:   r;   <module>   sR    ,<

                    