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¡d€d�„ ƒZ2d‚dƒ„ Z3ej dyd7dzg¡d„d…„ ƒZ4ej d†e5d‡ƒe6dˆd.d‡d‰�g¡dŠd‹„ ƒZ7ej d†e5d‡ƒe6dˆd.d‡d‰�g¡dŒd�„ ƒZ8ej d†e5d‡ƒe6dˆd.d‡d‰�g¡ej di dŽd�ig¡d�d‘„ ƒƒZ9ej di d’dig¡d“d”„ ƒZ:d•d–„ Z;ejj
d�d—d˜�ej dŽdd�g¡d™dš„ ƒƒZ<d›dœ„ Z=ej dŽdd�g¡d�dž„ ƒZ>dŸd „ Z?ej d¡d¢d£g¡ej dŽdd�g¡d¤d¥„ ƒƒZ@ej d¡d¢d£g¡d¦d§„ ƒZAd¨d©„ ZBdªd«„ ZCd¬d­„ ZDd®d¯„ ZEd°d±„ ZFej d†eGeHjIg¡d²d³„ ƒZJej d´d>dµg¡d¶d·„ ƒZKd¸d¹„ ZLdºd»„ ZMd¼d½„ ZNej d´d¾d¿g¡dÀdÁ„ ƒZOej dÂd�ejPdeQ RdÃ¡dÄ�g¡ej d´dÅd¿g¡ej dÆg dÇ¢g dÈ¢g¡dÉdÊ„ ƒƒƒZSej dËdd�g¡ej dÌg dÍ¢g dÎ¢f¡dÏdÐ„ ƒƒZTej d´g dÑ¢¡dÒdÓ„ ƒZUej dÔdÕdÖg¡d×dØ„ ƒZVdÙdÚ„ ZWdÛdÜ„ ZXdÝdÞ„ ZYdßdà„ ZZdádâ„ Z[ejjej di dãd�idddäœdŽdig¡dådæ„ ƒƒZ\ejjdçdè„ ƒZ]ejjdédê„ ƒZ^ejjdëdì„ ƒZ_dídî„ Z`dïdð„ Zadñdò„ Zbej cdó¡ejj
edeejfƒeddôƒkdõd
�död÷„ ƒƒZgej cdø¡ejj
edeejfƒeddôƒkdùd
�dúdû„ ƒƒZhej cdó¡ejj
edeejfƒeddôƒkdõd
�düdý„ ƒƒZidþdÿ„ 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?„ Z€ej dye�j‚jƒ¡�d@�dA„ ƒZ„ej dyd<d?g¡�dB�dC„ ƒZ…ej dye�j‚jƒ¡�dD�dE„ ƒZ†ej dyee�j‚jƒƒdzg ¡�dF�dG„ ƒZ‡�dH�dI„ Zˆej �dJd,d-gd+�dKfd+gd,d-g�dL�dMgfg¡�dN�dO„ ƒZ‰�dP�dQ„ ZŠej �dR�dSd+gd,fg¡�dT�dU„ ƒZ‹e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_„ ƒZŒej �d`�dYd|d+d,gfd|�dY�dYd|gfg¡�da�db„ ƒZ��dc�dd„ ZŽ�de�df„ Z�ej �dgd#e'j�g¡�dh�di„ ƒZ‘ej �dji �dkf�dl�dmi�dmf�dn�doi�dofg¡�dp�dq„ ƒZ’�dr�ds„ Z“ej d;�dt�d'g¡�du�dv„ ƒZ”�dw�dx„ Z•�dy�dz„ Z–�d{�d|„ Z—ejjej d�d}didd�d~œ�ddig¡�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j�dŒ�d�„ ƒZ�ejjej dyg �dŽ¢¡ej �d�eže' v�d�¡�d‘ d=�d’�e+e' v�d�¡�d‘ e' v�d�¡�d“ d>œƒg¡�d”�d•„ ƒƒƒZŸejjej dyg �dŽ¢¡ej �d–e+e' v�d�¡�d‘ e' v�d�¡�d“ d>œƒe+e' v�d�¡�d‘ e' v�d�¡�d“ d>œƒfeže' v�d�¡�d‘ d=�d’�eže' v�d�¡�d‘ d=�d’�f�d—g¡�d˜�d™„ ƒƒƒZ ejjej dyg �dŽ¢¡�dš�d›„ ƒƒZ¡ejj
�dœe¢�d���dž�dŸ„ ƒZ£�d �d¡„ Z¤ejjej dyd7d8g¡�d¢�d£„ ƒƒZ¥ejj�d¤�d¥„ ƒZ¦ejjej �d¦�d§�d¨„ e+g¡�d©�dª„ ƒƒZ§e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¾„ Z±e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Î„ Zºej �dÏg �dÐ¢¡�dÑ�dÒ„ ƒZ»�dÓ�dÔ„ Z¼�dÕ�dÖ„ Z½ej dyd7dzg¡�d×�dØ„ ƒZ¾�dÙ�dÚ„ Z¿�dÛ�dÜ„ ZÀ�dÝ�dÞ„ ZÁej dy�dß¡�dà�dá„ ƒZÂ�dâ�dã„ ZÃ�dä�då„ ZÄ�dæ�dç„ ZÅej �dèg �dé¢¡�dê�dë„ ƒZÆ�dì�dí„ ZÇ�dî�dï„ ZÈej dy�dð¡�dñ�dò„ ƒZÉej �dó�dô�dõ�dö�d÷d#�død|�d'gfg¡ej dyg �dù¢¡�dú�dû„ ƒƒZÊej �düg �dý¢¡ej dyd<d?g¡�dþ�dÿ„ ƒƒZËej d’�d ¡�d�d„ ƒZÌejj�d�d„ ƒZÍd#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:   úc/var/www/html/CropPilot/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)Ú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)iœÿÿÿéd   )ÚylimÚxlimTÚblah)r>   r?   Útitlec                 C   s>   t tj d¡ d¡ttjd d… ƒd�}t|jfi |¤Ž d S )Nr    r_   r"   r`   ©	r   r0   r1   r2   r4   rb   rc   r   r6   ©r8   rg   r9   r:   r:   r;   Útest_plot_other_args}   s
   þz'TestDataFramePlots.test_plot_other_argsc                 C   sÞ   t tj d¡ d¡ttjd d… ƒd�}|jddd�}t|dd	d
� |d d… D ]#}t	|j
ƒ t	| ¡ dd� t	|jdd�dd� t	|j
 ¡ gdd� q(|d fD ]}t	|j
ƒ t	| ¡ ƒ t	|j
 ¡ gƒ t|dd� qQd S )Nr    r_   r"   r`   Trn   )r?   ro   rQ   ©rQ   rA   rB   F©Úvisible©Úminorr   rM   )r   r0   r1   r2   r4   rb   rc   r6   r   r   ÚxaxisÚget_xticklabelsÚ	get_labelr   )r8   r9   rG   re   r:   r:   r;   Útest_plot_visible_axŽ   s"   þ	

üz'TestDataFramePlots.test_plot_visible_axc                 C   s:   t tj d¡ d¡ttjd d… ƒd�}t|jdd� d S )Nr    r_   r"   r`   rn   ©ro   rp   r7   r:   r:   r;   Útest_plot_title¦   s
   þz"TestDataFramePlots.test_plot_titlec                 C   sV   t tjd d… tdƒƒ}ttj d¡ d¡t 	|¡d�}t
|jdd�}t|dd� d S )	Nr"   r    r_   r`   Tra   r   rM   )Úziprb   rc   Úranger   r0   r1   r2   r   Úfrom_tuplesr   r6   r   )r8   Útuplesr9   re   r:   r:   r;   Útest_plot_multiindex®   s   þz'TestDataFramePlots.test_plot_multiindexc                 C   s^   t jg d¢ddgd�}t jddgddgd�}ttj d	¡ d
dd¡||d�}t|jdd� d S )N))õ   Î±r   )rƒ   rA   )õ   Î²r    )r„   rQ   )õ   Î³r#   )r…   ri   )õ   Î´é   )r†   é   Úi0Úi1)Únames)Úbaru   Î”)rŒ   u   Î•Úc0Úc1r    r   r"   )é   r    r,   u   Î£r|   )	r   r€   r   r0   r1   r2   Úintegersr   r6   )r8   r.   r-   r9   r:   r:   r;   Útest_plot_multiindex_unicode¸   s   
õÿýz/TestDataFramePlots.test_plot_multiindex_unicoderD   N)rI   rA   c                 C   s>   t dtj d¡ d¡iƒ}t|jjd|d�}t|ddd� d S )	NrS   r    r"   T)r?   rD   rA   ©rA   rA   rB   )r   r0   r1   r2   r   r6   rŒ   r   )r8   rD   r9   rG   r:   r:   r;   Útest_plot_single_column_barÒ   s   z.TestDataFramePlots.test_plot_single_column_barc                 C   sb   t dtj d¡ d¡iƒ}tj ¡ \}}|jjd|d�}t	|ƒdks$J ‚|j
}||d u s/J ‚d S )NrS   r    r"   T©r?   re   rA   r   )r   r0   r1   r2   ÚmplÚpyplotr?   r6   rŒ   ÚlenrG   )r8   r9   Ú_re   rG   Úresultr:   r:   r;   Útest_plot_passed_axÛ   s   z&TestDataFramePlots.test_plot_passed_axz
cols, x, yÚABCDEÚAr(   ÚCÚDÚEc              
   C   st   g d¢}t g d¢g d¢tjddtjddgtd�tj|dd	� d
¡tj|ddd� d
¡dœƒ}t|| j	||d� d S )N)Ú2008Ú2009NÚ2011Ú2012©rA   r    rQ   r#   ri   rˆ   ri   rQ   r    r%   z%Y©ÚformatÚi8T)r¦   Úutc©rœ   r(   r�   rž   rŸ   rR   )
r   r0   ÚarrayÚnanr5   ÚpdÚto_datetimeÚviewr   r6   )r8   ÚcolsrS   rT   Údatesr9   r:   r:   r;   Útest_nullable_int_plotæ   s   ûÿ
z)TestDataFramePlots.test_nullable_int_plotr6   )r[   rŒ   ÚhistÚpiec                 C   s.   t jg d¢dd�}t|ƒ}tt|j|ƒƒ d S )N©rA   r    rQ   r#   ÚUInt32r%   )r¬   rª   r	   r   Úgetattrr6   )r8   r6   ÚarrÚsr:   r:   r;   Útest_integer_array_plot_series  s   z1TestDataFramePlots.test_integer_array_plot_serieszplot, kwargsr[   rŒ   r²   r³   rT   ÚscatterrS   rR   Úhexbinc                 C   s<   t jg d¢dd�}t||dœƒ}tt|j|ƒfi |¤Ž d S )Nr´   rµ   r%   rR   )r¬   rª   r   r   r¶   r6   )r8   r6   rg   r·   r9   r:   r:   r;   Útest_integer_array_plot_df
  s   z-TestDataFramePlots.test_integer_array_plot_dfc                 C   s6   t g d¢g d¢dœƒ}| ¡ }t| ¡ ƒdksJ ‚d S )N©rS   rT   Úz©rA   r    rQ   ©rœ   r(   rA   )r   r6   r—   Ú	get_linesrd   r:   r:   r;   Útest_nonnumeric_exclude  s   z*TestDataFramePlots.test_nonnumeric_excludec                 C   s@   t tj d¡ d¡g d¢d�}|jddd�}t|j ¡ dƒ d S )Nr    r_   ©ÚaÚbÚc©r-   rÄ   rÅ   rR   )	r   r0   r1   r2   r3   r6   r   rx   rz   rd   r:   r:   r;   Útest_implicit_label!  s
   ÿz&TestDataFramePlots.test_implicit_labelc                 C   sH   t tj d¡ d¡ddgd�}d|j_|jddd� |jjdks"J ‚d S )	Nr    rJ   rÄ   rÅ   rÇ   ÚNAMEÚLABEL)rT   Úlabel)r   r0   r1   r2   r3   r.   Únamer6   r7   r:   r:   r;   Útest_donot_overwrite_index_name(  s   ÿz2TestDataFramePlots.test_donot_overwrite_index_namec                 C   sà   t tj d¡ d¡ttdƒtd�tdddd�d	�}t	|j
