o
    Tio                    @   s  d Z ddlmZmZ ddlZddlZddlZddlZddlZddlZ	ddl
Z
ddlmZ ddlZddlmZmZmZmZmZmZmZ ddlmZ ddlmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& ddl'm(Z( e
)dZ*e
)d	Z+G d
d dZ,dd Z-dS )z Test cases for DataFrame.plot     )datedatetimeN)is_list_like)	DataFrame
MultiIndexPeriodIndexSeriesbdate_range
date_rangeplotting)_check_ax_scales_check_axes_shape_check_box_return_type_check_colors_check_data_check_grid_settings_check_has_errorbars_check_legend_labels_check_plot_works_check_text_labels_check_ticks_props_check_visible
get_y_axispprint_thing
matplotlibzmatplotlib.pyplotc                   @   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deGjHeGjIgdd ZJejdd>dgdd ZKdd ZLdd ZMdd ZNejdddgdd ZOejdddgejdg dĢg dŢgddǄ ZPejdddgejdg dʢg dˢfdd̈́ ZQejdg d΢ddЄ ZRejdddgddՄ ZSddׄ ZTddل ZUddۄ ZVdd݄ ZWdd߄ ZXejjejdi ddidddddigdd ZYejjdd ZZejjdd Z[ejjdd Z\dd Z]dd Z^dd Z_dd Z`ejaddd Zbdd Zcdd Zdejdg ddd Zedd Zfdd  Zgdd Zhdd Zidd Zjdd Zkd	d
 Zldd Zmdd Zndd Zoejdde'jpdd de'jpdd gdd Zq	#	#	#	#dddZrejde'se'tg de'tg de'se'tg de'tg de'se'tg de'tg dde'se'te'j,d|d d!dd"ge'tg d#e'se'td|e'j,d d!dd"ge'tg d$e'se'td|d d!e'j,dd"ge'tg d%dgd&d' Zud(d) Zvejd*d+d,d-dӜd+d,dg d.d+d,ggd/d0 Zwd1d2 Zxejd3g d4d5d6 Zyd7d8 Zzejdye{j|j}d9d: Z~ejdyd<d?gd;d< Zejdye{j|j}d=d> Zejdyee{j|j}dzg d?d@ ZdAdB ZejdCd,d-gd+dDfd+gd,d-gdEdFgfgdGdH ZdIdJ ZejdKdLd+gd,fgdMdN ZejdOd+d,gdEgdPgfd+d,d-gdEdFgdPdQgfdRd|d gdSdTgdUdVgfgdWdX ZejdYdRd|d+d,gfd|dRdRd|gfgdZd[ Zd\d] Zd^d_ Zejd`d#e'jgdadb Zejdci ddfdedfidffdgdhidhfgdidj Zdkdl Zejd;dmd gdndo Zdpdq Zdrds Zdtdu Zejjejddvdidddwdxdigdydz Zejjd{d| Zejjd}d~ Zejjejdddgdd Zejjdd Zejjdd Zejjejdyg dejdee'pdd d=de+e'pdd e'pdd d>gdd Zejjejdyg dejde+e'pdd e'pdd d>e+e'pdd e'pdd d>fee'pdd d=dee'pdd d=dfdgdd Zejjejdyg ddd Zejj
deddd Zdd Zejjejdyd7d8gdd Zejjdd Zejjejddd e+gdd Zejdyg ddd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zejdye{j|jdd Zdd Zdd Zdd Zdd ZddÄ ZdĐdń ZdƐdǄ Zejdg dɢdʐd˄ Zd̐d̈́ Zdΐdτ Zejdyd7dzgdАdф ZdҐdӄ ZdԐdՄ Zd֐dׄ Zejdydءdِdڄ Zdېd܄ Zdݐdބ Zdߐd Zejdg ddd Zdd Zdd Zejdyddd Zejdddddd#dd|d gfgejdyg ddd Zejdg dejdyd<d?gdd Zejdddd Zd#S (  TestDataFramePlotsc                 C   s   t  }t|jdd d S )NF)grid)tmmakeTimeDataFramer   plotselfdf r$   f/var/www/html/evchargy.com/venv/lib/python3.10/site-packages/pandas/tests/plotting/frame/test_frame.py	test_plot3   s   zTestDataFramePlots.test_plotc                 C   s*   t  }t|jddd}t|ddd d S )NTdefault_axessubplots   r*      axes_numlayoutr   r   r   r    r   r"   r#   axesr$   r$   r%   test_plot_subplots8   s   z%TestDataFramePlots.test_plot_subplotsc                 C   s,   t  }t|jdddd}t|ddd d S )NT)   )r(   r)   r/   r*   r5   r5   r-   r0   r1   r$   r$   r%   "test_plot_subplots_negative_layout?   s   z5TestDataFramePlots.test_plot_subplots_negative_layoutc                 C   s8   t  }t|jdddd}t|dd t|ddd d S )	NTF)r(   r)   	use_indexr   xrotr*   r+   r-   )r   r   r   r    r   r   r1   r$   r$   r%   test_plot_subplots_use_indexJ   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,   r5      r*   xyz''Line2D' object has no property 'blarg'matchT)Zblarg)r   pytestraisesAttributeErrorr    liner"   r#   msgr$   r$   r%   test_plot_invalid_argV   s
   "z(TestDataFramePlots.test_plot_invalid_argc                 C   sF   t tjddttjd d d}t|jdd}t	|dd d S )	Nr5   
   r=   rK   indexTr8   r   r9   )
r   nprandomdefault_rngliststringascii_lettersr   r    r   r"   r#   axr$   r$   r%   test_plot_tick_props^   s   z'TestDataFramePlots.test_plot_tick_propskwargsyticks)r,      rK   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 )Nr5   rJ   rK   rL   	r   rO   rP   rQ   rR   rS   rT   r   r    r"   rX   r#   r$   r$   r%   test_plot_other_argsh   s
   z'TestDataFramePlots.test_plot_other_argsc                 C   s   t tjddttjd d d}|jddd}t|dd	d
 |d d D ]#}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 )Nr5   rJ   rK   rL   Tr^   )r)   r_   r=   r=   r,   r-   Fvisibleminorr   r9   )r   rO   rP   rQ   rR   rS   rT   r    r   r   xaxisget_xticklabels	get_labelr   )r"   r#   r2   rV   r$   r$   r%   test_plot_visible_axy   s"   	

z'TestDataFramePlots.test_plot_visible_axc                 C   s:   t tjddttjd d d}t|jdd d S )Nr5   rJ   rK   rL   r^   r_   r`   r!   r$   r$   r%   test_plot_title   s
   z"TestDataFramePlots.test_plot_titlec                 C   sV   t tjd d td}ttjddt	|d}t
|jdd}t|dd d S )	NrK   r5   rJ   rL   TrN   r   r9   )ziprS   rT   ranger   rO   rP   rQ   r   from_tuplesr   r    r   )r"   Ztuplesr#   rV   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   )rr   r,   )   βr5   )rs   r=   )   γr*   )rt   rZ   )   δ   )ru      Zi0i1)names)baru   Δ)rz   u   ΕZc0c1r5   r   rK   )   r5   columnsrM   u   Σrl   )	r   rp   r   rO   rP   rQ   integersr   r    )r"   rM   r~   r#   r$   r$   r%   test_plot_multiindex_unicode   s   
z/TestDataFramePlots.test_plot_multiindex_unicoder/   N)r4   r,   c                 C   s>   t dtjddi}t|jjd|d}t|ddd d S )	Nr?   r5   rK   T)r)   r/   r,   r,   r,   r-   )r   rO   rP   rQ   r   r    rz   r   )r"   r/   r#   r2   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 )Nr?   r5   rK   Tr)   rV   r,   r   )r   rO   rP   rQ   mplpyplotr)   r    rz   lenr2   )r"   r#   _rV   r2   resultr$   r$   r%   test_plot_passed_ax   s   z&TestDataFramePlots.test_plot_passed_axz
cols, x, yZABCDEABCDEc              
   C   st   g d}t g dg dtjddtjddgtdtj|dd	d
tj|dddd
d}t|| j	||d d S )N)Z2008Z2009NZ2011Z2012r,   r5   r=   r*   rZ   rw   rZ   r=   r5   dtypez%Y)formati8T)r   utcr   r   r   r   r   r>   )
r   rO   arraynanobjectpdto_datetimeviewr   r    )r"   colsr?   r@   datesr#   r$   r$   r%   test_nullable_int_plot   s   
z)TestDataFramePlots.test_nullable_int_plotr    )rF   rz   histpiec                 C   s.   t jg ddd}t|}tt|j| d S )Nr,   r5   r=   r*   UInt32r   )r   r   r   r   getattrr    )r"   r    arrsr$   r$   r%   test_integer_array_plot_series   s   z1TestDataFramePlots.test_integer_array_plot_serieszplot, kwargsrF   rz   r   r   r@   scatterr?   r>   hexbinc                 C   s<   t jg ddd}t||d}tt|j|fi | d S )Nr   r   r   r>   )r   r   r   r   r   r    )r"   r    rX   r   r#   r$   r$   r%   test_integer_array_plot_df   s   z-TestDataFramePlots.test_integer_array_plot_dfc                 C   s6   t g dg dd}| }t| dksJ d S )Nr?   r@   zr,   r5   r=   r   r   r,   )r   r    r   	get_linesrU   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 )Nr5   rJ   abcr~   r   r   r>   )	r   rO   rP   rQ   standard_normalr    r   rh   rj   rU   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 )	Nr5   r6   r   r   r   NAMEZLABEL)r@   label)r   rO   rP   rQ   r   rM   namer    r!   r$   r$   r%   test_donot_overwrite_index_name  s   z2TestDataFramePlots.test_donot_overwrite_index_namec                 C   s   t d}t|jddd|dd   t|jdd|d  t|jdd|j  t|jddd|dj  t|jdd|d  t|jdd|j  d S )	NrZ   r   r,   r>   r   r   r?   r@   )r   r   r   r    	set_indexr   r!   r$   r$   r%   test_plot_xy  s   
" zTestDataFramePlots.test_plot_xyc                 C   s~   t d}tdt|jd |_t|jddd|dd   t|jdd|d  t|jdd|d   d S )NrZ   r,   r5   r>   r   r   )	r   r   rO   aranger   r~   r   r    r   r!   r$   r$   r%   test_plot_xy_int_cols&  s
   
"z(TestDataFramePlots.test_plot_xy_int_colsc                 C   s<   t d}|jddddd}t|jd t|dddd	 d S )
NrZ   r,   r5   ZTest)   r|   )r?   r@   r_   figsizer   )g      0@g       @)r.   r/   r   )r   r   r    r   r_   r   rU   r$   r$   r%   test_plot_xy_figsize_and_title.  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   r\   rL   logyyaxis)logxrh   loglog)rh   r   )r   rO   r   r    r   Z
get_yscaleZ
get_xscale)r"   Z	input_logZexpected_logr#   rV   r$   r$   r%   test_logscales8  s   z!TestDataFramePlots.test_logscalesinput_param)r   r   r   c                 C   sh   t dtditdd}d}tjt|d |jdi |di W d    d S 1 s-w   Y  d S )Nr   r\   rL   z9Boolean, None and 'sym' are valid options, 'sm' is given.rA   smr$   )r   rO   r   rC   rD   
ValueErrorr    )r"   r   r#   rH   r$   r$   r%   test_invalid_logscaleK  s
   "z(TestDataFramePlots.test_invalid_logscalec                 C   sB   t  }|jdd}| }t|d  trJ t|dd d S )NT)x_compatr      r9   )r   r   r    r   
isinstance	get_xdatar   r   r"   r#   rV   linesr$   r$   r%   test_xcompatT  s
   zTestDataFramePlots.test_xcompatc                 C   sH   t  }dtjd< | }| }t|d  trJ t	|dd d S )NTzxaxis.compatr   r   r9   )
r   r   r   plot_paramsr    r   r   r   r   r   r   r$   r$   r%   test_xcompat_plot_params[  s   
z+TestDataFramePlots.test_xcompat_plot_paramsc                 C   s   t  }dtjd< | }| }t|d  trJ d}t j	t
|d tt|d  ts3J W d    d S 1 s>w   Y  d S )NFr   r   zPeriodDtype\[B\] is deprecatedrA   )r   r   r   r   r    r   r   r   r   assert_produces_warningFutureWarningr"   r#   rV   r   rH   r$   r$   r%   !test_xcompat_plot_params_x_compatc  s   
"z4TestDataFramePlots.test_xcompat_plot_params_x_compatc                 C   sn   t  }tjdd" | }| }t|d  t	rJ t
|dd W d    d S 1 s0w   Y  d S )Nr   Tr   r   r9   )r   r   r   r   Zuser    r   r   r   r   r   r   r$   r$   r%   (test_xcompat_plot_params_context_managern  s   "z;TestDataFramePlots.test_xcompat_plot_params_context_managerc                 C   s   t  }| }| }t|d  trJ d}t jt|d tt|d  ts.J W d    n1 s8w   Y  t	|dd d S )Nr   zPeriodDtype\[B\] is deprecated rA   r9   )
r   r   r    r   r   r   r   r   r   r   r   r$   r$   r%   test_xcompat_plot_periodw  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 )Nr5   )   r5     r,      r   r   rM   r~   r   r   )
r   rO   rP   rQ   r	   r   r    r   r   Zaxhliner!   r$   r$   r%   test_period_compat  s   z%TestDataFramePlots.test_period_compatindex_dtypec                 C   s   t dtditjtddd|dtjd}| }| d }| }t	|d d df |d d df tjdd	}t
j||jd
d d S )Nr@   r\   c   r4   r   )rM   r   r   r,   )r   r   F)Zcheck_index_type)r   rO   r   r   Indexint64r    r   Z
get_xydatar   r   Zassert_series_equalr@   )r"   r   r#   rV   r   rsr$   r$   r%   test_unsorted_index  s   *z&TestDataFramePlots.test_unsorted_indexr#                 ?       @      @)r   r   r   r   rL   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   )r    get_xlimr   rO   nanminget_datananmaxr"   r#   rV   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@)r@   r   r   r@   r>   r   )r   r    r   r   rO   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 )Nr5   rv   r*   rv   r?   r@   r   fourr   z+Log-y scales are not supported in area plotrA   Tr   r   )r   rO   rP   rQ   rR   rS   rT   rC   rD   r   r    arearG   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   r,   )rO   Zzerosr   r   rn   r   assert_numpy_array_equal)r"   Znormal_linesZstacked_linesbasenlslsyr$   r$   r%   _compare_stacked_y_cood  s   z*TestDataFramePlots._compare_stacked_y_coodkindr   multr,   r4   c                 C   sV   |t tjddg dd }t|j|dd}t|j|dd}| |j|j d S )Nr5   r   wr?   r@   r   r   Fr  stackedTr   rO   rP   rQ   r   r    r  r   )r"   r  r  r#   ax1ax2r$   r$   r%   test_line_area_stacked  s   z)TestDataFramePlots.test_line_area_stackedc                 C   s   t tjddtjddtjdd tjdd d}t|j|dd}t|j|dd}| |jd d |jd d  | |jdd  |jdd   d S )Nr5   rv   r  Fr	  Tr  )r"   r  Zsep_dfr  r  r$   r$   r%   test_line_area_stacked_sep_df  s    $z0TestDataFramePlots.test_line_area_stacked_sep_dfc                 C   s   t tjddttjd d g dd}t|j	dd d}t
jt|d	 |j	d
d W d    d S 1 s9w   Y  d S )Nr5   r   rv   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 valuesrA   T)r   rO   rP   rQ   r   rR   rS   rT   r   r    rC   rD   r   )r"   Zmixed_dfrH   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 )Nr5   r   r  r   r,   T)r  r   r
  )r   rO   rP   rQ   r   rM   r   r    )r"   r  r#   Zdf2r$   r$   r%   #test_line_area_stacked_positive_idx  s
   z6TestDataFramePlots.test_line_area_stacked_positive_idxidxr*   z	2023-01-1)freqperiodsc           	      C   s   ddt jdg}dt jddg}t||d|d}t|j}|jd  }|jd  }t jg dt jd}t	