d
dd�| d¡d  
¡ ƒ t	|j
d
d�| d¡ 
¡ ƒ t	|j
d
d�|j 
¡ ƒ t	|j
ddd�| d¡j 
¡ ƒ t	|j
dd�| d¡ 
¡ ƒ t	|j
dd�|j 
¡ ƒ d S )Nr    ©ri   r#   r$   r%   r'   ri   r(   r)   r,   r   rA   rR   rœ   ©rS   ©rT   )r   r0   r1   r2   r3   r   r4   r5   r   r   r6   Ú	set_indexr(   r7   r:   r:   r;   Útest_plot_xy1  s   ý" zTestDataFramePlots.test_plot_xyc                 C   s¦   t tj d¡ d¡ttdƒtd�tdddd�d	�}t 	d
t
|jƒd
 ¡|_t|jd
dd�| d
¡d  ¡ ƒ t|jd
d�| d
¡ ¡ ƒ t|jd
d�|d
  ¡ ƒ d S )Nr    rÎ   r$   r%   r'   ri   r(   r)   r,   rA   rR   rÏ   rÐ   )r   r0   r1   r2   r3   r   r4   r5   r   Úaranger—   r-   r   r6   rÑ   r7   r:   r:   r;   Útest_plot_xy_int_cols?  s   ý"z(TestDataFramePlots.test_plot_xy_int_colsc                 C   sd   t tj d¡ d¡ttdƒtd�tdddd�d	�}|j	d
dddd�}t
|jdƒ t|d
ddd� d S )Nr    rÎ   r$   r%   r'   ri   r(   r)   r,   rA   ÚTest)é   r�   )rS   rT   ro   Úfigsizer’   )g      0@g       @)rC   rD   r×   )r   r0   r1   r2   r3   r   r4   r5   r   r6   r   ro   r   rd   r:   r:   r;   Útest_plot_xy_figsize_and_titleK  s   ýz1TestDataFramePlots.test_plot_xy_figsize_and_titlezinput_log, expected_log)TÚlog)ÚsymÚsymlogc                 C   sª   t dt d¡it d¡d�}|j|d�}t||d� | ¡ |ks"J ‚|j|d�}t||d� | ¡ |ks6J ‚|j|d�}t|||d	� | ¡ |ksKJ ‚| ¡ |ksSJ ‚d S )
NrÄ   rk   r`   ©Úlogy©Úyaxis)Úlogx©rx   ©Úloglog)rx   rß   )r   r0   rÓ   r6   r   Ú
get_yscaleÚ
get_xscale)r8   Ú	input_logÚexpected_logr9   re   r:   r:   r;   Útest_logscalesY  s   z!TestDataFramePlots.test_logscalesÚinput_param)rà   rÝ   rã   c                 C   sÄ   t dt d¡it d¡d�}d|› d�}tjt|d�� |jdi |di¤Ž W d   ƒ n1 s0w   Y  d|› d	�}tjt	|d�� |jj
dd
di|di¤Ž W d   ƒ d S 1 s[w   Y  d S )NrÄ   rk   r`   z	keyword 'z*' should be bool, None, or 'sym', not 'sm'rU   ÚsmzPiePlot ignores the 'z	' keywordr?   Tr:   )r   r0   rÓ   rX   rY   Ú
ValueErrorr6   ÚtmÚassert_produces_warningÚUserWarningr³   )r8   ré   r9   r]   r:   r:   r;   Útest_invalid_logscalel  s   ÿ"ÿz(TestDataFramePlots.test_invalid_logscalec                 C   sl   t tj d¡ d¡ttdƒtd�tdddd�d	�}|j	d
d�}| 
¡ }t|d  ¡ tƒr.J ‚t|dd� d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   T)Úx_compatr   é   rM   )r   r0   r1   r2   r3   r   r4   r5   r   r6   rÁ   Ú
isinstanceÚ	get_xdatar   r   ©r8   r9   re   Úlinesr:   r:   r;   Útest_xcompaty  s   ýzTestDataFramePlots.test_xcompatc                 C   sr   t tj d¡ d¡ttdƒtd�tdddd�d	�}d
t	j
d< | ¡ }| ¡ }t|d  ¡ tƒr1J ‚t|dd� d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   Tzxaxis.compatr   rñ   rM   )r   r0   r1   r2   r3   r   r4   r5   r   r   Úplot_paramsr6   rÁ   rò   ró   r   r   rô   r:   r:   r;   Útest_xcompat_plot_params„  s   ý
z+TestDataFramePlots.test_xcompat_plot_paramsc                 C   s´   t tj d¡ d¡ttdƒtd�tdddd�d	�}d
t	j
d< | ¡ }| ¡ }t|d  ¡ tƒr1J ‚d}tjt|d�� tt|d  ¡ ƒtƒsHJ ‚W d   ƒ d S 1 sSw   Y  d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   Frð   r   zPeriodDtype\[B\] is deprecatedrU   )r   r0   r1   r2   r3   r   r4   r5   r   r   r÷   r6   rÁ   rò   ró   r   rì   rí   ÚFutureWarning©r8   r9   re   rõ   r]   r:   r:   r;   Ú!test_xcompat_plot_params_x_compat�  s   ý
"ÿz4TestDataFramePlots.test_xcompat_plot_params_x_compatc                 C   s˜   t tj d¡ d¡ttdƒtd�tdddd�d	�}t	j
 d
d¡�" | ¡ }| ¡ }t|d  ¡ tƒr4J ‚t|dd� W d   ƒ d S 1 sEw   Y  d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   rð   Tr   rñ   rM   )r   r0   r1   r2   r3   r   r4   r5   r   r   r÷   Úuser6   rÁ   rò   ró   r   r   rô   r:   r:   r;   Ú(test_xcompat_plot_params_context_managerŸ  s   ý"üz;TestDataFramePlots.test_xcompat_plot_params_context_managerc                 C   s´   t tj d¡ d¡ttdƒtd�tdddd�d	�}| 	¡ }| 
¡ }t|d
  ¡ tƒr,J ‚d}tjt|d�� tt|d
  ¡ ƒtƒsCJ ‚W d   ƒ n1 sMw   Y  t|d
d� d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   r   zPeriodDtype\[B\] is deprecated rU   rM   )r   r0   r1   r2   r3   r   r4   r5   r   r6   rÁ   rò   ró   r   rì   rí   rù   r   rú   r:   r:   r;   Útest_xcompat_plot_period¬  s   ýÿz+TestDataFramePlots.test_xcompat_plot_periodc                 C   sP   t tj d¡ d¡ttdddƒtdddƒƒddgd�}| ¡  tjj	d	d
� d S )Nr    )é   r    éÐ  rA   é   rÄ   rÅ   ©r.   r-   r   rÐ   )
r   r0   r1   r2   r
   r   r6   r•   r–   Úaxhliner7   r:   r:   r;   Útest_period_compatº  s   ýz%TestDataFramePlots.test_period_compatÚindex_dtypec                 C   sˆ   t dt d¡itt ddd¡|d�tjd�}| ¡ }| ¡ d }| ¡ }t|d d …df |d d …df tjdd	�}t	j
||jd
d� d S )NrT   rk   éc   rI   r%   )r.   r&   r   rA   )r&   rÌ   F)Úcheck_index_type)r   r0   rÓ   r   Úint64r6   rÁ   Ú
get_xydatar	   rì   Úassert_series_equalrT   )r8   r  r9   re   rõ   Úrsr:   r:   r;   Útest_unsorted_indexÆ  s   ý*z&TestDataFramePlots.test_unsorted_indexr9   ©ç        ç      ð?ç       @ç      @)r  r  r  r  r`   r  r  r  g      @g      @g      @r  c                 C   s\   |  ¡ }| ¡ \}}| ¡ }|t |d  ¡ d ¡ksJ ‚|t |d  ¡ d ¡ks,J ‚d S )Nr   )r6   Úget_xlimrÁ   r0   ÚnanminÚget_dataÚnanmax©r8   r9   re   ÚxminÚxmaxrõ   r:   r:   r;   Útest_unsorted_index_limsÓ  s
   "z+TestDataFramePlots.test_unsorted_index_limsc                 C   sx   t g d¢g d¢dœƒ}|jddd�}| ¡ \}}| ¡ }|t |d  ¡ d ¡ks+J ‚|t |d  ¡ d ¡ks:J ‚d S )Nr  )g     ÀV@g     €V@g     @W@g      W@)rT   r¾   r¾   rT   rR   r   )r   r6   r  rÁ   r0   r  r  r  r  r:   r:   r;   Útest_unsorted_index_lims_x_yä  s   "z/TestDataFramePlots.test_unsorted_index_lims_x_yc                 C   s²   t tj d¡ d¡ttjd d… ƒg d¢d� }d}tjt	|d�� |j
jdd	� W d   ƒ n1 s3w   Y  tjt	|d�� |j
jdd
� W d   ƒ d S 1 sRw   Y  d S )Nr    ©r‡   r#   r‡   ©rS   rT   r¾   Úfourr  z+Log-y scales are not supported in area plotrU   TrÜ   râ   )r   r0   r1   r2   r4   rb   rc   rX   rY   rë   r6   Úarear\   r:   r:   r;   Útest_negative_logì  s   ýÿ"ÿz$TestDataFramePlots.test_negative_logc                 C   sZ   t  t|d  ¡ d ƒ¡}t||ƒD ]\}}|| ¡ d 7 }| ¡ d }t ||¡ qd S )Nr   rA   )r0   Úzerosr—   r  r~   rì   Úassert_numpy_array_equal)r8   Únormal_linesÚstacked_linesÚbaseÚnlÚslÚsyr:   r:   r;   Ú_compare_stacked_y_coodø  s   ýz*TestDataFramePlots._compare_stacked_y_coodÚkindr  ÚmultrA   rI   c                 C   sV   |t tj d¡ d¡g d¢d� }t|j|dd�}t|j|dd�}|  |j|j¡ d S )Nr    r  ©ÚwrS   rT   r¾   rÇ   F©r)  ÚstackedT©r   r0   r1   r2   r   r6   r(  rõ   )r8   r)  r*  r9   Úax1Úax2r:   r:   r;   Útest_line_area_stackedÿ  s   ÿz)TestDataFramePlots.test_line_area_stackedc                 C   s²   t tj d¡ d¡tj d¡ d¡tj d¡ d¡ tj d¡ d¡ dœƒ}t|j|dd�}t|j|dd�}|  |jd d… |jd d… ¡ |  |jdd … |jdd … ¡ d S )Nr    r‡   r+  Fr-  Tr/  )r8   r)  Úsep_dfr0  r1  r:   r:   r;   Útest_line_area_stacked_sep_df
  s   üÿ $z0TestDataFramePlots.test_line_area_stacked_sep_dfc                 C   s€   t tj d¡ d¡ttjd d… ƒg d¢d�}t|j	dd� d}t
jt|d	�� |j	d
d� W d   ƒ d S 1 s9w   Y  d S )Nr    r  r‡   r+  r  F©r.  z„When stacked is True, each column must be either all positive or all negative. Column 'w' contains both positive and negative valuesrU   T)r   r0   r1   r2   r3   r4   rb   rc   r   r6   rX   rY   rë   )r8   Úmixed_dfr]   r:   r:   r;   Útest_line_area_stacked_mixed  s   ýÿ"ÿz/TestDataFramePlots.test_line_area_stacked_mixedc                 C   sD   t tj d¡ d¡g d¢d�}| |jd ¡}t|j|ddd� d S )Nr    r  r+  rÇ   rA   T)r)  rà   r.  )r   r0   r1   r2   rÑ   r.   r   r6   )r8   r)  r9   Údf2r:   r:   r;   Ú#test_line_area_stacked_positive_idx*  s
   ÿz6TestDataFramePlots.test_line_area_stacked_positive_idxÚidxr#   z	2023-01-1)r+   r*   c           	      C   sÜ   ddt jdg}dt jddg}t||dœ|d�}t|jƒ}|jd  ¡ }|jd  ¡ }t jg d¢t jd�}t	 
t  |jd¡|¡ t jg d	¢t jd�}t	 
t  |jd¡|¡ t	 
|jt  g d
¢¡¡ t	 
|jt  g d¢¡¡ d S )NrA   r    rQ   ©rÄ   rÅ   r`   r   r¿   r%   )rQ   r    rA   )FFTF)FTFF)r0   r«   r   r   r6   rõ   Ú	get_ydatarª   Úfloat64rì   r!  ÚdeleteÚdataÚmask)	r8   r:  Úvalues1Úvalues2r9   re   Úmasked1Úmasked2Úexpr:   r:   r;   Útest_line_area_nan_df4  s   
z(TestDataFramePlots.test_line_area_nan_dfc                 C   s˜   ddt jdg}dt jddg}t||dœ|d�}t jg d¢t jd�}t jg d¢t jd�}t|jd	d
�}t |j	d  
¡ |¡ t |j	d  
¡ || ¡ d S )NrA   r    rQ   r;  r`   ©rA   r    r   rQ   r%   ©rQ   r   r    rA   Tr5  r   )r0   r«   r   rª   r=  r   r6   rì   r!  rõ   r<  )r8   r:  rA  rB  r9   Ú	expected1Ú	expected2re   r:   r:   r;   Útest_line_area_nan_df_stackedI  s   z0TestDataFramePlots.test_line_area_nan_df_stackedr.  Fc           	      C   sö   ddt jdg}dt jddg}t||dœ|d�}t jg d¢t jd�}t jg d¢t jd�}t|jjfi |¤Ž}t 	|j
d	  ¡ |¡ |rNt 	|j
d  ¡ |¡ nt 	|j
d  ¡ || ¡ t|jjd
d�}t 	|j
d	  ¡ |¡ t 	|j
d  ¡ |¡ d S )NrA   r    rQ   r;  r`   rG  r%   rH  r   Fr5  )r0   r«   r   rª   r=  r   r6   r  rì   r!  rõ   r<  )	r8   r:  rg   rA  rB  r9   rI  rJ  re   r:   r:   r;   Ú"test_line_area_nan_df_stacked_areaX  s   z5TestDataFramePlots.test_line_area_nan_df_stacked_areaÚsecondary_yc                 C   s~   t tj d¡ d¡g d¢d�}|jdi |¤Ž}| ¡ \}}| ¡ }||d  ¡ d d ks/J ‚||d  ¡ d d ks=J ‚d S )Nr    ©r‡   rQ   r½   rÇ   r   rI   r:   )r   r0   r1   r2   r6   r  rÁ   r  )r8   rg   r9   re   r  r  rõ   r:   r:   r;   Útest_line_limo  s    z TestDataFramePlots.test_line_limc                 C   s°   t tj d¡ d¡g d¢d�}|jddd�}t|ddd	� |D ]6}t|d
ƒs(J ‚t|dƒr/J ‚| ¡ \}}| ¡ }||d  	¡ d d ksGJ ‚||d  	¡ d d ksUJ ‚qd S )Nr    rN  r½   rÇ   T)rM  r?   rQ   rs   rB   Úleft_axÚright_axr   rI   )
r   r0   r1   r2   r6   r   Úhasattrr  rÁ   r  )r8   r9   rG   re   r  r  rõ   r:   r:   r;   Útest_line_lim_subplotsx  s   úz)TestDataFramePlots.test_line_lim_subplotszX2020-12-01 this has been failing periodically on the ymin==0 assertion for a week or so.)ÚstrictrP   c           
      C   sÄ   t tj d¡ d¡g d¢d�}| }t|jj|d�}| ¡ \}}| ¡ \}}| 	¡ }	||	d  