t |jd| t jg d	t jd}t	
t |jd| t	
|jt g d
 t	
|jt g d d S )Nr,   r5   r=   r   r   rL   r   r   r   )r=   r5   r,   )FFTF)FTFF)rO   r   r   r   r    r   	get_ydatar   float64r   r   deletedatamask)	r"   r  values1values2r#   rV   Zmasked1Zmasked2expr$   r$   r%   test_line_area_nan_df  s   
z(TestDataFramePlots.test_line_area_nan_dfc                 C   s   ddt jdg}dt jddg}t||d|d}t jg dt jd}t jg dt jd}t|jd	d
}t|j	d 
 | t|j	d 
 ||  d S )Nr,   r5   r=   r  rL   r,   r5   r   r=   r   r=   r   r5   r,   Tr  r   )rO   r   r   r   r  r   r    r   r   r   r  )r"   r  r  r  r#   	expected1	expected2rV   r$   r$   r%   test_line_area_nan_df_stacked  s   z0TestDataFramePlots.test_line_area_nan_df_stackedr
  Fc           	      C   s   ddt jdg}dt jddg}t||d|d}t jg dt jd}t jg dt jd}t|jjfi |}t	|j
d	  | |rNt	|j
d  | nt	|j
d  ||  t|jjd
d}t	|j
d	  | t	|j
d  | d S )Nr,   r5   r=   r  rL   r   r   r!  r   Fr  )rO   r   r   r   r  r   r    r   r   r   r   r  )	r"   r  rX   r  r  r#   r"  r#  rV   r$   r$   r%   "test_line_area_nan_df_stacked_area  s   z5TestDataFramePlots.test_line_area_nan_df_stacked_areasecondary_yc                 C   s~   t tjddg dd}|jdi |}| \}}| }||d  d d ks/J ||d  d d ks=J d S )Nr5   rv   r=   r   r   r   r4   r$   )r   rO   rP   rQ   r    r   r   r   )r"   rX   r#   rV   r   r   r   r$   r$   r%   test_line_lim6  s    z TestDataFramePlots.test_line_limc                 C   s   t tjddg dd}|jddd}t|ddd	 |D ]6}t|d
s(J t|dr/J | \}}| }||d 	 d d ksGJ ||d 	 d d ksUJ qd S )Nr5   r'  r   r   T)r&  r)   r=   rc   r-   Zleft_axright_axr   r4   )
r   rO   rP   rQ   r    r   hasattrr   r   r   )r"   r#   r2   rV   r   r   r   r$   r$   r%   test_line_lim_subplots?  s   z)TestDataFramePlots.test_line_lim_subplotszX2020-12-01 this has been failing periodically on the ymin==0 assertion for a week or so.)strictr<   c           
      C   s   t tjddg dd}| }t|jj|d}| \}}| \}}|	 }	||	d 
 d d ks8J ||	d 
 d d ksFJ |dksLJ t|jj|d}| \}}|dks`J d S )Nr5   r   r   r   r  r   r4   )r   rO   rP   rQ   r   r    r   r   get_ylimr   r   )
r"   r
  r#   Zneg_dfrV   r   r   ZyminZymaxr   r$   r$   r%   test_area_limK  s   z TestDataFramePlots.test_area_limc                 C   s   t tjddddgd}tjjdddd\}\}}|j|d	d
 |j|d	d
 t|	||s4J t|	||s>J d S )Nr5   r*   r5   r?   r@   r   r,   T)shareyr   )rV   r  )
r   rO   rP   rQ   r   r   r)   r    r   Zjoined)r"   r#   figr  r  r$   r$   r%   test_area_sharey_dont_overwrited  s   z2TestDataFramePlots.test_area_sharey_dont_overwritec                 C   sF   t tjdd}|jj|dd}|jD ]
}| dks J qd S )Nr5   rZ   rZ   )r
  	linewidth)	r   rO   rP   rQ   r   r    rz   patchesget_linewidth)r"   r
  r#   rV   rr$   r$   r%   test_bar_linewidtho  s
   
z%TestDataFramePlots.test_bar_linewidthc                 C   s^   t tjdd}|jjddd}t|ddd |D ]}|jD ]
}|	 dks+J q!qd S )Nr5   r3  T)r4  r)   rZ   )rZ   r,   r-   )
r   rO   rP   rQ   r   r    rz   r   r5  r6  )r"   r#   r2   rV   r7  r$   r$   r%   test_bar_linewidth_subplotsw  s   
z.TestDataFramePlots.test_bar_linewidth_subplotsz	meth, dim)rz   	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 )Nr5   r3  ?)r
  width)
r   rO   rP   rQ   r   r   r    r5  r   r~   )r"   methdimr
  r#   r>  rV   r7  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 )Nr5   r3  r=  T)r>  r)   )r   rO   rP   rQ   r   r   r    r5  )r"   r?  r@  r#   r>  r2   rV   r7  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 )Nr5   r3  Fr,   )r
  bottomc                 S      g | ]}|  qS r$   Zget_y.0pr$   r$   r%   
<listcomp>      zBTestDataFramePlots.test_bar_bottom_left_bottom.<locals>.<listcomp>   T)r4   c                 S   rD  r$   rE  rF  r$   r$   r%   rI    rJ  rZ   )r   rO   rP   rQ   r    rz   r5  r"   r#   rV   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 )Nr5   r3  Fr,   r,   r,   r,   r,   )r
  leftc                 S   rD  r$   get_xrF  r$   r$   r%   rI    rJ  z@TestDataFramePlots.test_bar_bottom_left_left.<locals>.<listcomp>r,   rK  Tr   c                 S   rD  r$   rT  rF  r$   r$   r%   rI    rJ  rZ   )r   rO   rP   rQ   r    r;  r   r5  rP  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 )Nr5   r3  Tr4   )r)   rC  c                 S   rD  r$   rE  rF  r$   r$   r%   rI    rJ  zDTestDataFramePlots.test_bar_bottom_left_subplots.<locals>.<listcomp>rZ   rR  )r)   rS  c                 S   rD  r$   rT  rF  r$   r$   r%   rI    rJ  r,   )	r   rO   rP   rQ   r    rz   r5  r;  r   )r"   r#   r2   rV   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 )	NrK      rZ   rK   rX  r   r   r   r   	rK   r   rX  rZ   rK   rX  r,   r5   r=   c                 S   rD  r$   r<  rF  r$   r$   r%   rI    rJ  z3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>r   rO   r   r    rz   r5  r"   r#   rV   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 )NrK   rX  rY  r   rZ  Tr  r[  c                 S   rD  r$   r\  rF  r$   r$   r%   rI    rJ  z;TestDataFramePlots.test_bar_nan_stacked.<locals>.<listcomp>c                 S   rD  r$   rE  rF  r$   r$   r%   rI    rJ  )	r   r   r         $@r   g      4@g      .@ra  g      D@r]  r^  r$   r$   r%   test_bar_nan_stacked  s    z'TestDataFramePlots.test_bar_nan_stackedc                 C   s   t tjdd|td|tdd}|j }|j	 }t
|tg d | dks3J |jd  d	ks>J |jd
  dksIJ |jjdd}t
|tg d | dkscJ |jd  d	ksnJ |jd
  dksyJ d S )Nr5   )rv   rZ   ZABCDEFZabcder   )r   r,   r5   r=   r*   rZ   )g      g      @r   g      пr4   g@Tr  g      @)r   rO   rP   rQ   r   rR   r    rz   rh   get_ticklocsr   r   r   r   r5  rU  )r"   r  r#   rV   Zticksr$   r$   r%   test_bar_categorical  s    



z'TestDataFramePlots.test_bar_categoricalzx, yr,   r5   c                 C   sD   t tjddttjd d g dd}t|j	j
||d d S )Nr5   r   rv   r   r   r>   )r   rO   rP   rQ   r   rR   rS   rT   r   r    r   r"   r?   r@   r#   r$   r$   r%   test_plot_scatter  s   z$TestDataFramePlots.test_plot_scatterc                 C   s   t tjddttjd d g dd}t	d}t
jt|d |jjdd	 W d    n1 s5w   Y  t	d
}t
jt|d |jjdd W d    d S 1 sYw   Y  d S )Nr5   r   rv   r   r   z5scatter() missing 1 required positional argument: 'y'rA   r?   r   z5scatter() missing 1 required positional argument: 'x'r@   r   )r   rO   rP   rQ   r   rR   rS   rT   reescaperC   rD   	TypeErrorr    r   rG   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 )Nr5   r   rv   r   r   r?   r@   r   T)r?   r@   r  r)   r,   r   r-   )
r   rO   rP   rQ   r   rR   rS   rT   r    r   r1   r$   r$   r%   test_plot_scatter_shape  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 )Nr5   rK   r   r   z
2014-01-01h)startr  r  Zdtimez9must be a string or a (real )?number, not 'datetime.time'rA   r   )r  r?   r@   )r   rO   rP   rQ   r   r
   timerC   rD   rj  r    rG   r$   r$   r%   &test_raise_error_on_datetime_time_data  s   "z9TestDataFramePlots.test_raise_error_on_datetime_time_datar   valsr   r,   c                 C   sT   t tdddddd}tjdddt|}t||d}t|j	j
||d	 d S )
Ni  r,      W)rn  r  r  r5   r   rq  r>   )r
   r   rO   rP   rQ   normalr   r   r   r    r   )r"   r?   r@   r   rr  r#   r$   r$   r%   test_scatterplot_datetime_data  s   z1TestDataFramePlots.test_scatterplot_datetime_datar  b_colr5   r=   r*   r   c                 C   s(   t g d|d}t|jj||d d S )NrZ  r  r>   )r   r   r    r   )r"   rx  r?   r@   r#   r$   r$   r%   test_scatterplot_object_data  s   z/TestDataFramePlots.test_scatterplot_object_dataordered
categories)setosa
versicolor	virginica)r~  r  r}  c                 C   s   t ddgddgddgddgddggd	d
gd}tjg d||d|d< |jjdddd}|j\}|j}tg d}|	 }t
|| tg d}	|j}
t
|
|	 |}dd |j D }tdd t||D snJ d S )Ngffffff@g      @g@r   g      @g	@g@g@lengthr>  r   )r}  r}  r  r  r~  )r{  r|  Zspeciesr   r,   r?   r@   r   )      ?g      ?g      @r   c                 S   rD  r$   get_text)rG  ir$   r$   r%   rI  =  rJ  zLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>c                 s   s    | ]	\}}||kV  qd S Nr$   )rG  r  jr$   r$   r%   	<genexpr>>  s    zKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)r   r   Categoricalr    r   collectionscolorbarrO   r   Z	get_ticksr   r   Z_boundariesrV   Zget_ymajorticklabelsallrn   )r"   r{  r|  r#   rV   Zcolorbar_collectionr  Zexpected_ticksZresult_ticksZexpected_boundariesZresult_boundariesZexpected_yticklabelsZresult_yticklabelsr$   r$   r%   %test_scatterplot_color_by_categorical!  s*    
 z8TestDataFramePlots.test_scatterplot_color_by_categorical)r>   )r@   r?   )r@   r@   c                 C   s2   t g dtg dd}t|jj||d d S )Nr   )r   r   r   r   r>   )r   r   r  r   r    r   rf  r$   r$   r%   'test_plot_scatter_with_categorical_data@  s   z:TestDataFramePlots.test_plot_scatter_with_categorical_datazx, y, cr   )r   r,   r5   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 )Nr5   r   r\   r   lowhighsizerv   r   r   r  ZGreysr   )r   rO   rP   rQ   r   rR   rS   rT   r    r   r  cmapr   r  rV   
get_ylabel)r"   r?   r@   r   r#   rV   r$   r$   r%   test_plot_scatter_with_cG  s   z+TestDataFramePlots.test_plot_scatter_with_cc                 C   s   t tjdjddddttjd d g dd}d	}|jj	d
dd|d}|j
d jj|k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 )Nr5   r   r\   r   r  rv   r   r   	cubehelixr?   r@   r   )r?   r@   r   colormapF)r?   r@   r   r  r,   redr  r7  Z
facecolors)r   rO   rP   rQ   r   rR   rS   rT   r    r   r  r  r   r  r   )r"   r#   cmrV   r$   r$   r%   test_plot_scatter_with_c_propsU  s   z1TestDataFramePlots.test_plot_scatter_with_c_propsc                 C   s   t ddgddgd}g d}g d}t||g}|jjdd	|d
}t|jd  | tddg}|jjdd	|dd d S )Nr,   r5   r=   r*   r   )r   r   r   r   )r   r   r   r   r   r   r  r   r   r   Zspring)r?   r@   r   r  )	r   rO   r   r    r   r   r   r  Zget_facecolor)r"   r#   Zred_rgbaZ
green_rgbaZ
rgba_arrayrV   Zfloat_arrayr$   r$   r%   test_plot_scatter_with_c_arrayh  s   z1TestDataFramePlots.test_plot_scatter_with_c_arrayc                 C   sV   t tjddd g dd}|jjdddd	}tj|d j|j	d
 
 d d S )Nr5   rJ   r\   r   r   r   r   r   )r?   r@   r   r   )right)r   rO   rP   rQ   r    r   r   r   valuesr  Z	get_sizesrU   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 )Nr5   rJ   r\   r   r   r   r   r   )r?   r@   r   normr   )r   rO   rP   rQ   r   colorsZLogNormr    r   r  r  )r"   r#   r  rV   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 )Nr5   rJ   r\   r   r   r   r   r   r  r   )r   rO   rP   rQ   r    r   r  r  r   minmaxr   r  Z	Normalize)r"   r#   rV   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 )Nr5   r   rv   onetwothreer   r   )r   rO   rP   rQ   r   rR   rS   rT   r   r    rz   ra   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 )Nr5   )rK      rK   r  r   )r   rO   rP   rQ   r   rR   rS   rT   ro   r   r    rz   r!   r$   r$   r%   test_plot_bar_int_col  s   z(TestDataFramePlots.test_plot_bar_int_colc                 C   sR   t ddgddgd}t|jj}t|dd |jjddd}t|dddd	 d S )
Nr   r,   r  Z   r9   #   rK   rotfontsizer:   
xlabelsize
ylabelsize)r   r   r    rz   r   rU   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   r,   r  )yrot7      r  )r  r  r  )r   r   r    r;  r   rU   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   rG  r   r$   r$   r%   rI    rJ  z3TestDataFramePlots.test_boxplot.<locals>.<listcomp>r,   rw   )_get_numeric_datar~   r   r    boxr   ri   r   r   rh   rc  rO   r   r   r   r"   hist_dfr#   numeric_colslabelsrV   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   r:   r  )r    r  r   r   )r"   r  r#   seriesr2   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)r,   rv   rw   )	positionsc                 S   r  r$   r   r  r$   r$   r%   rI    rJ  zDTestDataFramePlots.test_boxplot_series_positions.<locals>.<listcomp>rw   )rO   r   r    r  r  r~   r   ri   r   r   rh   rc  r   r   )r"   r  r#   r  rV   r  r  r$   r$   r%   test_boxplot_series_positions  s   
z0TestDataFramePlots.test_boxplot_series_positionsc                 C   sj   |}|  j}dd |D }|jjdddd}t|dddd t| | t|jd	t| ks3J d S )
Nc                 S   r  r$   r   r  r$   r$   r%   rI    rJ  z<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>2   r|   F)r  r  vertr   r:   r  r  rw   )	r  r~   r    r  r   r   get_yticklabelsr   r   r  r$   r$   r%   test_boxplot_vertical  s   
z(TestDataFramePlots.test_boxplot_verticalzignore:Attempt:UserWarningc                 C   s   |}|  j}dd |D }t|jjddddd}t|ddd t|d	d
 t||D ]\}}t|	 |g t
|jdks@J q+d S )Nc                 S   r  r$   r   r  r$   r$   r%   rI    rJ  zETestDataFramePlots.test_boxplot_vertical_subplots.<locals>.<listcomp>TF)r(   r)   r  r   r=   )r,   r=   r-   r   r   rw   )r  r~   r   r    r  r   r   rn   r   r  r   r   )r"   r  r#   r  r  r2   rV   r   r$   r$   r%   test_boxplot_vertical_subplots  s    
z1TestDataFramePlots.test_boxplot_vertical_subplotsc                 C   sx   |}|  j}dd |D }tg d}|jj|dd}t| | t	|j
 | t|jdt| ks:J d S )Nc                 S   r  r$   r   r  r$   r$   r%   rI  	  rJ  zFTestDataFramePlots.test_boxplot_vertical_positions.<locals>.<listcomp>)r=   r5   r|   F)r  r  rw   )r  r~   rO   r   r    r  r   r  r   r   r   rc  r   r   )r"   r  r#   r  r  r  rV   r$   r$   r%   test_boxplot_vertical_positions  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 )
Nr5   r   rv   r  r   z2return_type must be {None, 'axes', 'dict', 'both'}rA   Z
not_a_typereturn_type)r   rO   rP   rQ   r   rR   rS   rT   rC   rD   r   r    r  rG   r$   r$   r%    test_boxplot_return_type_invalid  s   "z3TestDataFramePlots.test_boxplot_return_type_invalidr  )dictr2   Zbothc                 C   sJ   t tjddttjd d g dd}|jj	|d}t
|| d S )Nr5   r   rv   r  r   r  )r   rO   rP   rQ   r   rR   rS   rT   r    r  r   )r"   r  r#   r   r$   r$   r%   %test_boxplot_return_type_invalid_type  s   z8TestDataFramePlots.test_boxplot_return_type_invalid_typec                 C   sZ   t d ttjdd}t|jdd}dd |j	D }t
||d t|d	d
 d S )Nscipyr5   r\   r*   kder  c                 S   r  r$   r   r  r$   r$   r%   rI  (  rJ  z2TestDataFramePlots.test_kde_df.<locals>.<listcomp>r  r   r9   )rC   importorskipr   rO   rP   rQ   r   r   r    r~   r   r   )r"   r#   rV   r_  r$   r$   r%   test_kde_df$  s   
zTestDataFramePlots.test_kde_dfc                 C   sD   t d ttjdd}|jdddd}t|dddd d S )	Nr  r5   rK   r*   r  rX  rZ   )r  r  r  r  )	rC   r  r   rO   rP   rQ   r   r    r   rU   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  r5   r  Tr  )r(   r  r)   r*   r+   r-   )
rC   r  r   rO   rP   rQ   r   r   r    r   r1   r$   r$   r%   test_kde_df_subplots2  s   
z'TestDataFramePlots.test_kde_df_subplotsc                 C   s@   t d ttjdd}|jdddd}t|dd d S )	Nr  r5   r  r  T)r  r   r)   r   r   )	rC   r  r   rO   rP   rQ   r   r    r   r1   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  r5   r  r  r   r   r  r  )rC   r  r   rO   rP   rQ   uniformr   locr   r    r!   r$   r$   r%   test_kde_missing_valsC  s   
z(TestDataFramePlots.test_kde_missing_valsc                 C   sp   t tjdd}t|jj}dd |jD }t	||d t|jjdddd}t
|dd	d
 t|dd d S )Nr5   r  c                 S   r  r$   r   r  r$   r$   r%   rI  M  rJ  z3TestDataFramePlots.test_hist_df.<locals>.<listcomp>r  T)r(   r)   r   r*   r+   r-   r   r   )r   rO   rP   rQ   r   r   r    r   r~   r   r   r   )r"   r#   rV   r_  r2   r$   r$   r%   test_hist_dfI  s   zTestDataFramePlots.test_hist_dfc                 C   s6   t tjdd}|jjdd}t|ddd d S )Nr5   rK   r  r  r   r  )r   rO   rP   rQ   r    r   r   )r"   r  r2   r$   r$   r%   test_hist_df_seriesY  s   z&TestDataFramePlots.test_hist_df_seriesc                    sb   ddl m  ttjdd}|jjdddd} fdd	| D }t	
|d
  d d S )Nr   	Rectangler5   rK   Tr*   )
cumulativebinsdensityc                       g | ]	}t | r|qS r$   r   rG  r?   r  r$   r%   rI  d      zMTestDataFramePlots.test_hist_df_series_cumulative_density.<locals>.<listcomp>r4   r   Zmatplotlib.patchesr  r   rO   rP   rQ   r    r   Zget_childrenr   assert_almost_equalr<  r"   r  rV   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  r5   rK   Tr*   )r  r  c                    r  r$   r  r  r  r$   r%   rI  l  r  zETestDataFramePlots.test_hist_df_series_cumulative.<locals>.<listcomp>rL  ra  r  r  r$   r  r%   test_hist_df_series_cumulativeg  s
   z1TestDataFramePlots.test_hist_df_series_cumulativec                 C   s<   t tjdd}|jjdddd}t|dddd d S )	Nr5   r  r  r|   
horizontal)r  r  orientationr   r  )r   rO   rP   rQ   r   r    r   r   r1   r$   r$   r%   test_hist_df_orientationp  s   z+TestDataFramePlots.test_hist_df_orientationweights皙?)r\   )shape)r\   r5   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   r5   r5   r\   r   )r  r  r  c                 S   rD  r$   r\  rG  patchr$   r$   r%   rI    rJ  z8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>c                 S   s   g | ]}d |   qS )r  r\  r  r$   r$   r%   rI    s    )r   r  rn   rO   rP   rQ   r   r   r    r5  r   r  )r"   r  r#   r  r  Zpatch_height_with_weightsZexpected_patch_heightr$   r$   r%   test_hist_weightsv  s   z$TestDataFramePlots.test_hist_weightsc           
      C   s   t dd |D }t dd |D }t dd |D }t dd |D }	|d u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   rD  r$   rE  rF  r$   r$   r%   rI    rJ  z7TestDataFramePlots._check_box_coord.<locals>.<listcomp>c                 S   rD  r$   r\  rF  r$   r$   r%   rI    rJ  c                 S   rD  r$   rT  rF  r$   r$   r%   rI    rJ  c                 S   rD  r$   )r:  rF  r$   r$   r%   rI    rJ  F)Zcheck_dtype)rO   r   r   r   )
r"   r5  
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   rK   	   r|   rw   rv   r|   r|   r|   r|   r|   rv   rw   r|   r
  rK   rZ  r5   r=   rZ   )r=   rK   r
  r|   rw   rv   )r|   r=   r|   r|   r|   r|   )rv   rw   r|   r=   r
  rK   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 )NrZ   )r  )r   r   r   r   r   r	  )r  r  rK   r  r  T)r  r
  )      r   r     )r  r
  r)   r   r,   r5   r  )r  r  )r  r  )r  r
  r  )r  r
  r)   r  )r   r    r   r  r5  rO   r   )r"   r  r#   rV   r2   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 )Nr5   r  Tr  )r   rO   rP   rQ   r   cumsumr   r    r!   r$   r$   r%   test_plot_int_columns#  s   z(TestDataFramePlots.test_plot_int_columnsmarkers^+o)r  r  r  c                 C   s   dd l m} | }|  |d ttjd	d}|j
|d}t| d t| D ]\}}| || ks>J q0d S )Nr   o   r5   rJ   )style)matplotlib.pyplotr   gcfZclfadd_subplotr   rO   rP   rQ   r   r    	enumerater   r   Z
get_marker)r"   r  pltr1  r#   rV   r  rF   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 )Nr,   r5   Tr  r    )r   r    
get_legend	get_textsr  )r"   r   rV   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   )rO   rP   rQ   )rG  kr$   r$   r%   
<dictcomp>N  s     zHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ABCcolorZC1r  r  r   r$   )r   r    r  	get_color)r"   propsr_  r#   Zkwdr   r$   r$   r%   !test_specified_props_kwd_plot_boxC  s   z4TestDataFramePlots.test_specified_props_kwd_plot_boxc                 C   s   t tg dtdddtdddtdddgdgd}| }|jd	  }|d	 |d k s1J |jd	  }t	|tg d
 d S )N)r   r   r     rK   r,   r
  r|   testr   r   )r   r   r   )
r   rO   r   r   r    r   r   r  r   r   )r"   r#   rV   r[   Zydatar$   r$   r%   test_unordered_tsT  s    z$TestDataFramePlots.test_unordered_tsc                 C   s8   t d tdg di}|j|d t|j|  d S Nr  r?   r   r  rC   r  r   r    r   r"   r  r#   r$   r$   r%   test_kind_both_ways`  s   
z&TestDataFramePlots.test_kind_both_waysc                 C   s@   t d tdg di}|jdd|d t|j|dd d S r.  r/  r0  r$   r$   r%   test_kind_both_ways_x_yg  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 plotrA   r  )r   rR   rC   rD   rj  r    r"   r  r#   rH   r$   r$   r%   test_all_invalid_plot_datan  s
   "z-TestDataFramePlots.test_all_invalid_plot_datac                 C   s~   t tjddtd}d|tjd|jd dk< d}tjt	|d |j
|d	 W d    d S 1 s8w   Y  d S )
Nr5   rK   r5   r   r   r   r  r4  rA   r  )r   rO   rP   rQ   r   r   r  rC   rD   rj  r    r5  r$   r$   r%   (test_partially_invalid_plot_data_numericu  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 )Nr5   r7  z*invalid_plot_kind is not a valid plot kindrA   Zinvalid_plot_kindr  )	r   rO   rP   rQ   r   rC   rD   r   r    rG   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 )Nr,   r5   r=   r*   rZ   rv   rZ  x must be a label or positionrA   r?   r@   r   r   rC   rD   r   r    )r"   r?   r@   lblr#   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 )Nr,   r5   r=   r*   rZ   rv   rZ  z.label should be list-like and same length as yrA   r   r   r   Z	bad_labelr;  r<  rG   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)r,   r=   rZ   )r5   r*   rv   ZAABr   r:  rA   r>   )r   rR   rC   rD   r   r    rf  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 )Nr,   r5   r=   r*   rZ   rv   rZ  r   r;  )r?   r@   r   r'  Z
linecolors)r   r   r    r   r   r   r   )r"   r?   r@   r=  r  r#   rV   r$   r$   r%   test_y_listlike  s
   
z"TestDataFramePlots.test_y_listlikezx,y,colnamesc                 C   s0   t ddgddgd}||_t|j||d d S )Nr,   r5   r=   r*   r   r>   )r   r~   r   r    )r"   r?   r@   Zcolnamesr#   r$   r$   r%   test_xy_args_integer  s   z'TestDataFramePlots.test_xy_args_integerc                 C   sr   t tjdjddtjdjddtdtjdjdd d}|jjdddd}t|j	d	ks7J d S )
Nr5   rX  r  rZ  r   r   rK   )r?   r@   Zgridsizer,   
r   rO   rP   rQ   r  r   r    r   r   r  rU   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 )Nr5   rX  r  rZ  r   r   T)r?   r@   r)   r   r,   r   r-   )r   rO   rP   rQ   r  r   r    r   r   figurer2   r   r1   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 )
Nr5   rX  r  rZ  r   r   r   )r?   r@   r   Zreduce_C_functionr,   rH  )r"   rL  r#   rV   r$   r$   r%   test_hexbin_with_c  s   z%TestDataFramePlots.test_hexbin_with_czkwargs, expectedZBuGnr  r  r  ZYlGnc                 C   s|   t tjdjddtjdjddtdtjdjdd d}|jjd	ddd|}|jd j	j
|ks<J d S )
Nr5   rX  r  rZ  r   r   r>   r   r$   )r   rO   rP   rQ   r  r   r    r   r  r  r   )r"   rX   r_  r#   rV   r$   r$   r%   test_hexbin_cmap  s   	z#TestDataFramePlots.test_hexbin_cmapc                 C   sf   t tjddg dg dd}d}tjt|d |j  W d    d S 1 s,w   Y  d S )Nr5   rZ   r=   XYZr   r   r   der}   z/pie requires either y column or 'subplots=True'rA   )	r   rO   rP   rQ   rC   rD   r   r    r   rG   r$   r$   r%   test_pie_df_err  s   "z"TestDataFramePlots.test_pie_df_errrR  c                 C   sF   t tjddg dg dd}t|jj|d}t|j|j	 d S )Nr5   rO  rP  rT  r}   r   )
r   rO   rP   rQ   r   r    r   r   textsrM   )r"   r@   r#   rV   r$   r$   r%   test_pie_df  s   zTestDataFramePlots.test_pie_dfc                 C   s   t tjddg dg dd}t|jjddd}t|t|jks&J |D ]	}t	|j
|j q(t||jD ]\}}| |ksDJ q8d S )Nr5   rO  rP  rT  r}   Tr'   )r   rO   rP   rQ   r   r    r   r   r~   r   rX  rM   rn   r  )r"   r#   r2   rV   ylabelr$   r$   r%   test_pie_df_subplots  s    z'TestDataFramePlots.test_pie_df_subplotsc                 C   s   t tjddg dg dd}g d}g d}t|jjdd||d	}t|t|jks0J |D ]}t	|j
| t|j|d
 q2d S )Nr5   rO  rP  rT  r}   r   )r7  gr   r   mT)r(   r)   r  r  r  )r   rO   rP   rQ   r   r    r   r   r~   r   rX  r   r5  )r"   r#   r  Z