¡ d d ks8J ‚||	d  
¡ d d ksFJ ‚|dksLJ ‚t|jj|d�}| ¡ \}}|dks`J ‚d S )Nr    r  r  rÇ   r5  r   rI   )r   r0   r1   r2   r   r6   r  r  Úget_ylimrÁ   r  )
r8   r.  r9   Úneg_dfre   r  r  ÚyminÚymaxrõ   r:   r:   r;   Útest_area_lim„  s   ÿz TestDataFramePlots.test_area_limc                 C   s€   t tj d¡ d¡ddgd�}tjjdddd�\}\}}|j|d	d
� |j|d	d
� t|ƒ 	||¡s4J ‚t|ƒ 	||¡s>J ‚d S )Nr    ©r#   r    rS   rT   rÇ   rA   T)Úshareyr  )re   r)  )
r   r0   r1   r2   r•   r–   r?   r6   r   Újoined)r8   r9   Úfigr0  r1  r:   r:   r;   Útest_area_sharey_dont_overwrite�  s   z2TestDataFramePlots.test_area_sharey_dont_overwritec                 C   sF   t tj d¡ d¡ƒ}|jj|dd�}|jD ]
}| ¡ dks J ‚qd S )Nr    ©ri   ri   )r.  Ú	linewidth)	r   r0   r1   r2   r3   r6   rŒ   ÚpatchesÚget_linewidth)r8   r.  r9   re   Úrr:   r:   r;   Útest_bar_linewidth¨  s
   
ÿz%TestDataFramePlots.test_bar_linewidthc                 C   s^   t tj d¡ d¡ƒ}|jjddd�}t|ddd� |D ]}|jD ]
}| 	¡ dks+J ‚q!qd S )Nr    r_  T)r`  r?   ri   )ri   rA   rB   )
r   r0   r1   r2   r3   r6   rŒ   r   ra  rb  )r8   r9   rG   re   rc  r:   r:   r;   Útest_bar_linewidth_subplots°  s   
ÿÿz.TestDataFramePlots.test_bar_linewidth_subplotsz	meth, dim)rŒ   Ú	get_width)ÚbarhÚ
get_heightc                 C   sv   t tj d¡ d¡ƒ}d}t|j|ƒ||d�}|jD ]}|s.t||ƒƒ |t|j	ƒ ks-J ‚qt||ƒƒ |ks8J ‚qd S )Nr    r_  çÍÌÌÌÌÌì?)r.  Úwidth)
r   r0   r1   r2   r3   r¶   r6   ra  r—   r-   )r8   ÚmethÚdimr.  r9   rj  re   rc  r:   r:   r;   Útest_bar_barwidth¹  s   
 üz$TestDataFramePlots.test_bar_barwidthc                 C   s\   t tj d¡ d¡ƒ}d}t|j|ƒ|dd�}|D ]}|jD ]}t||ƒƒ |ks*J ‚qqd S )Nr    r_  ri  T)rj  r?   )r   r0   r1   r2   r3   r¶   r6   ra  )r8   rk  rl  r9   rj  rG   re   rc  r:   r:   r;   Útest_barh_barwidth_subplotsÉ  s   
ÿÿz.TestDataFramePlots.test_barh_barwidth_subplotsc                 C   sˆ   t tj d¡ d¡ƒ}|jjddd�}dd„ |jD ƒ}|dgd ks$J ‚|jjd	g d
¢d�}dd„ |jd d… D ƒ}|g d
¢ksBJ ‚d S )Nr    r_  FrA   )r.  Úbottomc                 S   ó   g | ]}|  ¡ ‘qS r:   ©Úget_y©Ú.0Úpr:   r:   r;   Ú
<listcomp>Ù  ó    zBTestDataFramePlots.test_bar_bottom_left_bottom.<locals>.<listcomp>é   T)rI   éþÿÿÿéýÿÿÿéüÿÿÿéûÿÿÿc                 S   rp  r:   rq  rs  r:   r:   r;   rv  Ý  rw  ri   )r   r0   r1   r2   r6   rŒ   ra  ©r8   r9   re   r™   r:   r:   r;   Útest_bar_bottom_left_bottomÖ  s   z.TestDataFramePlots.test_bar_bottom_left_bottomc                 C   s’   t tj d¡ d¡ƒ}|jjdt g d¢¡d�}dd„ |jD ƒ}|dgd	 ks)J ‚|jjd
g d¢d�}dd„ |jd d… D ƒ}|g d¢ksGJ ‚d S )Nr    r_  F©rA   rA   rA   rA   rA   )r.  Úleftc                 S   rp  r:   ©Úget_xrs  r:   r:   r;   rv  ã  rw  z@TestDataFramePlots.test_bar_bottom_left_left.<locals>.<listcomp>rA   rx  Tr¤   c                 S   rp  r:   r�  rs  r:   r:   r;   rv  ç  rw  ri   )r   r0   r1   r2   r6   rg  rª   ra  r}  r:   r:   r;   Útest_bar_bottom_left_leftà  s   z,TestDataFramePlots.test_bar_bottom_left_leftc                 C   sœ   t tj d¡ d¡ƒ}|jjddd�}|D ]}dd„ |jD ƒ}|dgd ks(J ‚q|jjdt g d	¢¡d
�}|D ]}dd„ |jD ƒ}|dgd ksKJ ‚q8d S )Nr    r_  TrI   )r?   ro  c                 S   rp  r:   rq  rs  r:   r:   r;   rv  î  rw  zDTestDataFramePlots.test_bar_bottom_left_subplots.<locals>.<listcomp>ri   r  )r?   r€  c                 S   rp  r:   r�  rs  r:   r:   r;   rv  ó  rw  rA   )	r   r0   r1   r2   r6   rŒ   ra  rg  rª   )r8   r9   rG   re   r™   r:   r:   r;   Útest_bar_bottom_left_subplotsê  s   þz0TestDataFramePlots.test_bar_bottom_left_subplotsc                 C   sR   t dtjdgg d¢g d¢dœƒ}|j ¡ }g d¢}dd„ |jD ƒ}||ks'J ‚d S )	Nr"   é   ©ri   r"   r…  r¿   ©rœ   r(   r�   ©	r"   r   r…  ri   r"   r…  rA   r    rQ   c                 S   rp  r:   ©rh  rs  r:   r:   r;   rv  ú  rw  z3TestDataFramePlots.test_bar_nan.<locals>.<listcomp>©r   r0   r«   r6   rŒ   ra  ©r8   r9   re   Úexpectedr™   r:   r:   r;   Útest_bar_nanö  s
    
zTestDataFramePlots.test_bar_nanc                 C   sz   t dtjdgg d¢g d¢dœƒ}|jjdd�}g d¢}d	d
„ |jD ƒ}||ks)J ‚dd
„ |jD ƒ}g d¢}||ks;J ‚d S )Nr"   r…  r†  r¿   r‡  Tr5  rˆ  c                 S   rp  r:   r‰  rs  r:   r:   r;   rv    rw  z;TestDataFramePlots.test_bar_nan_stacked.<locals>.<listcomp>c                 S   rp  r:   rq  rs  r:   r:   r;   rv    rw  )	r  r  r  ç      $@r  g      4@g      .@rŽ  g      D@rŠ  r‹  r:   r:   r;   Útest_bar_nan_stackedý  s    z'TestDataFramePlots.test_bar_nan_stackedc                 C   sö   t tj d¡ d¡|tdƒƒ|tdƒƒd�}|j ¡ }|j 	¡ }t
 |t g d¢¡¡ | ¡ dks3J ‚|jd  ¡ d	ks>J ‚|jd
  ¡ dksIJ ‚|jjdd�}t
 |t g d¢¡¡ | ¡ dkscJ ‚|jd  ¡ d	ksnJ ‚|jd
  ¡ dksyJ ‚d S )Nr    )r‡   ri   ÚABCDEFÚabcder  )r   rA   r    rQ   r#   ri   )g      à¿g      @r   g      Ð¿rI   gš™™™™™@Tr5  g      @)r   r0   r1   r2   r3   r4   r6   rŒ   rx   Úget_ticklocsrì   r!  rª   r  ra  r‚  )r8   r:  r9   re   Úticksr:   r:   r;   Útest_bar_categorical  s    

ý