color_argsr2   rV   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 )Nr5   )r*   r*   r*   )Zncols	normalizeT)r)   rV   r  )0123r   c                 S   rD  r$   r  r  r$   r$   r%   rI  A  rJ  z6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>c                 S   rD  r$   r  r  r$   r$   r%   rI  G  rJ  r,   r$   )r   rO   rP   rQ   ro   r   Zilocr   r   r)   r   r   r    r   r  rR   rX  r!  r"  )r"   r#   r  r   r2   rX   Zbase_expectedrV   r_  r   Zresult_labelsexpected_labelsr$   r$   r%   test_pie_df_nan1  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 )
Nrt  r   r4   r>   皙?皙?yerrr5   xerrrh  rO   r   r   onesr   r    r   )r"   rX   rU  r#   d_errdf_errrV   r$   r$   r%   test_errorbar_plotK  s   
z%TestDataFramePlots.test_errorbar_plotc                 C   sr   t dt dddd}t|}t dd t dd d}t|}t|d j||dd	d
}t|ddd d S )Nrt  r   r4   r>   rf  rg  r,   rz   T)rh  rj  r  r   r5   ri  rk  )r"   rU  r#   rm  rn  rV   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 )Nrt  r   r4   r>   r@   rg  rh  r,   ri  )r5   rt  r5   )rO   r   r   r   r    rl  r   r"   rU  r#   rV   r$   r$   r%   test_errorbar_plot_yerr_arrayi  s   z0TestDataFramePlots.test_errorbar_plot_yerr_arrayrh  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 )Nrt  r   r4   r>   rf  rq  r5   ri  r@   r?   )r@   r?   rh  r,   rk  )r"   rh  rU  r#   rV   r$   r$   r%   test_errorbar_plot_column_namet  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 )Nrt  r   r4   r>   r5   r  rq  )
rO   r   r   r   external_error_raisedr   r    rP   rQ   r   r"   rU  r#   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 )Nrt  r   r4   r>   zzzrq  )rO   r   r   r   ru  rj  r    )r"   rU  r#   rn  r$   r$   r%   %test_errorbar_plot_external_typeerror  s   "z8TestDataFramePlots.test_errorbar_plot_external_typeerror)rF   rz   r;  y_errrt  rf  )r   rg  c                 C   s@   t tdtdddd}t|j||d}t|ddd d S )Nrt  r   r4   r>   rh  r  r5   ri  r   rO   r   r   r    r   )r"   r  rz  r#   rV   r$   r$   r%   !test_errorbar_plot_different_yerr  s   
z4TestDataFramePlots.test_errorbar_plot_different_yerrzy_err, x_err)rf  rf  c                 C   sB   t tdtdddd}t|j|||d}t|ddd d S )Nrt  r   r4   r>   )rh  rj  r  r5   ri  r|  )r"   r  rz  Zx_errr#   rV   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 )Nrt  r   r4   r>   rf  rg  T)r(   rh  rj  r)   r  r,   ri  )r   rO   r   rl  r   r    r   )r"   r  r#   rn  r2   r$   r$   r%   /test_errorbar_plot_different_yerr_xerr_subplots  s   "zBTestDataFramePlots.test_errorbar_plot_different_yerr_xerr_subplotszIterator is consumed)r<   rD   c                 C   sN   t dt dddd}t|}t|jtdt|d}t|ddd d S )	Nrt  r   r4   r>   r  rq  r5   ri  )	rO   r   r   r   r    	itertoolsrepeatr   r   rr  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 )Nr5   r7  rq  r   ri  r,   )r@   rh  	r   rO   absrP   rQ   r   r   r    r   r"   r#   rn  rV   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 )Nr5   rJ   r7  r   r   r{  ri  r  )r"   r  r#   rn  rV   r$   r$   r%   'test_errorbar_with_partial_columns_kind  s   z:TestDataFramePlots.test_errorbar_with_partial_columns_kindc                 C   s   t ttjdd}t ttjddddgd}tdddd	}|j|d
d |j|d
d t|j	|dd}t
|ddd d S )Nr5   rJ   r7  r   r   1/1/2000rK   M)r  r  T)ZinplacerF   r{  ri  )r   rO   r  rP   rQ   r   r
   r   r   r    r   )r"   r#   rn  ixrV   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>  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 )Nrt  r   r4   r>   rf  rg  )r?   r   rq  r,   ri  rk  )r"   r  rU  r#   errrV   r$   r$   r%   &test_errorbar_with_partial_columns_box  s
   "z9TestDataFramePlots.test_errorbar_with_partial_columns_boxc           	      C   s"  t dt dddd}t dd t dd d}tddd	d
}t||d}t||d}t|j||d}t|ddd t|j||d}t|ddd t|jd|d |d}t|ddd t|jdd|d}t|ddd t|j||d}t|ddd t|jd||dd}t|ddd d S )Nrt  r   r4   r>   rf  rg  r  z1/1/2001r  )r  rL   r{  r5   ri  r@   r?   )r@   rh  r  r,   T)r(   r  rh  r)   )rO   r   rl  r
   r   r   r    r   )	r"   r  rU  rm  r  ZtdfZtdf_errrV   r2   r$   r$   r%   test_errorbar_timeseries  s.   z+TestDataFramePlots.test_errorbar_timeseriesc                 C   s   t jdd}tt dddj}|j||d d}|jd 	 d j
d d df }|dd d df t d	dg }t|| td
}tjt|d |j|jd W d    d S 1 scw   Y  d S )Nr5   )r=   r5   rZ   r  r=   rZ   )rh  rj  r,   r   r4   zCAsymmetrical error bars should be provided with the shape (3, 2, 5)rA   rq  )rO   rP   rQ   r   r   ZreshapeTr    r  	get_pathsZverticesr   r   r  rh  ri  rC   rD   r   )r"   r  r#   rV   Zyerr_0_0Zexpected_0_0rH   r$   r$   r%   test_errorbar_asymmetrical  s     "z-TestDataFramePlots.test_errorbar_asymmetricalc                 C   s   t tjddttjd d d}t|jdd t|j|d t	
d & | }t|jdks5J t||j t|jdksEJ W d    d S 1 sPw   Y  d S )	Nr5   rJ   rK   rL   T)tabler   r,   )r   rO   rP   rQ   rR   rS   rT   r   r    r   r   r   Ztablesr   r  r  rU   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 )Nr5   )rZ   r5   rZ   r?   r@   r   r>   r   ri  )r?   r@   rj  r,   )r?   r@   rh  )r?   r@   rj  rh  )r   rO   r  rP   rQ   r   ro   r   r    r   r   r  r$   r$   r%   test_errorbar_scatter4  s$   z(TestDataFramePlots.test_errorbar_scatterc                    s   d fdd	}t ttjddg dd}|jjdd	d
ddd t ddd | j	ddd | j	ddd |jjdd	ddd t ddd | j	ddd d S )Nhas_xerrc                    sv   g }t  fddjD }|D ]}t|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  M  s     z`TestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_color.<locals>.<genexpr>c                    s   g | ]	}| j v r|qS r$   )r  r  rV   r$   r%   rI  S  r  zaTestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_color.<locals>.<listcomp>rE  )	next
containersr   extendappendr   rO   r   r   )r  r_  r  r   ZerrselZ	err_linesr  r  r%   _check_errorbar_colorK  s    zMTestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_colorr5   )rK   rZ   rT  r   r   r   rU  rV  r  )r?   r@   rj  rh  r   r,   ri  r  Zhas_yerrrC  )r?   r@   rh  r'  r   )r  )
r   rO   r  rP   rQ   r   r    r   r   r  )r"   r  r#   r$   r  r%   test_errorbar_scatter_colorJ  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 arA   r   r   unknownr   )r?   r@   r  r  )r   rC   rD   r   KeyErrorr    r!   r$   r$   r%   test_scatter_unknown_colormapd  s   "z0TestDataFramePlots.test_scatter_unknown_colormapc                 C   s   dd l m} |d t \}}tg dg dg dg dd}dd }|D ]}|jddd	|d
d q'||  || |d t \}}t	t
 |jd
|d
d}W d    n1 saw   Y  || d S )Nr   r  r,   r5   r=   r*   rZ   rv   r   r   r   rU  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,   Trd   r   r5   Frf   r=   )r   r   r   r  ri   r2   rV   r$   r$   r%   _check|  s   z5TestDataFramePlots.test_sharex_and_ax.<locals>._checkr   r   r_   T)r?   r@   r_   rV   sharex)r)   rV   r  )r  r   close_generate_4_axes_via_gridspecr   r    tight_layoutr  r   r   UserWarningr"   r  gsr2   r#   r  rV   r$   r$   r%   test_sharex_and_axj  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   r_   )r?   r@   r_   rV   r,   Trd   rf   r  r   r   r  r    r  r  r   r   r   r  ri   r"   r  r#   r  r2   rV   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 )	Nr,   Trd   rf   r   r5   r=   F)r   r   r   ri   r  r  r$   r$   r%   r    s   z5TestDataFramePlots.test_sharey_and_ax.<locals>._checkr   r   r_   T)r?   r@   r_   rV   r0  r  )r)   rV   r0  )r  r   r  r   r    r  r  r  r   r   r  r  r$   r$   r%   test_sharey_and_ax  s*   
	


z%TestDataFramePlots.test_sharey_and_axc                 C   r  r  r  r  r$   r$   r%   test_sharey_and_ax_tight  s$   
z+TestDataFramePlots.test_sharey_and_ax_tightc                 C   s   t d i }|dv 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	}n|d
krAt	 
 }nt	 }t|jdd|i|}td t  | du sbJ dS )z3Check that every plot type gets properly collected.r  )r   r   r   r5   rX  r  rZ  r   r   r>   r   r  r  Nr$   )rC   r  r   rO   rP   rQ   r  r   r   r   r  weakrefrefr    r  r  gcZcollect)r"   r  argsr#   r  r$   r$   r%   test_memory_leak  s"   

z#TestDataFramePlots.test_memory_leakc           	         s  ddl m  dd lm ttjddt	dddd}t
tjdd|jtd	d
} fdd} fdd}| | fD ]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   gridspecr5   rK   r  r  rL   r7  ABr   c                     sL     dd}  }|| d dd d f }|| dd d f }||fS )Nr=   r,   r5   GridSpecrJ  r  r  r1  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 )Nr,   r=   r5   r  r  r  r$   r%   _get_horizontal_grid   r  zUTestDataFramePlots.test_df_gridspec_patterns_vert_horiz.<locals>._get_horizontal_gridr  r,   Trd   rf   r  r   r)   rV   r  r0  Fr   r  r  r   r   rO   rP   rQ   r   r
   r   rM   rR   r    r   r   r   r  ri   r  r   r   r  )	r"   tsr#   r  r  r  r  rV   r2   r$   r  r%   $test_df_gridspec_patterns_vert_horiz	  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  r5   rK   r  r  rL   c                     st     dd}  }|| d dd df }|| d ddf }|| dd df }|| d }||||fS )Nr=   r5   r6   r  )r  r1  r  r  Zax3Zax4r  r$   r%   _get_boxed_gridg  s   zKTestDataFramePlots.test_df_gridspec_patterns_boxed.<locals>._get_boxed_gridr  ZABCDr   Tr   r,   rd   rf   r  r  r=   Fr  )r"   r  r  r2   r#   rV   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   ry  r  r   r   r>   )kws)r   r   r   PlotAccessorZ_dataframe_kinds)r"   r$   r$   r%   test_df_grid_settings  s
   
z(TestDataFramePlots.test_df_grid_settingsc                 C   s>   t j \}}|g d ttjddj|d d S )N)rf  rf  rf  rf  r5   rK   r  )	r   r   r)   add_axesr   rO   rP   rQ   r    )r"   r1  rV   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 )
Nr5   r|   r  )r   r   r,   r,   r   r   r   Zhsv)r  rV   r?   r@   r   r  )
r   rO   rP   rQ   r   r   r   rJ  r  r    )r"   r#   r1  rV   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  padr5   rK   r  )r   r   r)   Zmpl_toolkits.axes_grid1r  Zappend_axesr   rO   rP   rQ   r    )r"   r1  rV   r  dividerZcaxr$   r$   r%   #test_plain_axes_make_axes_locatable  s   "z6TestDataFramePlots.test_plain_axes_make_axes_locatablec                 C   sj   t j \}}ddlm} ||dddd}ttjddj	|d	 ttjddj	|d	 d S )
Nr   )
inset_axesz30%r   r=   )r>  r  r  r5   rK   r  )
r   r   r)   Z%mpl_toolkits.axes_grid1.inset_locatorr  r   rO   rP   rQ   r    )r"   r1  rV   r  Ziaxr$   r$   r%   test_plain_axes_make_inset_axes  s
   "z2TestDataFramePlots.test_plain_axes_make_inset_axesmethod)rF   r;  rz   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 )Nr5   )r  r5   r  r   c                 S   s
   | j  S r  )r   r  r#   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    r  )r   rX  r   r   T)r&  r  Z
mark_right)r2   r  r$   )r   rO   rP   rQ   r   rR   Zassignr   r    r   r)  )r"   r  r#   r  r  rX   rV   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)r=   r5   r=   )rX  *      )MondayTuesday	Wednesday)ZsalesZvisitsdayr  r   r4   r=   c                 S   rD  r$   r  rG  tr$   r$   r%   rI    rJ  zATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>r  r   r  r   r  r   )r   r    r   set_xlimri   r  rn   
get_xticks)r"   r#   rV   xticklabelslabels_positionr$   r$   r%   test_x_string_values_ticks  s   z-TestDataFramePlots.test_x_string_values_ticksc                 C   s   t ddgddgg}ttjddddg|d}| }|d	d
 dd |	 D }t
t|| }|d dks?J |d dksGJ |d dksOJ |d dksWJ d S )Nr+  i  r,   r5   r/  r   r   r}   r4   r*   c                 S   rD  r$   r  r  r$   r$   r%   rI    rJ  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   rO   rP   rQ   r   r    r  ri   r  rn   r  )r"   rM   r#   rV   r  r  r$   r$   r%   test_x_multiindex_values_ticks  s   z1TestDataFramePlots.test_x_multiindex_values_ticksc                 C   sL   t ddgddgd}|j|d}| }|d dk sJ |d dks$J d S )Nr5   r*   r,   rL   r  r   )r   r    r   )r"   r  r#   rV   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  )r,   r=   r*   r=   )s1s2s3r&  rL   )r  r  r  F)rV   r
  r&  T)rV   r&  r   r,   r=   c                 S   rD  r$   r  r  r$   r$   r%   rI  	  rJ  zWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)r   r   r)   r   r    rz   r   ri   )r"   r1  rV   Zindexesr#   r  r  r$   r$   r%   0test_xlim_plot_line_correctly_in_mixed_plot_type	  s"   	zCTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_typec                 C   sl   t dgtd}|jsJ | }t| dksJ | d }t| dks*J t| dks4J d S )NZfoo)r~   r   r,   r   )r   intemptyr    r   r   r   r  )r"   r#   rV   rF   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   r4  rA   )r   rC   rD   rj  r    r!   r$   r$   r%   test_plot_no_numeric_data%	  s   
"z,TestDataFramePlots.test_plot_no_numeric_data)rF   rz   r;  r   r  r  r   r   c                 C   s   t d tdtdd tdd tdtdd}t|}|jddg|d}t|dk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  rK   r,   rT  )r   rV  )r   rU  r)   r  r=   r   rV  r   rU  r   r   r  rF   )
rC   r  rO   r   r   r    r   rn   r   r   )r"   r  rU  r#   r2   rd  rV   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 )Nr,   z!An iterable subplots for a SeriesrA   r   r)   )r   ro   rC   rD   NotImplementedErrorr    )r"   ZserrH   r$   r$   r%   (test_group_subplot_series_notimplementedB	  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 )Nr5   rs  re  r   z6An iterable subplots for a DataFrame with a MultiIndexrA   r  )	r   rO   eyer   rp   rC   rD   r  r    rG   r$   r$   r%   ,test_group_subplot_multiindex_notimplementedH	  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 )Nr5   r   r   z4An iterable subplots for a DataFrame with non-uniquerA   r  r  )r   rO   r  rC   rD   r  r    rG   r$   r$   r%   0test_group_subplot_nonunique_cols_notimplementedN	  s
   "zCTestDataFramePlots.test_group_subplot_nonunique_cols_notimplementedzsubplots, expected_msg)){   z(subplots should be a bool or an iterable)r   !each entry should be a list/tuple))r,   r  )r  r  c                 C   s^   t dt dd}t|}tjt|d |j|d W d    d S 1 s(w   Y  d S )NrK   r  rA   r  rO   r   r   rC   rD   r   r    )r"   r)   Zexpected_msgrU  r#   r$   r$   r%   test_group_subplot_bad_inputT	  s
   "z/TestDataFramePlots.test_group_subplot_bad_inputc                 C   s`   t dt dd}t|}tjtdd |jdgd W d    d S 1 s)w   Y  d S )NrK   r  z Column label\(s\) \['bad_name'\]rA   )r   Zbad_namer  r  rv  r$   r$   r%   &test_group_subplot_invalid_column_nameg	  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 )NrK   r   zshould be in only one subplotrA   r  )r   r   r  r  rv  r$   r$   r%   $test_group_subplot_duplicated_columnn	  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 )NrK   r  z1When subplots is an iterable, kind must be one ofrA   r  r  )r"   r  rU  r#   r$   r$   r%   test_group_subplot_invalid_kindu	  s   "z2TestDataFramePlots.test_group_subplot_invalid_kindz index_name, old_label, new_label)Nr   new)oldr	  r  )Nr   r   )Nr   r,   r   )rF   r   rz   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,   r5   rZ   Type AType Br   r  r   )r  rZ  xlabel)r   rM   r   r    