z'TestDataFramePlots.test_bar_categoricalzx, y©rA   r    c                 C   sD   t tj d¡ d¡ttjd d… ƒg d¢d�}t|j	j
||d� d S )Nr    r  r‡   r  r  rR   )r   r0   r1   r2   r3   r4   rb   rc   r   r6   rº   ©r8   rS   rT   r9   r:   r:   r;   Útest_plot_scatter  s   ýz$TestDataFramePlots.test_plot_scatterc                 C   sÀ   t tj d¡ d¡ttjd d… ƒg d¢d�}t 	d¡}t
jt|d�� |jjdd	� W d   ƒ n1 s5w   Y  t 	d
¡}t
jt|d�� |jjdd� W d   ƒ d S 1 sYw   Y  d S )Nr    r  r‡   r  r  z5scatter() missing 1 required positional argument: 'y'rU   rS   rÏ   z5scatter() missing 1 required positional argument: 'x'rT   rÐ   )r   r0   r1   r2   r3   r4   rb   rc   ÚreÚescaperX   rY   Ú	TypeErrorr6   rº   r\   r:   r:   r;   Útest_plot_scatter_error)  s   ý
ÿ
"ÿz*TestDataFramePlots.test_plot_scatter_errorc                 C   sR   t tj d¡ d¡ttjd d… ƒg d¢d�}|jdddd	d
�}t	|ddd� d S )Nr    r  r‡   r  r  rS   rT   rº   T)rS   rT   r)  r?   rA   r’   rB   )
r   r0   r1   r2   r3   r4   rb   rc   r6   r   rF   r:   r:   r;   Útest_plot_scatter_shape6  s   ýz*TestDataFramePlots.test_plot_scatter_shapec                 C   sx   t tj d¡ d¡dgd�}tdddd�j|d< d	}tjt	|d
�� |j
dddd� W d   ƒ d S 1 s5w   Y  d S )Nr    r"   rÄ   rÇ   z
2014-01-01Úh)Ústartr+   r*   Údtimez9must be a string or a (real )?number, not 'datetime.time'rU   rº   )r)  rS   rT   )r   r0   r1   r2   r3   r   ÚtimerX   rY   rš  r6   r\   r:   r:   r;   Ú&test_raise_error_on_datetime_time_data@  s   "ÿz9TestDataFramePlots.test_raise_error_on_datetime_time_data©r°   Úvals©r   rA   c                 C   sT   t tdddƒddd�}tj d¡ ddt|ƒ¡}t||dœƒ}t|j	j
||d	� d S )
Niã  rA   é   ÚW)rž  r*   r+   r    r   r¢  rR   )r   r   r0   r1   r2   Únormalr—   r   r   r6   rº   )r8   rS   rT   r°   r£  r9   r:   r:   r;   Útest_scatterplot_datetime_dataI  s   z1TestDataFramePlots.test_scatterplot_datetime_dataÚinfer_stringÚpyarrow)Úmarksr;  Úb_col©r    rQ   r#   rÃ   c                 C   sT   t d|ƒ� tg d¢|dœƒ}t|jj||d� W d   ƒ d S 1 s#w   Y  d S )Nzfuture.infer_stringr‡  r;  rR   )r   r   r   r6   rº   )r8   r¬  rS   rT   r©  r9   r:   r:   r;   Útest_scatterplot_object_dataR  s   "ýz/TestDataFramePlots.test_scatterplot_object_dataÚorderedÚ
categories)ÚsetosaÚ
versicolorÚ	virginica)r²  r³  r±  c                 C   sà   t ddgddgddgddgddggd	d
gd�}tjg d¢||d�|d< |jjdddd�}|j\}|j}t g d¢¡}| 	¡ }t
 ||¡ t g d¢¡}	|j}
t
 |
|	¡ |}dd„ |j ¡ D ƒ}tdd„ t||ƒD ƒƒsnJ ‚d S )Ngffffff@g      @gš™™™™™@r  g      @gš™™™™™	@gš™™™™™@gš™™™™™@Úlengthrj  rÇ   )r±  r±  r³  r³  r²  )r¯  r°  Úspeciesr   rA   ©rS   rT   rÆ   )ç      à?g      ø?g      @r  c                 S   rp  r:   ©Úget_text)rt  Úir:   r:   r;   rv  z  rw  zLTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<listcomp>c                 s   s   � | ]	\}}||kV  qd S ©Nr:   )rt  rº  Újr:   r:   r;   Ú	<genexpr>{  s   € zKTestDataFramePlots.test_scatterplot_color_by_categorical.<locals>.<genexpr>)r   r¬   ÚCategoricalr6   rº   ÚcollectionsÚcolorbarr0   rª   Ú	get_ticksrì   r!  Ú_boundariesre   Úget_ymajorticklabelsÚallr~   )r8   r¯  r°  r9   re   Úcolorbar_collectionrÀ  Úexpected_ticksÚresult_ticksÚexpected_boundariesÚresult_boundariesÚexpected_yticklabelsÚresult_yticklabelsr:   r:   r;   Ú%test_scatterplot_color_by_categorical^  s*    þ
ý z8TestDataFramePlots.test_scatterplot_color_by_categorical)rR   )rT   rS   )rT   rT   c                 C   s2   t g d¢t g d¢¡dœƒ}t|jj||d� d S )Nr´   )rÄ   rÅ   rÄ   rÆ   rR   )r   r¬   r¾  r   r6   rº   r–  r:   r:   r;   Ú'test_plot_scatter_with_categorical_data}  s   z:TestDataFramePlots.test_plot_scatter_with_categorical_datazx, y, cr½   )r   rA   r    c                 C   sz   t tj d¡jdddd�ttjd d… ƒg d¢d�}|jj	|||d	�}|j
d jjd
ks.J ‚|j
d jj ¡ dks;J ‚d S )Nr    r   rk   r  ©ÚlowÚhighÚsizer‡   r  r  r¶  ÚGreysr¾   )r   r0   r1   r2   r�   r4   rb   rc   r6   rº   r¿  ÚcmaprÌ   rÀ  re   Ú
get_ylabel)r8   rS   rT   rÆ   r9   re   r:   r:   r;   Útest_plot_scatter_with_c„  s   ýz+TestDataFramePlots.test_plot_scatter_with_cc                 C   sÄ   t tj d¡jdddd�ttjd d… ƒg d¢d�}d	}|jj	d
dd|d�}|j
d jj|ks1J ‚|jj	d
dddd�}|j
d jd u sEJ ‚|jj	dddd�}|j
d jd u sXJ ‚t|j
dgd� d S )Nr    r   rk   r  rÎ  r‡   r  r  Ú	cubehelixrS   rT   r¾   )rS   rT   rÆ   ÚcolormapF)rS   rT   rÆ   rÀ  rA   Úredr¶  rc  ©Ú
facecolors)r   r0   r1   r2   r�   r4   rb   rc   r6   rº   r¿  rÓ  rÌ   rÀ  r   )r8   r9   Úcmre   r:   r:   r;   Útest_plot_scatter_with_c_props’  s   ýz1TestDataFramePlots.test_plot_scatter_with_c_propsc                 C   s‚   t ddgddgdœƒ}g d¢}g d¢}t ||g¡}|jjdd	|d
�}t |jd  ¡ |¡ t ddg¡}|jjdd	|dd� d S )NrA   r    rQ   r#   rÀ   )r  r  r  r  )r  r  r  r  rœ   r(   r¶  r   r  r  Úspring)rS   rT   rÆ   rÓ  )	r   r0   rª   r6   rº   rì   r!  r¿  Úget_facecolor)r8   r9   Úred_rgbaÚ
green_rgbaÚ
rgba_arrayre   Úfloat_arrayr:   r:   r;   Útest_plot_scatter_with_c_array¥  s   z1TestDataFramePlots.test_plot_scatter_with_c_arrayc                 C   sV   t tj d¡ d¡d g d¢d�}|jjdddd	�}tj|d j|j	d
  
¡ d� d S )Nr    r_   rk   rÃ   rÇ   rÄ   rÅ   rÆ   )rS   rT   r¸   r   )Úright)r   r0   r1   r2   r6   rº   rì   r!  Úvaluesr¿  Ú	get_sizesrd   r:   r:   r;   Útest_plot_scatter_with_s¼  s
   ÿ"z+TestDataFramePlots.test_plot_scatter_with_sc                 C   sX   t tj d¡ d¡d g d¢d�}tj ¡ }|jjddd|d	�}|j	d
 j
|u s*J ‚d S )Nr    r_   rk   rÃ   rÇ   rÄ   rÅ   rÆ   )rS   rT   rÆ   Únormr   )r   r0   r1   r2   r•   ÚcolorsÚLogNormr6   rº   r¿  rè  )r8   r9   rè  re   r:   r:   r;   Útest_plot_scatter_with_normÅ  s   ÿ
z.TestDataFramePlots.test_plot_scatter_with_normc                 C   s„   t tj d¡ d¡d g d¢d�}|jjdddd	�}|jd
 j}|j 	¡ |j 
¡ f}tjj|Ž }|jD ]}||ƒ||ƒks?J ‚q3d S )Nr    r_   rk   rÃ   rÇ   rÄ   rÅ   rÆ   r¶  r   )r   r0   r1   r2   r6   rº   r¿  rè  rÆ   ÚminÚmaxr•   ré  Ú	Normalize)r8   r9   re   Ú	plot_normÚcolor_min_maxÚdefault_normÚvaluer:   r:   r;   Útest_plot_scatter_without_normÎ  s   ÿ
ÿz1TestDataFramePlots.test_plot_scatter_without_normÚlegendr=   c                 C   sF   t tj d¡ d¡ttjd d… ƒg d¢d�}t|j	j
fi |¤Ž d S )Nr    r  r‡   ©ÚoneÚtwoÚthreer  r  )r   r0   r1   r2   r3   r4   rb   rc   r   r6   rŒ   rq   r:   r:   r;   Útest_plot_barÚ  s   ýz TestDataFramePlots.test_plot_barc                 C   s>   t tj d¡ d¡ttjd d… ƒtdƒd�}t	|j
jƒ d S )Nr    )r"   é   r"   rú  r  )r   r0   r1   r2   r3   r4   rb   rc   r   r   r6   rŒ   r7   r:   r:   r;   Útest_plot_bar_int_colí  s   ýz(TestDataFramePlots.test_plot_bar_int_colc                 C   sR   t ddgddgdœƒ}t|jjƒ}t|dd� |jjddd�}t|dddd	� d S )
Nr   rA   r;  éZ   rM   é#   r"   ©ÚrotÚfontsize©rN   Ú
xlabelsizeÚ
ylabelsize)r   r   r6   rŒ   r   rd   r:   r:   r;   Útest_plot_bar_ticksö  ó
   z&TestDataFramePlots.test_plot_bar_ticksc                 C   sR   t ddgddgdœƒ}t|jjƒ}t|dd� |jjddd�}t|dddd� d S )	Nr   rA   r;  )Úyroté7   é   rþ  )r  r  r  )r   r   r6   rg  r   rd   r:   r:   r;   Útest_plot_barh_ticksÿ  r  z'TestDataFramePlots.test_plot_barh_ticksc                 C   sv   |}|  ¡ j}dd„ |D ƒ}t|jjƒ}t| ¡ |ƒ t |j	 
¡ t dt|ƒd ¡¡ t|jƒdt|ƒ ks9J ‚d S )Nc                 S   ó   g | ]}t |ƒ‘qS r:   r   ©rt  rÆ   r:   r:   r;   rv    rw  z3TestDataFramePlots.test_boxplot.<locals>.<listcomp>rA   rˆ   )Ú_get_numeric_datar-   r   r6   Úboxr   ry   rì   r!  rx   r’  r0   rÓ   r—   rõ   )r8   Úhist_dfr9   Únumeric_colsÚlabelsre   r:   r:   r;   Útest_boxplot  s   
ÿzTestDataFramePlots.test_boxplotc                 C   s8   |}|d }|j jdd�}t|ddd� t|j jƒ d S )NÚheighté(   ©rÿ  r   ©rN   r  )r6   r  r   r   )r8   r  r9   ÚseriesrG   r:   r:   r;   Útest_boxplot_series  s
   z&TestDataFramePlots.test_boxplot_seriesc                 C   sv   |}t  g d¢¡}|jj|d�}| ¡ j}dd„ |D ƒ}t| ¡ |ƒ t 	|j
 ¡ |¡ t|jƒdt|ƒ ks9J ‚d S )N)rA   r‡   rˆ   )Ú	positionsc                 S   r
  r:   r   r  r:   r:   r;   rv  !  rw  zDTestDataFramePlots.test_boxplot_series_positions.<locals>.<listcomp>rˆ   )r0   rª   r6   r  r  r-   r   ry   rì   r!  rx   r’  r—   rõ   )r8   r  r9   r  re   r  r  r:   r:   r;   Útest_boxplot_series_positions  s   