get_xlabelr  str)r"   r  Z
index_nameZ	old_labelZ	new_labelr#   rV   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  r,   r5   rZ   r   )r  r?   r@   r  rZ  )r   r    r  r  )r"   r  r  rZ  ZxcolZycolr#   rV   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   rR  )r   r\   r   )r&  rZ  r]   rY   )	r   r    rJ  r2   r   Zget_visibler  r-  Z
get_yticks)r"   r&  Zax_dfrV   r$   r$   r%   test_secondary_y	  s   


z#TestDataFramePlots.test_secondary_y)NNNN)__name__
__module____qualname__rC   markZslowr&   r3   r7   r;   ZxfailrI   rW   Zparametrizerb   rk   rm   rq   r   r   r   rR   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   rO   r   r  r   r   r   r   r   r   r  r  r  r  r  ro   r
   r  r$  r%  r(  r+  r.  r2  r8  r9  rA  rB  rQ  rV  rW  r`  rb  r   r   ZCategoricalIndexrd  rg  rk  rl  rp  rw  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  filterwarningsr  r  r  r  r  r  r  r  r  r  r  r  r  r  rl  r  r  r  r   r  r  r  r#  r*  r-  r   r  Z_common_kindsr1  r2  r6  r8  r9  r>  r?  r@  rF  rG  rI  rK  ZstdrM  rN  rW  rY  r[  r^  re  ro  rp  rs  rt  rw  ry  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   2   sJ   




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

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





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