z0TestDataFramePlots.test_boxplot_series_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;   rv  .  rw  z<TestDataFramePlots.test_boxplot_vertical.<locals>.<listcomp>r  ÚvertFÚorientationÚ
horizontalé2   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  rg   re   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;   rv  C  rw  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  rg   rG   re   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;   rv  Z  rw  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ß   r’  r—   rõ   )r8   r  r9   r  r  r  rg   re   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   Ú
not_a_type©Úreturn_type)r   r0   r1   r2   r3   r4   rb   rc   rX   rY   rë   r6   r  r\   r:   r:   r;   Ú test_boxplot_return_type_invalidf  s   ý"ÿz3TestDataFramePlots.test_boxplot_return_type_invalidr'  )ÚdictrG   Úbothc                 C   sJ   t tj d¡ d¡ttjd d… ƒg d¢d�}|jj	|d�}t
||ƒ d S )Nr    r  r‡   rõ  r  r&  )r   r0   r1   r2   r3   r4   rb   rc   r6   r  r   )r8   r'  r9   r™   r:   r:   r;   Ú%test_boxplot_return_type_invalid_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    ©rk   r#   Úkde©r)  c                 S   r
  r:   r   r  r:   r:   r;   rv  ~  rw  z2TestDataFramePlots.test_kde_df.<locals>.<listcomp>©r  r   rM   )rX   Úimportorskipr   r0   r1   r2   r3   r   r6   r-   r   r   )r8   r9   re   rŒ  r:   r:   r;   Útest_kde_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…  ri   )r)  rÿ  r   r  )	rX   r1  r   r0   r1   r2   r3   r6   r   rd   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   )
rX   r1  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Þ   )	rX   r1  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/  )rX   r1  r   r0   r1   r2   Úuniformr«   Úlocr   r6   r7   r:   r:   r;   Útest_kde_missing_vals™  s   
z(TestDataFramePlots.test_kde_missing_valsc                 C   sp   t tj d¡ d¡ƒ}t|jjƒ}dd„ |jD ƒ}t	||d� t|jjdddd�}t
|dd	d
� t|dd� d S )Nr    r-  c                 S   r
  r:   r   r  r:   r:   r;   rv  £  rw  z3TestDataFramePlots.test_hist_df.<locals>.<listcomp>r0  T)r>   r?   rÝ   r#   r@   rB   rÙ   rÞ   )r   r0   r1   r2   r3   r   r6   r²   r-   r   r   r   )r8   r9   re   rŒ  rG   r:   r:   r;   Útest_hist_dfŸ  s   üzTestDataFramePlots.test_hist_dfc                 C   s6   t tj d¡ d¡ƒ}|jjdd�}t|ddd� d S )Nr    r"   r  r  r   r  )r	   r0   r1   r2   r6   r²   r   )r8   r  rG   r:   r:   r;   Útest_hist_df_series¯  s   z&TestDataFramePlots.test_hist_df_seriesc                    sb   ddl m‰  ttj d¡ d¡ƒ}|jjdddd�}‡ fdd	„| ¡ D ƒ}t	 
|d
  ¡ d¡ d S )Nr   ©Ú	Rectangler    r"   Tr#   )Ú
cumulativeÚbinsÚdensityc                    ó   g | ]	}t |ˆ ƒr|‘qS r:   ©rò   ©rt  rS   r=  r:   r;   rv  º  ó    zMTestDataFramePlots.test_hist_df_series_cumulative_density.<locals>.<listcomp>rI   r  ©Úmatplotlib.patchesr>  r	   r0   r1   r2   r6   r²   Úget_childrenrì   Úassert_almost_equalrh  ©r8   r  re   Úrectsr:   r=  r;   Ú&test_hist_df_series_cumulative_density´  s
   z9TestDataFramePlots.test_hist_df_series_cumulative_densityc                    s`   ddl m‰  ttj d¡ d¡ƒ}|jjddd�}‡ fdd	„| ¡ D ƒ}t	 
|d
  ¡ d¡ d S )Nr   r=  r    r"   Tr#   )r?  r@  c                    rB  r:   rC  rD  r=  r:   r;   rv  Â  rE  zETestDataFramePlots.test_hist_df_series_cumulative.<locals>.<listcomp>ry  rŽ  rF  rJ  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çš™™™™™¹?)rk   )Úshape)rk   r    c                 C   sr   t ttddgtj d¡ d¡ƒƒƒ}t|jd|d�}t|jdd�}dd	„ |j	D ƒ}d
d	„ |j	D ƒ}t
 ||¡ d S )Nrœ   r(   r    ©r    rk   r²   )r)  rO  r/  c                 S   rp  r:   r‰  ©rt  Úpatchr:   r:   r;   rv  Ù  rw  z8TestDataFramePlots.test_hist_weights.<locals>.<listcomp>c                 S   s   g | ]}d |  ¡  ‘qS )rP  r‰  rS  r:   r:   r;   rv  Ý  ó    )r   r)  r~   r0   r1   r2   r3   r   r6   ra  rì   rI  )r8   rO  r9   r0  r1  Úpatch_height_with_weightsÚexpected_patch_heightr:   r:   r;   Útest_hist_weightsÌ  s   ÿz$TestDataFramePlots.test_hist_weightsc           
      C   s¸   t  dd„ |D ƒ¡}t  dd„ |D ƒ¡}t  dd„ |D ƒ¡}t  dd„ |D ƒ¡}	|d ur4tj||dd� |d ur@tj||dd� |d urLtj||dd� |d urZtj|	|dd� d S d S )Nc                 S   rp  r:   rq  rs  r:   r:   r;   rv  é  rw  z7TestDataFramePlots._check_box_coord.<locals>.<listcomp>c                 S   rp  r:   r‰  rs  r:   r:   r;   rv  ê  rw  c                 S   rp  r:   r�  rs  r:   r:   r;   rv  ë  rw  c                 S   rp  r:   )rf  rs  r:   r:   r;   rv  ì  rw  F)Úcheck_dtype)r0   rª   rì   r!  )
r8   ra  Ú
expected_yÚ
expected_hÚ
expected_xÚ
expected_wÚresult_yÚresult_heightÚresult_xÚresult_widthr:   r:   r;   Ú_check_box_coordá  s   ÿz#TestDataFramePlots._check_box_coordr?  r¤   ©r"   é	   r�   rˆ   r‡   ©r�   r�   r�   r�   r�   ©r‡   rˆ   r�   rd  r"   r‡  r    rQ   ri   )rQ   r"   rd  r�   rˆ   r‡   )r�   rQ   r�   r�   r�   r�   )r‡   rˆ   r�   rQ   rd  r"   c                 C   s–  t |ƒ}|jjdd�}| j|jd d… t g d¢¡t g d¢¡d� | j|jdd… t g d¢¡t g d¢¡d� | j|jdd … t g d¢¡t g d¢¡d� |jjdd	d
�}| j|jd d… t g d¢¡t g d¢¡d� | j|jdd… t g d¢¡t g d¢¡d� | j|jdd … t g d¢¡t g d¢¡d� |jjdd	d	d�}| j|d jt g d¢¡t g d¢¡d� | j|d jt g d¢¡t g d¢¡d� | j|d jt g d¢¡t g d¢¡d� |jjddd�}| j|jd d… t g d¢¡t g d¢¡d� | j|jdd… t g d¢¡t g d¢¡d� | j|jdd … t g d¢¡t g d¢¡d� |jjdd	dd�}| j|jd d… t g d¢¡t g d¢¡d� | j|jdd… t g d¢¡t g d¢¡d� | j|jdd … t g d¢¡t g d¢¡d� |jjdd	d	dd�}| j|d jt g d¢¡t g d¢¡d� | j|d jt g d¢¡t g d¢¡d� | j|d jt g d¢¡t g d¢¡d� d S )Nri   )r@  )r   r   r   r   r   rc  )rZ  r[  r"   re  rf  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²   rb  ra  r0   rª   )r8   r?  r9   re   rG   r:   r:   r;   Útest_hist_df_coordø  sÆ   ýýýýýýýýýýýýýýýÿýý
ýz%TestDataFramePlots.test_hist_df_coordc                 C   s,   t tj d¡ d¡ƒ ¡ }t|jdd� d S )Nr    r-  T©rô  )r   r0   r1   r2   r3   Úcumsumr   r6   r7   r:   r:   r;   Útest_plot_int_columnsy  s   z(TestDataFramePlots.test_plot_int_columnsÚmarkersú^ú+Úo)ro  rp  rq  c                 C   s‚   dd l m} | ¡ }| ¡  | d¡ ttj d¡ 	d¡ƒ}|j
|d�}t| ¡ d t|ƒ… ƒD ]\}}| ¡ || ks>J ‚q0d S )Nr   éo   r    r_   )Ústyle)Úmatplotlib.pyplotr–   ÚgcfÚclfÚadd_subplotr   r0   r1   r2   r3   r6   Ú	enumeraterÁ   r—   Ú
get_marker)r8   rn  Úpltr]  r9   re   r:  r[   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    Trk  r   Ú )r	   r6   Ú
get_legendÚ	get_textsr¹  )r8   r¸   re   r:   r:   r;   Útest_line_label_none‘  s
    z'TestDataFramePlots.test_line_label_nonezprops, expected))ÚboxpropsÚboxes)ÚwhiskerpropsÚwhiskers)ÚcappropsÚcaps)ÚmedianpropsÚmediansc                 C   sP   t dd„ dD ƒƒ}|ddii}|jjd	ddi|¤Ž}|| d  ¡ dks&J ‚d S )
Nc                 S   s    i | ]}|t j d ¡ d¡“qS rR  )r0   r1   r2   )rt  Úkr:   r:   r;   Ú
<dictcomp>¤  s     zHTestDataFramePlots.test_specified_props_kwd_plot_box.<locals>.<dictcomp>ÚABCÚcolorÚC1r'  r)  r   r:   )r   r6   r  Ú	get_color)r8   ÚpropsrŒ  r9   Úkwdr™   r:   r:   r;   Ú!test_specified_props_kwd_plot_box™  s   z4TestDataFramePlots.test_specified_props_kwd_plot_boxc           	      C   sØ   t dddƒt dddƒt dddƒg}g d¢}tt |¡|dgd�}| ¡ }|jd	  ¡ }t |tj|t	d
�¡ |jd	  
¡ }t |t |¡¡ |j ¡ }dd„ |D ƒ}t|ƒjsYJ ‚dd„ |D ƒ}tj|dd�jsjJ ‚d S )NéÜ  r"   rA   rd  r�   )r  r  r  Útestr  r   r%   c                 S   s   g | ]}|  ¡ d  ‘qS )r   )Úget_positionrD  r:   r:   r;   rv  ¼  rU  z8TestDataFramePlots.test_unordered_ts.<locals>.<listcomp>c                 S   rp  r:   r¸  rD  r:   r:   r;   rv  ¾  rw  z%Y-%m-%dr¥   )r   r   r0   rª   r6   rõ   ró   rì   r!  r5   r<  rx   Úget_ticklabelsr   Úis_monotonic_increasingr¬   r­   )	r8   r.   rå  r9   re   rj   ÚydataÚxlocsÚxlabelsr:   r:   r;   Útest_unordered_tsª  s"   "ý
z$TestDataFramePlots.test_unordered_tsc                 C   s8   t  d¡ tdg d¢iƒ}|j|d� t|j|ƒƒ  d S ©Nr,  rS   r¿   r/  ©rX   r1  r   r6   r¶   ©r8   r)  r9   r:   r:   r;   Útest_kind_both_waysÁ  s   
z&TestDataFramePlots.test_kind_both_waysc                 C   s@   t  d¡ tdg d¢iƒ}|jdd|d� t|j|ƒddƒ d S rš  r›  rœ  r:   r:   r;   Útest_kind_both_ways_x_yÈ  s   
z*TestDataFramePlots.test_kind_both_ways_x_yc                 C   sP   t tdƒƒ}d}tjt|d�� |j|d� W d   ƒ d S 1 s!w   Y  d S )NÚabcdúno numeric data to plotrU   r/  )r   r4   rX   rY   rš  r6   ©r8   r)  r9   r]   r:   r:   r;   Útest_all_invalid_plot_dataÏ  s
   "ÿz-TestDataFramePlots.test_all_invalid_plot_datac                 C   s~   t tj d¡ d¡td�}d|tj d¡ |jd ¡dk< d}tjt	|d�� |j
|d	� W d   ƒ d S 1 s8w   Y  d S )
Nr    ©r"   r    r%   rÄ   r   r·  r   rU   r/  )r   r0   r1   r2   r3   r5   rQ  rX   rY   rš  r6   r¡  r:   r:   r;   Ú(test_partially_invalid_plot_data_numericÖ  s   þ "ÿz;TestDataFramePlots.test_partially_invalid_plot_data_numericc                 C   sZ   t tj d¡ d¡ƒ}d}tjt|d�� |jdd� W d   ƒ d S 1 s&w   Y  d S )Nr    r£  z*invalid_plot_kind is not a valid plot kindrU   Úinvalid_plot_kindr/  )	r   r0   r1   r2   r3   rX   rY   rë   r6   r\   r:   r:   r;   Útest_invalid_kindã  s
   "ÿz$TestDataFramePlots.test_invalid_kindzx,y,lblrÄ   rÅ   rÆ   c                 C   s`   t ddgddgddgdœƒ}tjtdd	�� |j|||d
� W d   ƒ d S 1 s)w   Y  d S )NrA   r    rQ   r#   ri   r‡   r‡  úx must be a label or positionrU   ©rS   rT   rË   ©r   rX   rY   rë   r6   )r8   rS   rT   Úlblr9   r:   r:   r;   Útest_invalid_xy_argsé  s   	"ÿz'TestDataFramePlots.test_invalid_xy_argsc                 C   sh   t ddgddgddgdœƒ}d}tjt|d	�� |jd
ddgdd� W d   ƒ d S 1 s-w   Y  d S )NrA   r    rQ   r#   ri   r‡   r‡  z.label should be list-like and same length as yrU   rœ   r(   r�   Ú	bad_labelr¨  r©  r\   r:   r:   r;   Útest_bad_labelö  s
   "ÿz!TestDataFramePlots.test_bad_labelzx,yrÀ   c                 C   s^   t g d¢g d¢gtdƒd�}tjtdd�� |j||d� W d   ƒ d S 1 s(w   Y  d S )N)rA   rQ   ri   )r    r#   r‡   ÚAABrÇ   r§  rU   rR   )r   r4   rX   rY   rë   r6   r–  r:   r:   r;   Útest_invalid_xy_args_dup_colsü  s   "ÿz0TestDataFramePlots.test_invalid_xy_args_dup_colszx,y,lbl,colorsrØ  Úbluer   ÚbokehÚcythonÚgreenÚyellowc                 C   sj   t ddgddgddgdœƒ}t|jd||d	� |j||||d
�}t|jƒt|ƒks+J ‚t| ¡ |d� d S )NrA   r    rQ   r#   ri   r‡   r‡  rœ   r¨  )rS   rT   rË   r‹  ©Ú
linecolors)r   r   r6   r—   rõ   r   rÁ   )r8   rS   rT   rª  ré  r9   re   r:   r:   r;   Útest_y_listlike  s
   
z"TestDataFramePlots.test_y_listlikezx,y,colnamesc                 C   s0   t ddgddgdœƒ}||_t|j||d� d S )NrA   r    rQ   r#   rÀ   rR   )r   r-   r   r6   )r8   rS   rT   Úcolnamesr9   r:   r:   r;   Útest_xy_args_integer  s   z'TestDataFramePlots.test_xy_args_integerc                 C   sr   t tj d¡jdd�tj d¡jdd�t d¡tj d¡jdd� dœƒ}|jjdddd�}t|j	ƒd	ks7J ‚d S )
Nr    r…  r6  r‡  rœ   r(   r"   )rS   rT   ÚgridsizerA   ©
r   r0   r1   r2   r8  rÓ   r6   r»   r—   r¿  rd   r:   r:   r;   Útest_hexbin_basic  s   ýÿz$TestDataFramePlots.test_hexbin_basicc                 C   s†   t tj d¡jdd�tj d¡jdd�t d¡tj d¡jdd� dœƒ}|jjdddd�}t|d	 j	j
ƒdks:J ‚t|d
dd� d S )Nr    r…  r6  r‡  rœ   r(   T)rS   rT   r?   r   rA   r’   rB   )r   r0   r1   r2   r8  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…  r6  r‡  rœ   r(   r�   )rS   rT   r�   Úreduce_C_functionrA   r»  )r8   r¿  r9   re   r:   r:   r;   Útest_hexbin_with_c8  s   ýÿz%TestDataFramePlots.test_hexbin_with_czkwargs, expectedÚBuGnr×  rÖ  rÓ  ÚYlGnc                 C   s|   t tj d¡jdd�tj d¡jdd�t d¡tj d¡jdd� dœƒ}|jjd	dddœ|¤Ž}|jd j	j
|ks<J ‚d S )
Nr    r…  r6  r‡  rœ   r(   rR   r   r:   )r   r0   r1   r2   r8  rÓ   r6   r»   r¿  rÓ  rÌ   )r8   rg   rŒ  r9   re   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    ©ri   rQ   ©ÚXÚYÚZ©rÄ   rÅ   rÆ   ÚdÚer,   z/pie requires either y column or 'subplots=True'rU   )	r   r0   r1   r2   rX   rY   rë   r6   r³   r\   r:   r:   r;   Útest_pie_df_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    rÅ  rÆ  rÊ  r,   rÐ   )
r   r0   r1   r2   r   r6   r³   r   Útextsr.   )r8   rT   r9   re   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    rÅ  rÆ  rÊ  r,   Tr=   )r   r0   r1   r2   r   r6   r³   r—   r-   r   rÎ  r.   r~   rÔ  )r8   r9   rG   re   Úylabelr:   r:   r;   Útest_pie_df_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    rÅ  rÆ  rÊ  r,   r©   )rc  ÚgrÅ   rÆ   ÚmT)r>   r?   r  ré  rÙ  )r   r0   r1   r2   r   r6   r³   r—   r-   r   rÎ  r   ra  )r8   r9   r  Ú
color_argsrG   re   r:   r:   r;   Útest_pie_df_labels_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sŠJ ‚qQd S )Nr    )r#   r#   r#   )ÚncolsÚ	normalizeT)r?   re   rô  )Ú0Ú1Ú2Ú3r|  c                 S   rp  r:   r¸  rD  r:   r:   r;   rv  ¢  rw  z6TestDataFramePlots.test_pie_df_nan.<locals>.<listcomp>c                 S   rp  r:   r¸  rD  r:   r:   r;   rv  ¨  rw  rA   r:   )r   r0   r1   r2   r   r«   Úilocr•   r–   r?   rì   rí   r6   r³   rx  r4   rÎ  r}  r~  )r8   r9   rº  r˜   rG   rg   Úbase_expectedre   rŒ  r™   Ú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    ©Úxerrrã  ©r0   rÓ   r   Úonesr   r6   r   )r8   rg   rË  r9   Úd_errÚdf_errre   r:   r:   r;   Útest_errorbar_plot¬  s   
z%TestDataFramePlots.test_errorbar_plotc                 C   sr   t  d¡t  ddd¡dœ}t|ƒ}t  d¡d t  d¡d dœ}t|ƒ}t|d j||dd	d
�}t|ddd� d S )Nr¥  r   rI   rR   rá  râ  rA   rŒ   T)rã  rå  r)  rÙ   r    rä  ræ  )r8   rË  r9   rè  ré  re   r:   r:   r;   Útest_errorbar_plot_bar¿  s   ÿz)TestDataFramePlots.test_errorbar_plot_barc                 C   sv   t  d¡t  ddd¡dœ}t|ƒ}t|d jt  d¡d d�}t|ddd	� t|jt  d
¡d d�}t|ddd	� d S )Nr¥  r   rI   rR   rT   râ  ©rã  rA   rä  )r    r¥  r    )r0   rÓ   r   r   r6   rç  r   ©r8   rË  r9   re   r:   r:   r;   Útest_errorbar_plot_yerr_arrayÊ  s   z0TestDataFramePlots.test_errorbar_plot_yerr_arrayrã  u   èª¤å·®c                 C   st   t  d¡t  ddd¡dœ}t|ƒ}t  d¡d ||< t|j|d�}t|ddd� t|jd	d
|d�}t|ddd� d S )Nr¥  r   rI   rR   rá  rì  r    rä  rT   rS   )rT   rS   rã  rA   ræ  )r8   rã  rË  r9   re   r:   r:   r;   Útest_errorbar_plot_column_nameÕ  s   z1TestDataFramePlots.test_errorbar_plot_column_namec                 C   sl   t  d¡t  ddd¡dœ}t|ƒ}t t¡� |jt j d¡ 	d¡d� W d   ƒ d S 1 s/w   Y  d S )Nr¥  r   rI   rR   r    r  rì  )
r0   rÓ   r   rì   Úexternal_error_raisedrë   r6   r1   r2   r3   ©r8   rË  r9   r:   r:   r;   Ú&test_errorbar_plot_external_valueerrorâ  s
   "ÿz9TestDataFramePlots.test_errorbar_plot_external_valueerrorc                 C   sx   t  d¡t  ddd¡dœ}t|ƒ}tdgd dgd dœƒ}t t¡� |j|d� W d   ƒ d S 1 s5w   Y  d S )Nr¥  r   rI   rR   Úzzzrì  )r0   rÓ   r   rì   rð  rš  r6   )r8   rË  r9   ré  r:   r:   r;   Ú%test_errorbar_plot_external_typeerroré  s   "ÿz8TestDataFramePlots.test_errorbar_plot_external_typeerror)r[   rŒ   rg  Úy_errr¥  rá  )rÌ   râ  c                 C   s@   t t d¡t ddd¡dœƒ}t|j||d�}t|ddd� d S )Nr¥  r   rI   rR   ©rã  r)  r    rä  ©r   r0   rÓ   r   r6   r   )r8   r)  rõ  r9   re   r:   r:   r;   Ú!test_errorbar_plot_different_yerrñ  s   
z4TestDataFramePlots.test_errorbar_plot_different_yerrzy_err, x_err)rá  rá  c                 C   sB   t t d¡t ddd¡dœƒ}t|j|||d�}t|ddd� d S )Nr¥  r   rI   rR   )rã  rå  r)  r    rä  r÷  )r8   r)  rõ  Úx_errr9   re   r:   r:   r;   Ú&test_errorbar_plot_different_yerr_xerr   s   z9TestDataFramePlots.test_errorbar_plot_different_yerr_xerrc                 C   sh   t t d¡t ddd¡dœƒ}t t d¡d t d¡d dœƒ}t|jd||d|d�}t|d	d	d
� d S )Nr¥  r   rI   rR   rá  râ  T)r>   rã  rå  r?   r)  rA   rä  )r   r0   rÓ   rç  r   r6   r   )r8   r)  r9   ré  rG   r:   r:   r;   Ú/test_errorbar_plot_different_yerr_xerr_subplots  s   "úzBTestDataFramePlots.test_errorbar_plot_different_yerr_xerr_subplotszIterator is consumed)rP   rY   c                 C   sN   t  d¡t  ddd¡dœ}t|ƒ}t|jt dt|ƒ¡d�}t|ddd� d S )	Nr¥  r   rI   rR   rP  rì  r    rä  )	r0   rÓ   r   r   r6   Ú	itertoolsÚrepeatr—   r   rí  r:   r:   r;   Útest_errorbar_plot_iterator!  s   z.TestDataFramePlots.test_errorbar_plot_iteratorc                 C   sv   t t tj d¡ d¡¡ƒ}t t tj d¡ d¡¡ƒ}t|j|d�}t|ddd� t|jddd�}t|ddd� d S )Nr    r£  rì  r   rä  rA   )rT   rã  ©	r   r0   Úabsr1   r2   r3   r   r6   r   ©r8   r9   ré  re   r:   r:   r;   Ú'test_errorbar_with_integer_column_names*  s   z:TestDataFramePlots.test_errorbar_with_integer_column_namesc                 C   sb   t t tj d¡ d¡¡ƒ}t t tj d¡ d¡¡ddgd�}t|j||d�}t|ddd� d S )Nr    r_   r£  r   rÇ   rö  rä  rÿ  )r8   r)  r9   ré  re   r:   r:   r;   Ú'test_errorbar_with_partial_columns_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_   r£  r   rÇ   ú1/1/2000r"   ÚMEr)   T)Úinplacer[   rö  rä  )r   r0   r   r1   r2   r3   r   rÑ   r   r6   r   )r8   r9   ré  Úixre   r:   r:   r;   Ú&test_errorbar_with_partial_columns_dti=  s   ÿz9TestDataFramePlots.test_errorbar_with_partial_columns_dtiÚerr_boxc                 C   s   | S r»  r:   rÏ   r:   r:   r;   Ú<lambda>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   rá  râ  )rS   r¾   rì  rA   rä  ræ  )r8   r	  rË  r9   Úerrre   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   rá  râ  r  z1/1/2001r  )r+   r`   rö  r    rä  rT   rS   )rT   rã  r)  rA   T)r>   r)  rã  r?   )r0   rÓ   rç  r   r   r   r6   r   )	r8   r)  rË  rè  r  ÚtdfÚtdf_errre   rG   r:   r:   r;   Útest_errorbar_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    ri   rú  rQ   ri   )rã  rå  rA   r   rI   zCAsymmetrical error bars should be provided with the shape (3, 2, 5)rU   rì  )r0   r1   r2   r   rÓ   ÚreshapeÚTr6   r¿  Ú	get_pathsÚverticesrª   rì   rI  r˜  r™  rX   rY   rë   )r8   r  r9   re   Úyerr_0_0Ú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   rb   rc   r   r6   rì   rí   r—   Útablesr   r  r  rd   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    )ri   r    ri   rS   rT   r  rR   r   rä  )rS   rT   rå  rA   )rS   rT   rã  )rS   rT   rå  rã  )r   r0   r   r1   r2   r3   r   r   r6   rº   r   r  r:   r:   r;   Útest_errorbar_scatter•  s$   ýýz(TestDataFramePlots.test_errorbar_scatterc                    s¬   d‡ fdd„	}t t tj d¡ d¡¡g d¢d�}|jjdd	d
ddd�‰ tˆ ddd� |ˆ j	ddd� |ˆ j	ddd� |jjdd	ddd�‰ tˆ ddd� |ˆ j	ddd� d S )NÚhas_xerrc                    sv   g }t ‡ fdd„ˆjD ƒƒ}|D ]}t|ƒr| |¡ q| |¡ q‡fdd„|D ƒ}t|t |gt|ƒ ¡d� d S )Nc                 3   s"   � | ]}t |ˆ d ƒr|jV  qdS )FN)r¶   rõ   r  ©Úhas_errr:   r;   r½  ®  s   €  z`TestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_color.<locals>.<genexpr>c                    s   g | ]	}|ˆ j v r|‘qS r:   )r¿  rD  ©re   r:   r;   rv  ´  rE  zaTestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_color.<locals>.<listcomp>rµ  )	ÚnextÚ
containersr   ÚextendÚappendr   r0   rª   r—   )r   rŒ  r  rõ   ÚerrsÚelÚ	err_linesr  r  r;   Ú_check_errorbar_color¬  s    zMTestDataFramePlots.test_errorbar_scatter_color.<locals>._check_errorbar_colorr    )r"   ri   rÊ  rÇ   rÄ   rÅ   rË  rÌ  rØ  )rS   rT   rå  rã  rÆ   rA   rä  r  Úhas_yerrr³  )rS   rT   rã  r‹  r   )r  )
r   r0   r   r1   r2   r3   r6   rº   r   r   )r8   r&  r9   r:   r  r;   Útest_errorbar_scatter_color«  s   þz.TestDataFramePlots.test_errorbar_scatter_colorc                 C   s\   t g d¢ddœƒ}tjttfdd�� |jdddd	d
� W d   ƒ d S 1 s'w   Y  d S )Nr¿   r#   r;  z'unknown' is not arU   rÄ   rÅ   Úunknownrº   )rS   rT   r×  r)  )r   rX   rY   rë   ÚKeyErrorr6   r7   r:   r:   r;   Útest_scatter_unknown_colormapÅ  s   "ÿz0TestDataFramePlots.test_scatter_unknown_colormapc                 C   sØ   dd l m} | d¡ tƒ \}}tg d¢g d¢g d¢g d¢dœƒ}dd„ }|D ]}|jddd	|d
d� q'| | ¡ ¡ ||ƒ | d¡ tƒ \}}t 	t
¡� |jd
|d
d�}W d   ƒ n1 saw   Y  ||ƒ d S )Nr   rÄ  ©rA   r    rQ   r#   ri   r‡   ©rÄ   rÅ   rÆ   rË  c                 S   s¤   | D ]}t |jƒdksJ ‚t| ¡ dd� q| d | d fD ]}t| ¡ dd� t|jdd�dd� q| d | d fD ]}t| ¡ dd� t|jdd�dd� q;d S )	NrA   Trt   r   r    Frv   rQ   )r—   rõ   r   r!  ry   ©rG   re   r:   r:   r;   Ú_checkÝ  s   þz5TestDataFramePlots.test_sharex_and_ax.<locals>._checkrÄ   rÅ   ro   T)rS   rT   ro   re   Úsharex)r?   re   r0  )rt  r–   ÚcloseÚ_generate_4_axes_via_gridspecr   r6   Útight_layoutru  rì   rí   rî   ©r8   rz  ÚgsrG   r9   r/  re   r:   r:   r;   Útest_sharex_and_axË  s*   

üÿ	

ÿz%TestDataFramePlots.test_sharex_and_axc                 C   ó¶   dd l m} tg d¢g d¢g d¢g d¢dœƒ}tƒ \}}|D ]}|jddd|d� q| | ¡ ¡ |D ]%}t|jƒdks>J ‚t	| 
¡ d	d
� t	| ¡ d	d
� t	|jd	d�d	d
� q3d S ©Nr   r,  r-  rÄ   rÅ   ro   )rS   rT   ro   re   rA   Trt   rv   ©rt  r–   r   r2  r6   r3  ru  r—   rõ   r   r!  ry   ©r8   rz  r9   r5  rG   re   r:   r:   r;   Útest_sharex_false_and_axó  s$   üÿ
üz+TestDataFramePlots.test_sharex_false_and_axc                 C   sÜ   dd l m} tƒ \}}tg d¢g d¢g d¢g d¢dœƒ}dd„ }|D ]}|jddd|d	d
� q"| | ¡ ¡ ||ƒ | d¡ tƒ \}}t 	t
¡� |jd	|d	d�}W d   ƒ n1 s\w   Y  | | ¡ ¡ ||ƒ d S )Nr   r,  r-  c                 S   s�   | D ]}t |jƒdksJ ‚t| ¡ dd� t|jdd�dd� q| d | d fD ]
}t| ¡ dd� q(| d | d fD ]
}t| ¡ dd� q;d S )	NrA   Trt   rv   r   r    rQ   F)r—   rõ   r   ry   r!  r.  r:   r:   r;   r/    s   ÿz5TestDataFramePlots.test_sharey_and_ax.<locals>._checkrÄ   rÅ   ro   T)rS   rT   ro   re   r[  rÄ  )r?   re   r[  )rt  r–   r2  r   r6   r3  ru  r1  rì   rí   rî   r4  r:   r:   r;   Útest_sharey_and_ax  s*   
üÿ	


ÿz%TestDataFramePlots.test_sharey_and_axc                 C   r7  r8  r9  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 sŒJ ‚dS )z3Check that every plot type gets properly collected.r,  )r»   rº   r³   r    r…  r6  r‡  rœ   r(   rR   r  r!   r$   r%   r'   r"   r)   r,   r)  rÄ  Nr:   )rX   r1  r   r0   r1   r2   r8  rÓ   r3   r   r4   r5   r   r   ÚweakrefÚrefr6   rz  r1  Ú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s§J ‚t|jƒdks°J ‚|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 sõw   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�s…J ‚t|d jƒdk�s‘J ‚t|d  ¡ dd� t|d  ¡ dd� ||fD ]}t| ¡ dd� t|jdd�dd� �q©ˆ d¡ d S )Nr   ©Úgridspecr    r"   r  ©r*   r`   r£  ÚABr  c                     sL   ˆ   dd¡} ˆ ¡ }| | d d…d d …f ¡}| | dd d …f ¡}||fS )NrQ   rA   r    ©ÚGridSpecr½  rw  ©r5  r]  r0  r1  ©rE  rz  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    rH  rJ  rK  r:   r;   Ú_get_horizontal_grid‰  rM  zUTestDataFramePlots.test_df_gridspec_patterns_vert_horiz.<locals>._get_horizontal_gridr  rA   Trt   rv   rÄ  r”   ©r?   re   r0  r[  F©r   rE  rt  r–   r	   r0   r1   r2   r3   r   r   r.   r4   r6   r—   rõ   r   r!  ry   r1  rì   rí   rî   )	r8   Útsr9   rL  rN  r0  r1  re   rG   r:   rK  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 sˆw   Y  |D ]}t|jƒdksšJ ‚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   rD  r    r"   r  rF  r`   c                     st   ˆ   dd¡} ˆ ¡ }| | d d…d d…f ¡}| | d d…df ¡}| | dd d…f ¡}| | d ¡}||||fS )NrQ   r    rJ   rH  )r5  r]  r0  r1  Úax3Úax4rK  r:   r;   Ú_get_boxed_gridÐ  s   zKTestDataFramePlots.test_df_gridspec_patterns_boxed.<locals>._get_boxed_gridr!   r$   r  Tr”   rA   rt   rv   rÄ  rO  rQ   FrP  )r8   rQ  rU  rG   r9   re   r:   rK  r;   Útest_df_gridspec_patterns_boxedÅ  sJ   
þ	ý
ÿz2TestDataFramePlots.test_df_gridspec_patterns_boxedc                 C   s.   t tg d¢g d¢dœƒtjjdddœd� d S )Nr¿   r­  r;  rÄ   rÅ   rR   )Úkws)r   r   r   ÚPlotAccessorÚ_dataframe_kinds)r8   r:   r:   r;   Útest_df_grid_settingsú  s
   
ýz(TestDataFramePlots.test_df_grid_settingsc                 C   s>   t j ¡ \}}| g d¢¡ ttj d¡ d¡ƒj|d� d S )N)rá  rá  rá  rá  r    r"   r  )	r•   r–   r?   Úadd_axesr	   r0   r1   r2   r6   )r8   r]  re   r:   r:   r;   Útest_plain_axes	  s   "z"TestDataFramePlots.test_plain_axesc                 C   sX   t tj d¡ d¡tj d¡ d¡dœƒ}tj ¡ }| d¡}|j	d|ddddd	� d S )
Nr    r�   r;  )r   r   rA   rA   rº   rÄ   rÅ   Úhsv)r)  re   rS   rT   rÆ   rÓ  )
r   r0   r1   r2   r3   r•   r–   r½  r[  r6   )r8   r9   r]  re   r:   r:   r;   Útest_plain_axes_df		  s   þÿ

z%TestDataFramePlots.test_plain_axes_dfc                 C   sr   t j ¡ \}}ddlm} ||ƒ}|jdddd�}ttj 	d¡ d¡ƒj
|d	� ttj 	d¡ d¡ƒj
|d	� d S )
Nr   )Úmake_axes_locatablerä  z5%gš™™™™™©?)rÑ  Úpadr    r"   r  )r•   r–   r?   Úmpl_toolkits.axes_grid1r_  Úappend_axesr	   r0   r1   r2   r6   )r8   r]  re   r_  ÚdividerÚcaxr:   r:   r;   Ú#test_plain_axes_make_axes_locatable	  s   "z6TestDataFramePlots.test_plain_axes_make_axes_locatablec                 C   sj   t j ¡ \}}ddlm} ||dddd�}ttj d¡ d¡ƒj	|d	� ttj d¡ d¡ƒj	|d	� d S )
Nr   )Ú
inset_axesz30%r  rQ   )rj  r  r9  r    r"   r  )
r•   r–   r?   Ú%mpl_toolkits.axes_grid1.inset_locatorrf  r	   r0   r1   r2   r6   )r8   r]  re   rf  Úiaxr:   r:   r;   Útest_plain_axes_make_inset_axes 	  s
   "z2TestDataFramePlots.test_plain_axes_make_inset_axesÚmethod)r[   rg  rŒ   c                 C   sv   t tj d¡ d¡tdƒd�jdd„ d�jdd„ d	�}d
}ddg}||ddœ}t|j|ƒdi |¤Ž}t	|j
|d� d S )Nr    )rú  r    rG  rÇ   c                 S   s
   | j  ¡ S r»  )r(   rl  ©r9   r:   r:   r;   r
  /	  ó   
 zBTestDataFramePlots.test_secondary_axis_font_size.<locals>.<lambda>©r�   c                 S   s
   | j d S )Ngš™™™™™ñ?rm  rk  r:   r:   r;   r
  0	  rl  )rž   r…  r�   rž   T)rM  r   Ú
mark_right)rG   r  r:   )r   r0   r1   r2   r3   r4   Úassignr¶   r6   r   rQ  )r8   rj  r9   r   r'  rg   re   r:   r:   r;   Útest_secondary_axis_font_size(	  s   ÿýüÿz0TestDataFramePlots.test_secondary_axis_font_sizec                 C   sŽ   t g d¢g d¢g d¢dœƒ}|jjdd�}| dd¡ d	d
„ | ¡ D ƒ}tt|| ¡ ƒƒ}|d dks5J ‚|d dks=J ‚|d dksEJ ‚d S )N)rQ   r    rQ   )r…  é*   é   )ÚMondayÚTuesdayÚ	Wednesday)ÚsalesÚvisitsÚdayrx  rÏ   rI   rQ   c                 S   rp  r:   r¸  ©rt  Útr:   r:   r;   rv  F	  rw  zATestDataFramePlots.test_x_string_values_ticks.<locals>.<listcomp>rs  r  rt  r  ru  r  )r   r6   r  Úset_xlimry   r)  r~   Ú
get_xticks)r8   r9   re   ÚxticklabelsÚlabels_positionr:   r:   r;   Útest_x_string_values_ticks:	  s   ýÿz-TestDataFramePlots.test_x_string_values_ticksc                 C   s²   t  ddgddgg¡}ttj d¡ d¡ddg|d�}| ¡ }| d	d
¡ dd„ | 	¡ D ƒ}t
t|| ¡ ƒƒ}|d dks?J ‚|d dksGJ ‚|d dksOJ ‚|d dksWJ ‚d S )Nr‘  iÝ  rA   r    rZ  rœ   r(   r,   rI   r#   c                 S   rp  r:   r¸  ry  r:   r:   r;   rv  X	  rw  zETestDataFramePlots.test_x_multiindex_values_ticks.<locals>.<listcomp>z	(2012, 1)r  z	(2012, 2)r  z	(2013, 1)r  z	(2013, 2)r  )r   Úfrom_productr   r0   r1   r2   r3   r6   r{  ry   r)  r~   r|  )r8   r.   r9   re   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   re   Ú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)Úk1Úk2Úk3Úk4)iè  r   éÜ  r   )i„  ix  r   i¸  )rˆ  rˆ  i@  i°  )rA   rQ   r#   rQ   )Ús1Ús2Ús3rM  r`   )r‰  rŠ  r‹  F)re   r.  rM  T)re   rM  r   rA   rQ   c                 S   rp  r:   r¸  ry  r:   r:   r;   rv  �	  rw  zWTestDataFramePlots.test_xlim_plot_line_correctly_in_mixed_plot_type.<locals>.<listcomp>)r•   r–   r?   r   r6   rŒ   r  ry   )r8   r]  re   Úindexesr9   r‚  r}  r:   r:   r;   Ú0test_xlim_plot_line_correctly_in_mixed_plot_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 )NÚfoo)r-   r&   rA   r   )r   ÚintÚemptyr6   r—   rÁ   ró   r<  )r8   r9   re   r[   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   rX   rY   rš  r6   r7   r:   r:   r;   Útest_plot_no_numeric_dataŽ	  s   
"ÿz,TestDataFramePlots.test_plot_no_numeric_data)r[   rŒ   rg  r²   r.  rA  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³   r0  r[   )
rX   r1  r0   rÓ   r   r6   r—   r~   r   rõ   )r8   r)  rË  r9   rG   rß  re   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   rX   rY   ÚNotImplementedErrorr6   )r8   Úserr]   r:   r:   r;   Ú(test_group_subplot_series_notimplemented«	  s
   "ÿz;TestDataFramePlots.test_group_subplot_series_notimplementedc                 C   sb   t t d¡t ddg¡d�}d}tjt|d�� |jdgd� W d   ƒ d S 1 s*w   Y  d S )Nr    r¤  r•  rÇ   z6An iterable subplots for a DataFrame with a MultiIndexrU   r–  )	r   r0   Úeyer   r€   rX   rY   r—  r6   r\   r:   r:   r;   Ú,test_group_subplot_multiindex_notimplemented±	  s
   "ÿz?TestDataFramePlots.test_group_subplot_multiindex_notimplementedc                 C   s\   t t d¡ddgd�}d}tjt|d�� |jdgd� W d   ƒ d S 1 s'w   Y  d S )Nr    rÄ   rÇ   z4An iterable subplots for a DataFrame with non-uniquerU   r•  r–  )r   r0   rš  rX   rY   r—  r6   r\   r:   r:   r;   Ú0test_group_subplot_nonunique_cols_notimplemented·	  s
   "ÿzCTestDataFramePlots.test_group_subplot_nonunique_cols_notimplementedzsubplots, expected_msg))é{   z(subplots should be a bool or an iterable)rÄ   ú!each entry should be a list/tuple))rA   rž  )r•  rž  c                 C   s^   t  d¡t  d¡dœ}t|ƒ}tjt|d�� |j|d� W d   ƒ d S 1 s(w   Y  d S )Nr"   r;  rU   r–  ©r0   rÓ   r   rX   rY   rë   r6   )r8   r?   Úexpected_msgrË  r9   r:   r:   r;   Útest_group_subplot_bad_input½	  s
   "ÿz/TestDataFramePlots.test_group_subplot_bad_inputc                 C   s´   t  d¡t  d¡dœ}t|ƒ}tt jƒtdƒk r9tjtdd�� |jdgd� W d   ƒ d S 1 s2w   Y  d S tjtdd�� |jdgd� W d   ƒ d S 1 sSw   Y  d S )	Nr"   r;  z2.0.0z Column label\(s\) \['bad_name'\]rU   )rÄ   Úbad_namer–  z-Column label\(s\) \[np\.str\_\('bad_name'\)\])	r0   rÓ   r   r   r   rX   rY   rë   r6   rñ  r:   r:   r;   Ú&test_group_subplot_invalid_column_nameÐ	  s   "ÿÿ"ýz9TestDataFramePlots.test_group_subplot_invalid_column_namec                 C   sj   t  d¡t  d¡t  d¡dœ}t|ƒ}tjtdd�� |jddgd� W d   ƒ d S 1 s.w   Y  d S )Nr"   rÃ   zshould be in only one subplotrU   r;  )rÄ   rÆ   r–  rŸ  rñ  r:   r:   r;   Ú$test_group_subplot_duplicated_columnÝ	  s
   "ÿz7TestDataFramePlots.test_group_subplot_duplicated_column)r  rº   r»   c                 C   sb   t  d¡t  d¡dœ}t|ƒ}tjtdd�� |jdg|d� W d   ƒ d S 1 s*w   Y  d S )Nr"   r;  z1When subplots is an iterable, kind must be one ofrU   r“  rŸ  )r8   r)  rË  r9   r:   r:   r;   Útest_group_subplot_invalid_kindä	  s   ÿ"ýz2TestDataFramePlots.test_group_subplot_invalid_kindz index_name, old_label, new_label)Nr|  Únew)Úoldr§  r¦  )Nr|  r|  )Nr|  rA   r|  )r[   r  rŒ   c                 C   sŒ   t ddgddggddgd�}||j_|j|d�}| ¡ |ks J ‚| ¡ dks(J ‚|j|||d	�}| ¡ t|ƒks:J ‚| ¡ t|ƒksDJ ‚d S )
NrA   r    ri   úType AúType BrÇ   r/  r|  )r)  rÐ  Úxlabel)r   r.   rÌ   r6   Ú
get_xlabelrÔ  Ústr)r8   r)  Ú
index_nameÚ	old_labelÚ	new_labelr9   re   r:   r:   r;   Ú(test_xlabel_ylabel_dataframe_single_plotí	  s   z;TestDataFramePlots.test_xlabel_ylabel_dataframe_single_plotzxlabel, ylabel))NN)úX LabelN)NúY Label)r±  r²  c                 C   st   d}d}t ddgddgg||gd�}|j|||||d�}| ¡ |d u r%|n|ks*J ‚| ¡ |d u r3|n|ks8J ‚d S )Nr¨  r©  rA   r    ri   rÇ   )r)  rS   rT   rª  rÐ  )r   r6   r«  rÔ  )r8   r)  rª  rÐ  ÚxcolÚycolr9   re   r:   r:   r;   Ú'test_xlabel_ylabel_dataframe_plane_plot	
  s    z:TestDataFramePlots.test_xlabel_ylabel_dataframe_plane_plot)FTc                 C   sj   t dgƒj|dddgd�}|jjD ]!}|j ¡ r2| ¡ dks J ‚| ¡ dks(J ‚| ¡ d dks2J ‚qd S )Nr   rÈ  )r   rk   r  )rM  rÐ  rl   rh   )	r   r6   r½  rG   rß   Úget_visiblerÔ  rU  Ú
get_yticks)r8   rM  Úax_dfre   r:   r:   r;   Útest_secondary_y
  s   

ÿ
€üz#TestDataFramePlots.test_secondary_yc                 C   st   t tj d¡ d¡ttdƒtd�tdddd�d	�}t	 
d
¡� | ¡ }|j ¡ }W d   ƒ d S 1 s3w   Y  d S )Nr    r!   r$   r%   r'   r"   r(   r)   r,   F)r   r0   r1   r2   r3   r   r4   r5   r   rì   rí   r6   r  )r8   r9   r˜   r:   r:   r;   Útest_plot_no_warning)
  s   ý"þz'TestDataFramePlots.test_plot_no_warning)NNNN)ÎÚ__name__Ú
__module__Ú__qualname__rX   ÚmarkÚslowr<   rH   rK   rO   Úxfailr^   rf   Úparametrizerr   r{   r}   r‚   r‘   r“   rš   r4   r±   r¹   r¼   rÂ   rÈ   rÍ   rÒ   rÔ   rØ   rè   rï   rö   rø   rû   rý   rþ   r  r0   r  r=  r  r   r«   r  r  r  r(  r2  r4  r7  r9  r   r   rF  rK  rL  rO  rS  rY  r^  rd  re  rm  rn  r~  rƒ  r„  r�  r�  r   r¬   ÚCategoricalIndexr”  r—  r›  rœ  r¡  r¨  ÚparamÚtdÚ
skip_if_nor®  rÌ  rÍ  rÕ  rÜ  rã  rç  rë  ró  rù  rû  r  r	  r  r  r  Úfilterwarningsr   r•   r   r"  r#  r$  r(  r+  r2  r3  r4  r5  r:  r;  r<  rL  rM  rN  rç  rX  rb  rý  rª   rj  rm  r{  r  r�  r™  r   rX  Ú_common_kindsr�  rž  r¢  r¤  r¦  r«  r­  r¯  r·  r¹  r¼  r¾  ÚstdrÁ  rÄ  rÍ  rÏ  rÑ  rÕ  rà  rê  rë  rî  rï  rò  rô  r	   rø  rú  rû  rë   rþ  r  r  r  r  r  r  r  r  r(  r+  r6  r;  r<  r=  Ú
_all_kindsrC  rR  rV  rZ  r\  r^  re  ri  rp  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    r7  )rA   r   r¤  r’   )rt  r–   r•   rE  rI  Úsubplot)rz  r5  Úax_tlÚax_llÚax_trÚax_lrr:   r:   r;   r2  7
  s   r2  )6Ú__doc__r   r   r@  rü  r˜  rb   r>  Únumpyr0   rX   Úpandas.util._test_decoratorsÚutilÚ_test_decoratorsrÄ  Úpandas.core.dtypes.apir   Úpandasr¬   r   r   r   r   r	   r
   r   r   r   Úpandas._testingÚ_testingrì   Úpandas.tests.plotting.commonr   r   r   r   r   r   r   r   r   r   r   r   r   Úpandas.util.versionr   Úpandas.io.formats.printingr   r1  r•   rz  r   r2  r:   r:   r:   r;   Ú<module>   sR    ,<

                    