o
    Û­jœˆ  ã                   @   sº   d Z ddlZddlZddlZddl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 e d¡Zejdd„ ƒZG dd	„ d	ƒZG d
d„ dƒZG dd„ dƒZdS )z Test cases for .hist method é    N)Ú	DataFrameÚIndexÚSeriesÚ
date_rangeÚto_datetime)
Ú_check_ax_scalesÚ_check_axes_shapeÚ_check_colorsÚ_check_legend_labelsÚ_check_patches_all_filledÚ_check_plot_worksÚ_check_text_labelsÚ_check_ticks_propsÚ
get_x_axisÚ
get_y_axisÚ
matplotlibc                   C   s$   t tjdtjd�tdddd�dd�S )Né   ©Údtypez
2020-01-01ÚB)ÚperiodsÚfreqÚts©ÚindexÚname)r   ÚnpÚarangeÚfloat64r   © r   r   úc/var/www/html/CropPilot/venv/lib/python3.10/site-packages/pandas/tests/plotting/test_hist_method.pyr      s
   ýr   c                   @   s   e Zd Zej di ddiddig¡dd„ ƒZej di dd	ig¡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jej dg d¢g d¢g d¢g d¢g d¢g d ¢g d!¢g¡d"d#„ ƒƒZd$d%„ Zd&d'„ Zd(d)„ Zd*d+„ Zej d,g d-¢¡d.d/„ ƒZej d0d1d2g¡d3d4„ ƒZej d5d6d7g¡d8d9„ ƒZd:d;„ Zd<d=„ Zd>d?„ Zejjd@dA�dBdC„ ƒZdDdE„ ZdFdG„ Zejjd@dA�dHdI„ ƒZdJdK„ Z dLdM„ Z!d6S )NÚTestSeriesPlotsÚkwargsÚgridFÚfigsize©é   é
   c                 C   s   t |jfi |¤Ž d S ©N)r   Úhist©Úselfr   r"   r   r   r    Útest_hist_legacy_kwargs)   s   z'TestSeriesPlots.test_hist_legacy_kwargsÚbinsé   c                 C   sN   t jtdd�� t|jfd|jji|¤Ž W d   ƒ d S 1 s w   Y  d S )NF©Úcheck_stacklevelÚby)ÚtmÚassert_produces_warningÚUserWarningr   r)   r   Úmonthr*   r   r   r    Útest_hist_legacy_kwargs_warning-   s   "ÿz/TestSeriesPlots.test_hist_legacy_kwargs_warningc                 C   s&   t j dd¡\}}t|j|dd� d S )Né   T)ÚaxÚdefault_axes©ÚmplÚpyplotÚsubplotsr   r)   ©r+   r   Úfigr8   r   r   r    Útest_hist_legacy_ax3   ó   z#TestSeriesPlots.test_hist_legacy_axc                 C   s(   t j dd¡\}}t|j||dd� d S )Nr7   T)r8   Úfigurer9   r:   r>   r   r   r    Útest_hist_legacy_ax_and_fig7   s   z+TestSeriesPlots.test_hist_legacy_ax_and_figc                 C   s&   t j dd¡\}}t|j|dd� d S )Nr7   T)rB   r9   r:   )r+   r   r?   Ú_r   r   r    Útest_hist_legacy_fig;   rA   z$TestSeriesPlots.test_hist_legacy_figc                 C   s>   t j dd¡\}\}}t|j||dd� t|j||dd� d S )Nr7   é   T)rB   r8   r9   r:   )r+   r   r?   Úax1Úax2r   r   r    Útest_hist_legacy_multi_ax?   s   z)TestSeriesPlots.test_hist_legacy_multi_axc                 C   sZ   t j dd¡\}}d}tjt|d�� |j|j|d� W d   ƒ d S 1 s&w   Y  d S )Nr7   z`Cannot pass 'figure' when using the 'by' argument, since a new 'Figure' instance will be created©Úmatch)r1   rB   )r;   r<   r=   ÚpytestÚraisesÚ
ValueErrorr)   r   )r+   r   r?   rD   Úmsgr   r   r    Útest_hist_legacy_by_fig_errorD   s   ÿ"ÿz-TestSeriesPlots.test_hist_legacy_by_fig_errorc                 C   s@   t tj d¡ d¡ƒ}|jdd�d d }t|jƒdksJ ‚d S )NrF   ©r'   rF   )r-   r   )r   r   ÚrandomÚdefault_rngÚstandard_normalr)   ÚlenÚpatches)r+   Údfr8   r   r   r    Útest_hist_bins_legacyM   s   z%TestSeriesPlots.test_hist_bins_legacyc                 C   sŠ   |}d}t jt|d�� |jjdd� W d   ƒ n1 sw   Y  t jt|d�� |jjddgd� W d   ƒ d S 1 s>w   Y  d S )Nz7The 'layout' keyword is not supported when 'by' is NonerJ   ©r7   r7   ©Úlayoutr7   )rL   rM   rN   Úheightr)   )r+   Úhist_dfrW   rO   r   r   r    Útest_hist_layoutR   s   ÿ"ÿz TestSeriesPlots.test_hist_layoutz by, layout, axes_num, res_layout)Úgender©rF   r7   rF   r`   )r_   ©é   éÿÿÿÿrF   )rb   r7   )Úcategory©é   r7   rf   re   )rd   ©rF   rc   rf   ©rF   rF   )rd   ra   rf   )rb   rF   )rd   ©rc   rf   rf   ©r7   rf   )Ú	classroomrh   rb   rh   c                 C   s\   |}t jtdd�� t|jjt||ƒ|d�}W d   ƒ n1 s w   Y  t|||d� d S )NFr/   ©r1   r[   ©Úaxes_numr[   )r2   r3   r4   r   r\   r)   Úgetattrr   )r+   r]   r1   r[   rn   Ú
res_layoutrW   Úaxesr   r   r    Útest_hist_layout_with_by[   s
   ÿz(TestSeriesPlots.test_hist_layout_with_byc                 C   s,   |}|j j|jddd�}t|dddd� d S )N©rf   rF   )é   é   )r1   r[   r$   rf   ©rn   r[   r$   )r\   r)   rd   r   ©r+   r]   rW   rq   r   r   r    Útest_hist_layout_with_by_shaper   s   z.TestSeriesPlots.test_hist_layout_with_by_shapec                 C   s|   ddl m}m} ttj d¡ d¡ƒ}ttj d¡ d¡ƒ}|dƒ | ¡  |dƒ | ¡  |ƒ }|j	}t
|ƒdks<J ‚d S )Nr   )ÚgcfÚsubplotrF   éy   éz   )Úmatplotlib.pyplotry   rz   r   r   rR   rS   rT   r)   rq   rU   )r+   ry   rz   ÚxÚyr?   rq   r   r   r    Útest_hist_no_overlapx   s   z$TestSeriesPlots.test_hist_no_overlapc                 C   s.   |}|j j|jd� ttj ¡ ƒdksJ ‚d S )N©r1   r7   )r\   r)   r_   rU   r;   r<   Úget_fignums)r+   r]   rW   r   r   r    Útest_hist_by_no_extra_plotsˆ   s   z+TestSeriesPlots.test_hist_by_no_extra_plotsc                 C   sh   ddl m} |ƒ }|ƒ }| d¡}d}tjt|d�� |j||d� W d   ƒ d S 1 s-w   Y  d S )Nr   )rB   éo   z&passed axis not bound to passed figurerJ   )r8   rB   )ÚpylabrB   Úadd_subplotrL   rM   ÚAssertionErrorr)   )r+   r   rB   Úfig1Úfig2rG   rO   r   r   r    Ú+test_plot_fails_when_ax_differs_from_figure�   s   
"ÿz;TestSeriesPlots.test_plot_fails_when_ax_differs_from_figureúhisttype, expected©)ÚbarT)Ú
barstackedT)ÚstepF)Ú
stepfilledTc                 C   s4   t tj d¡ dd¡ƒ}|j|d�}t||d� d S )NrF   r7   r'   ©Úhisttype©Úfilled)r   r   rR   rS   Úintegersr)   r   )r+   r’   ÚexpectedÚserr8   r   r   r    Útest_histtype_argument—   s   z&TestSeriesPlots.test_histtype_argumentz&by, expected_axes_num, expected_layout)Nr7   rY   )ÚbrF   )r7   rF   c                 C   sf   ddg ddg  }t tj d¡ d¡|dd�}d|j_t|jd	d	|d
�}t	|||d� t
|dƒ d S )Né   Ú1Ú2rF   r   Úar   r™   T)r9   Úlegendr1   rm   )r   r   rR   rS   rT   r   r   r   r)   r   r
   )r+   r1   Úexpected_axes_numÚexpected_layoutr   Úsrq   r   r   r    Útest_hist_with_legend¦   s   z%TestSeriesPlots.test_hist_with_legendr1   Nr™   c                 C   s|   ddg ddg  }t tj d¡ d¡|dd�}d|j_tjt	d	d
�� |j
d|dd� W d   ƒ d S 1 s7w   Y  d S )Nrš   r›   rœ   rF   r   r�   r   r™   ú Cannot use both legend and labelrJ   TÚc)rž   r1   Úlabel)r   r   rR   rS   rT   r   r   rL   rM   rN   r)   )r+   r1   r   r¡   r   r   r    Útest_hist_with_legend_raises´   s   "ÿz,TestSeriesPlots.test_hist_with_legend_raisesc                 C   sD   t j ¡ \}}|jjd|d�}t|jƒdksJ ‚t|j 	¡ dƒ d S )Nr.   ©r-   r8   Ú	Frequency)
r;   r<   r=   Úplotr)   rU   rV   r   ÚyaxisÚ	get_label©r+   r   rD   r8   r   r   r    Útest_hist_kwargs¾   s   z TestSeriesPlots.test_hist_kwargsc                 C   sB   t j ¡ \}}|jjd|d�}|jjd|d�}t|j ¡ dƒ d S )Nr.   r§   Ú
horizontal)Úorientationr8   r¨   )r;   r<   r=   r©   r)   r   Úxaxisr«   r¬   r   r   r    Útest_hist_kwargs_horizontalÄ   s   z+TestSeriesPlots.test_hist_kwargs_horizontalc                 C   s4   t j ¡ \}}|jjd|d�}|jjdd|d�}d S )Nr.   r§   ÚleftT)ÚalignÚstackedr8   )r;   r<   r=   r©   r)   r¬   r   r   r    Útest_hist_kwargs_alignÊ   s   z&TestSeriesPlots.test_hist_kwargs_alignzApi changed in 3.6.0)Úreasonc                 C   óp   t  d¡ tj ¡ \}}|jjd|d�}t|dd� | ¡ }t	|dgt
|ƒ ƒ | ¡ }t	|dgt
|ƒ ƒ d S ©NÚscipyT)Úlogyr8   Úlog©rª   Ú )rL   Úimportorskipr;   r<   r=   r©   r)   r   Úget_xticklabelsr   rU   Úget_yticklabels©r+   r   rD   r8   ÚxlabelsÚylabelsr   r   r    Útest_hist_kdeÏ   s   
zTestSeriesPlots.test_hist_kdec                 C   ó   t  d¡ t|jjƒ d S ©Nr¹   )rL   r¾   r   r©   Úkde©r+   r   r   r   r    Útest_hist_kde_plot_worksÛ   ó   
z(TestSeriesPlots.test_hist_kde_plot_worksc                 C   rÅ   rÆ   )rL   r¾   r   r©   ÚdensityrÈ   r   r   r    Útest_hist_kde_density_worksß   rÊ   z+TestSeriesPlots.test_hist_kde_density_worksc                 C   r·   r¸   )rL   r¾   r;   r<   r=   r©   rÇ   r   r¿   r   rU   rÀ   rÁ   r   r   r    Útest_hist_kde_logyã   s   
z"TestSeriesPlots.test_hist_kde_logyc                 C   sb   t  d¡ tj ¡ \}}|jjddd|d�}t|dd� t|j	ƒdks%J ‚t
|j	dgd d� d S )	Nr¹   Tr'   r™   )rº   r-   Úcolorr8   r»   r¼   )Ú
facecolors)rL   r¾   r;   r<   r=   r©   r)   r   rU   rV   r	   r¬   r   r   r    Útest_hist_kde_color_binsî   s   
z(TestSeriesPlots.test_hist_kde_color_binsc                 C   s^   t  d¡ tj ¡ \}}|jjdd|d�}t|dd� | ¡ }t	|ƒdks'J ‚t
|dgƒ d S )Nr¹   TÚr)rº   rÎ   r8   r»   r¼   r7   )rL   r¾   r;   r<   r=   r©   rÇ   r   Ú	get_linesrU   r	   )r+   r   rD   r8   Úlinesr   r   r    Útest_hist_kde_colorö   s   
z#TestSeriesPlots.test_hist_kde_color)"Ú__name__Ú
__module__Ú__qualname__rL   ÚmarkÚparametrizer,   r6   r@   rC   rE   rI   rP   rX   r^   Úslowrr   rx   r€   rƒ   rŠ   r˜   r¢   r¦   r­   r±   rµ   ÚxfailrÄ   rÉ   rÌ   rÍ   rÐ   rÔ   r   r   r   r    r!   (   sf    

		ùþ

þ
	ÿ

	


r!   c                   @   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ej 
d	d
d
dœddi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ejjdd„ ƒZdd„ Zej 
ddddœdddœd d dœd!d!dœd"d"dœd#d!dœd$d dœd%ddœd&ddœf	¡d'd(„ ƒZd)d*„ Zd+d,„ Zd-d.„ Zej 
d/dg d0¢fg d1¢g d1¢fg¡d2d3„ ƒZej 
d4g d5¢¡d6d7„ ƒZej 
d8dd9g¡ej 
d:dd;g¡d<d=„ ƒƒZej 
d8dd9g¡ej 
d:dd;g¡d>d?„ ƒƒZd@dA„ ZdBdC„ ZdDdE„ ZdFdG„ ZdHdI„ ZdJdK„ ZdLdM„ ZdS )NÚTestDataFramePlotsc                 C   s>   t jtdd�� t|jƒ W d   ƒ d S 1 sw   Y  d S )NFr/   )r2   r3   r4   r   r)   )r+   r]   r   r   r    Útest_hist_df_legacy  s   "ÿz&TestDataFramePlots.test_hist_df_legacyc                 C   s¨   t tj d¡ d¡ƒ}ttj d¡jdddtjd�ƒ|d< tj	t
dd�� t|jdd	�}W d   ƒ n1 s6w   Y  t|d
dd� |d  ¡ rJJ ‚t|dg jƒ d S )NrF   rQ   ì     jÕ+2Zì     ÊRŠeöZr'   ©Úsizer   Fr/   )r#   rb   rh   rm   rY   )r   r   rR   rS   rT   r   r•   Úint64r2   r3   r4   r   r)   r   Úget_visible©r+   rW   rq   r   r   r    Útest_hist_df_legacy_layout  s   üÿÿz-TestDataFramePlots.test_hist_df_legacy_layoutc                 C   s$   t tj d¡ d¡ƒ}t|jƒ d S )NrF   ©r'   r7   )r   r   rR   rS   rT   r   r)   ©r+   rW   r   r   r    Útest_hist_df_legacy_layout2  s   z.TestDataFramePlots.test_hist_df_legacy_layout2c                 C   sˆ   t tj d¡ d¡ƒ}ttj d¡jdddtjd�ƒ|d< tj	t
dd	�� t|jd
d�}W d   ƒ n1 s6w   Y  t|dd
d� d S )NrF   ©r'   r.   rÞ   rß   r'   rà   r.   Fr/   rs   rZ   é   rm   )r   r   rR   rS   rT   r   r•   râ   r2   r3   r4   r   r)   r   rä   r   r   r    Útest_hist_df_legacy_layout3  s   üÿÿz.TestDataFramePlots.test_hist_df_legacy_layout3r"   T)ÚsharexÚshareyr$   r%   r-   r.   c                 C   s€   t tj d¡ d¡ƒ}ttj d¡jdddtjd�ƒ|d< tj	t
dd	�� t|jfi |¤Ž W d   ƒ d S 1 s9w   Y  d S )
NrF   ré   rÞ   rß   r'   rà   r.   Fr/   )r   r   rR   rS   rT   r   r•   râ   r2   r3   r4   r   r)   )r+   r"   rW   r   r   r    Ú!test_hist_df_legacy_layout_kwargs.  s   üÿ"ÿz4TestDataFramePlots.test_hist_df_legacy_layout_kwargsc                 C   sD   |t dƒƒ}d\}}d\}}|j||||d�}t|||||d� d S )Nr'   ©é   é   ©r   é(   ©Ú
xlabelsizeÚxrotÚ
ylabelsizeÚyrot)Úranger)   r   )r+   Úframe_or_seriesÚobjÚxfÚyfrö   rø   rq   r   r   r    Ú(test_hist_df_legacy_layout_labelsize_rotB  s
   z;TestDataFramePlots.test_hist_df_legacy_layout_labelsize_rotc                    sV   ddl m‰  ttdƒƒ}|jdddd�}‡ fdd„| ¡ D ƒ}t |d	  ¡ d
¡ d S )Nr   ©Ú	Rectangler'   Trf   )Ú
cumulativer-   rË   c                    ó   g | ]	}t |ˆ ƒr|‘qS r   ©Ú
isinstance©Ú.0r~   rÿ   r   r    Ú
<listcomp>R  ó    zETestDataFramePlots.test_hist_df_legacy_rectangles.<locals>.<listcomp>rc   ç      ð?)	Úmatplotlib.patchesr   r   rù   r)   Úget_childrenr2   Úassert_almost_equalÚ
get_height)r+   r—   r8   Úrectsr   rÿ   r    Útest_hist_df_legacy_rectanglesK  s
   z1TestDataFramePlots.test_hist_df_legacy_rectanglesc                 C   s(   t tdƒƒ}|jdd�}t|dd� d S )Nr'   T)r»   r»   r¼   )r   rù   r)   r   )r+   r—   r8   r   r   r    Útest_hist_df_legacy_scaleU  s   z,TestDataFramePlots.test_hist_df_legacy_scalec                 C   sH   t tdƒƒ}t t¡� |jdd� W d   ƒ d S 1 sw   Y  d S )Nr'   r�   )Úfoo)r   rù   r2   Úexternal_error_raisedÚAttributeErrorr)   )r+   r—   r   r   r    Ú"test_hist_df_legacy_external_error\  s   "ÿz5TestDataFramePlots.test_hist_df_legacy_external_errorc                 C   s¸   t tj d¡ d¡tj d¡ ddd¡ttj d¡jdddtjd�ƒttj d¡jdddtjd�dd�d	œƒ}| t¡}d
}t	j
t|d�� | ¡  W d   ƒ d S 1 sUw   Y  d S )NrF   r'   r   l     úÛp¹/ l    @©spcÍ/ r   T)Úutc)r�   r™   r¤   ÚdzDhist method requires numerical or datetime columns, nothing to plot.rJ   )r   r   rR   rS   r•   r   râ   ÚastypeÚobjectrL   rM   rN   r)   )r+   rW   Údf_orO   r   r   r    Ú*test_hist_non_numerical_or_datetime_raisesc  s*   
ÿÿ
ÿüøÿ

"ÿz=TestDataFramePlots.test_hist_non_numerical_or_datetime_raisesÚlayout_testNrh   )r[   Úexpected_sizere   rj   )rb   rb   ri   )rf   rc   )rc   rF   rg   c                 C   sd   t tj d¡ d¡ƒ}ttj d¡jdddtjd�ƒ|d< |j|d d�}|d	 }t	|d
|d� d S )NrF   rQ   rÞ   rß   r'   rà   r[   rZ   r  rb   rm   )
r   r   rR   rS   rT   r   r•   râ   r)   r   )r+   r  rW   rq   r–   r   r   r    r^   |  s   üÿz#TestDataFramePlots.test_hist_layoutc                 C   s   t tj d¡ d¡ƒ}ttj d¡jdddtjd�ƒ|d< d}tj	t
|d�� |jd	d
� W d   ƒ n1 s7w   Y  t d¡}tj	t
|d�� |jdd
� W d   ƒ n1 sYw   Y  d}tj	t
|d�� |jdd
� W d   ƒ d S 1 syw   Y  d S )NrF   rQ   rÞ   rß   r'   rà   z1Layout of 1x1 must be larger than required size 3rJ   rY   rZ   z)Layout must be a tuple of (rows, columns))r7   ú1At least one dimension of layout must be positive©rc   rc   )r   r   rR   rS   rT   r   r•   râ   rL   rM   rN   r)   ÚreÚescape)r+   rW   rO   r   r   r    Útest_hist_layout_error˜  s*   üÿ	ÿ
ÿ"ÿz)TestDataFramePlots.test_hist_layout_errorc                 C   sV   t tj d¡ d¡ƒ}ttj d¡jdddtjd�ƒ|d< t|j	dd� t
j ¡  d S )	NrF   ©éd   rF   rÞ   rß   r#  rà   T)r9   )r   r   rR   rS   rT   r   r•   râ   r   r)   r;   r<   Útight_layoutrç   r   r   r    Útest_tight_layout°  s   üÿ	z$TestDataFramePlots.test_tight_layoutc                 C   s<   t g d¢g d¢dœƒ}t|jdddddd	�}t|dd
� d S )N©g      ø?ç      à?g333333ó?çÍÌÌÌÌÌì?rb   )ÚpigÚrabbitr)  r)  r*  )ÚlengthÚanimalTr+  r,  r.   r   )r9   Úcolumnr1   r-   rö   ©rö   )r   r   r)   r   rä   r   r   r    Útest_hist_subplot_xrot¾  s   þÿúz)TestDataFramePlots.test_hist_subplot_xrotzcolumn, expected©Úwidthr+  r\   )r+  r1  r\   c                    s\   t g d¢g d¢g d¢dœg d¢d�}t|jd|dd	�‰ ‡ fd
d„tdƒD ƒ}||ks,J ‚d S )N)çffffffæ?çš™™™™™É?g333333Ã?r3  gš™™™™™ñ?r&  )rb   r'  g333333@rF   r7   r0  )r)  r*  ÚduckÚchickenÚhorse)r   T©r7   rb   )r9   r-  r[   c                    s   g | ]
}ˆ d |f   ¡ ‘qS )r   )Ú	get_title)r  Úi©rq   r   r    r  ë  ó    zGTestDataFramePlots.test_hist_column_order_unchanged.<locals>.<listcomp>rb   )r   r   r)   rù   )r+   r-  r–   rW   Úresultr   r:  r    Ú test_hist_column_order_unchangedÑ  s   
ýú
üz3TestDataFramePlots.test_hist_column_order_unchangedr‹   rŒ   c                 C   s@   t tj d¡jdddd�ddgd�}|j|d	�}t||d
� d S )NrF   r7   r'   r"  ©rá   r�   r™   ©Úcolumnsr‘   r“   ©r   r   rR   rS   r•   r)   r   ©r+   r’   r–   rW   r8   r   r   r    r˜   î  s
   ÿz)TestDataFramePlots.test_histtype_argumentr1   r¤   r-  r™   c                 C   sÖ   |d u r
|d ur
dnd}d|f}|pddg}|d ur|gd }t ddg ddg  dd	�}ttj d¡ d
¡|ddgd�}t|jdd||d�}t|||d� |d u rZ|d u rZ|d }t	||ƒD ]	\}	}
t
|
|	ƒ q_d S )Nr7   rF   r�   r™   rš   r›   rœ   r¤   ©r   ©r   rF   ©r   r@  T)r9   rž   r1   r-  rm   r   )r   r   r   rR   rS   rT   r   r)   r   Úzipr
   )r+   r1   r-  rŸ   r    Úexpected_labelsr   rW   rq   Úexpected_labelr8   r   r   r    r¢   ÿ  s0   
ýûÿz(TestDataFramePlots.test_hist_with_legendc                 C   s‚   t ddg ddg  dd�}ttj d¡ d¡|dd	gd
�}tjtdd�� |j	d||dd� W d   ƒ d S 1 s:w   Y  d S )Nrš   r›   rœ   r¤   rC  rF   rD  r�   r™   rE  r£   rJ   Tr  )rž   r1   r-  r¥   )
r   r   r   rR   rS   rT   rL   rM   rN   r)   )r+   r1   r-  r   rW   r   r   r    r¦     s   ý"ÿz/TestDataFramePlots.test_hist_with_legend_raisesc                 C   sJ   t tj d¡ d¡ƒ}tj ¡ \}}|jj	d|d�}t
|jƒdks#J ‚d S )NrF   rQ   r.   r§   r'   ©r   r   rR   rS   rT   r;   r<   r=   r©   r)   rU   rV   ©r+   rW   rD   r8   r   r   r    Útest_hist_df_kwargs-  s   z&TestDataFramePlots.test_hist_df_kwargsc                 C   sb   t tj d¡ d¡g d¢d�}ddgd |d< tj ¡ \}}|jj	d|d	�}t
|jƒd
ks/J ‚d S )NrF   ©r'   rf   ©ÚAr   ÚCÚDr?  r~   r   r.   ÚEr§   rð   rI  rJ  r   r   r    Útest_hist_df_with_nonnumerics3  s   þz0TestDataFramePlots.test_hist_df_with_nonnumericsc                 C   s`   t tj d¡ d¡g d¢d�}ddgd |d< tj ¡ \}}|jj	|d	�}t
|jƒd
ks.J ‚d S )NrF   rL  rM  r?  r~   r   r.   rQ  )r8   ró   rI  rJ  r   r   r    Ú%test_hist_df_with_nonnumerics_no_bins>  s   þz8TestDataFramePlots.test_hist_df_with_nonnumerics_no_binsc                 C   sŒ   t tj d¡ d¡tdƒd�}tj ¡ \}}|d j	j
d|d�}|d j	j
|ddd	� t|dd
gd� | ¡  ¡ s;J ‚|j ¡  ¡ sDJ ‚d S )NrF   ©r   rf   Úabcdr?  r�   T)rž   r8   r™   ©r8   rž   Úsecondary_yú	b (right)©Úlabels)r   r   rR   rS   rT   Úlistr;   r<   r=   r©   r)   r
   Ú	get_yaxisrã   Úright_axrJ  r   r   r    Útest_hist_secondary_legendI  s   ÿz-TestDataFramePlots.test_hist_secondary_legendc                 C   s�   t tj d¡ d¡tdƒd�}tj ¡ \}}|d j	j
dd|d�}|d j	j
|ddd	� t|jd
dgd� |j ¡  ¡ r>J ‚| ¡  ¡ sFJ ‚d S )NrF   rT  rU  r?  r�   T©rž   rW  r8   r™   rV  ú	a (right)rX  rY  ©r   r   rR   rS   rT   r[  r;   r<   r=   r©   r)   r
   Úleft_axr\  rã   rJ  r   r   r    Útest_hist_secondary_secondaryY  s   ÿz0TestDataFramePlots.test_hist_secondary_secondaryc                 C   sŽ   t tj d¡ d¡tdƒd�}tj ¡ \}}|d j	j
dd|d�}|d j	j
|dd	� t|jd
dgd� |j ¡  ¡ s=J ‚| ¡  ¡ sEJ ‚d S )NrF   rT  rU  r?  r�   Tr_  r™   )r8   rž   r`  rY  ra  rJ  r   r   r    Útest_hist_secondary_primaryh  s   ÿz.TestDataFramePlots.test_hist_secondary_primaryc                    s‚  t  d¡‰ ttjddgdtjtjgg d¢gtdƒd�}t g d¢¡}tg d	¢g d¢gtdƒd�}t g d
¢g d¢g¡}tj 	¡ \}}|j
j||d� ‡ fdd„| ¡ D ƒ}dd„ |D ƒ}tj 	¡ \}}	|j
j|	|d� ‡ fdd„|	 ¡ D ƒ}
dd„ |
D ƒ}tdd„ t||ƒD ƒƒs‹J ‚t ddgddgg¡}d}t jt|d�� tj 	¡ \}}|j
j||d� W d   ƒ d S 1 sºw   Y  d S )Nzmatplotlib.patchesr3  ç333333Ó?çš™™™™™Ù?)r2  gš™™™™™é?r(  Úabcr?  )ç      Ð?re  çÍÌÌÌÌÌÜ?)rf  r3  re  )re  rh  rh  )ri  ri  ri  )r8   Úweightsc                    ó   g | ]
}t |ˆ jƒr|‘qS r   ©r  r   r  ©Úmpl_patchesr   r    r  …  r;  zFTestDataFramePlots.test_hist_with_nans_and_weights.<locals>.<listcomp>c                 S   ó   g | ]}|  ¡ ‘qS r   ©r  ©r  Úrectr   r   r    r  †  ó    c                    rk  r   rl  r  rm  r   r    r  ‰  s
    ÿÿc                 S   ro  r   rp  rq  r   r   r    r  Œ  rs  c                 s   s   � | ]	\}}||kV  qd S r(   r   )r  Úh0Úh1r   r   r    Ú	<genexpr>�  s   € zETestDataFramePlots.test_hist_with_nans_and_weights.<locals>.<genexpr>rh  ri  z?weights must have the same shape as data, or be a single columnrJ   )rL   r¾   r   r   Únanr[  Úarrayr;   r<   r=   r©   r)   r  ÚallrF  rM   rN   )r+   rW   rj  Ú	no_nan_dfÚno_nan_weightsrD   Úax0r  ÚheightsrG   Úno_nan_rectsÚno_nan_heightsÚidxerror_weightsrO   rH   r   rm  r    Útest_hist_with_nans_and_weightsx  s2   
þ
ÿ"þz2TestDataFramePlots.test_hist_with_nans_and_weights) rÕ   rÖ   r×   rL   rØ   rÚ   rÝ   rå   rè   rë   rÙ   rî   rþ   r  r  r  r  r^   r!  r%  r/  r=  r˜   r¢   r¦   rK  rR  rS  r^  rc  rd  r�  r   r   r   r    rÜ      s‚    



ÿ

	

÷þ

þþ
þ
	rÜ   c                   @   sj  e Z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jej dg d¢g d¢g d¢g¡dd„ ƒƒZejjdd„ ƒZejjej dg d¢g d¢g d¢g¡dd„ ƒƒZejjej di d d!d"œg¡d#d$„ ƒƒZejjej d%d&d'd(œd)d'gd*g d+¢id,d!gg¡d-d.„ ƒƒZd/d0„ Zd1d2„ Zd3d4„ Zd5d6„ Zd7d8„ Zd9d:„ Zej d;g d<¢¡d=d>„ ƒZd?S )@ÚTestDataFrameGroupByPlotsc                 C   sŠ   ddl m} tj d¡}t| d¡dgd�}t|jdddtj	d	�ƒ|d
< | ddd¡|d< dgd |d< ||j
|jd�}t|ddd� d S )Nr   ©Ú_grouped_histr'   ræ   rN  r?  rÞ   rß   rà   r   rf   rO  ÚXrP  r�   rh   rm   )Ú pandas.plotting._matplotlib.histr„  r   rR   rS   r   rT   r   r•   râ   rN  rO  r   ©r+   r„  ÚrsrW   rq   r   r   r    Útest_grouped_hist_legacy˜  s   üÿz2TestDataFrameGroupByPlots.test_grouped_hist_legacyc                 C   s|   t j d¡}t| d¡dgd�}t|jdddt jd�ƒ|d< | d	d
d¡|d< dgd |d< |j|j	d�}t
|d
dd� d S )Nr'   ræ   rN  r?  rÞ   rß   rà   r   r   rf   rO  r…  rP  r�   rh   rm   )r   rR   rS   r   rT   r   r•   râ   r)   rO  r   ©r+   rˆ  rW   rq   r   r   r    Ú*test_grouped_hist_legacy_axes_shape_no_col«  s   üÿzDTestDataFrameGroupByPlots.test_grouped_hist_legacy_axes_shape_no_colc                 C   sˆ   t j d¡}t| d¡dgd�}t|jdddt jd�ƒ|d	< | d
dd¡|d< dgd |d< |jddd�}t	|ddd� t
|dd� d S )NrF   ræ   rN  r?  rÞ   rß   r'   rà   r   r   rf   rO  r…  rP  r   )r1   Úrotr7   rY   rm   r.  )r   rR   rS   r   rT   r   r•   râ   r)   r   r   rŠ  r   r   r    Ú#test_grouped_hist_legacy_single_key»  s   üÿz=TestDataFrameGroupByPlots.test_grouped_hist_legacy_single_keyc                    sæ   ddl m‰  ddlm} tj d¡}t| d¡dgd�}t	|j
dd	d
tjd�ƒ|d< | 
ddd
¡|d< d\}}d\}}||j|jdd||||dd�	}| ¡ D ]}	‡ fdd„|	 ¡ D ƒ}
|
d  ¡ }t |d¡ qNt|||||d� d S )Nr   rÿ   rƒ  rF   ræ   rN  r?  rÞ   rß   r'   rà   r   rf   rO  rï   rò   T)r1   r  r-   rõ   rö   r÷   rø   rË   c                    r  r   r  r  rÿ   r   r    r  î  r  zZTestDataFrameGroupByPlots.test_grouped_hist_legacy_grouped_hist_kwargs.<locals>.<listcomp>rc   r	  rô   )r
  r   r†  r„  r   rR   rS   r   rT   r   r•   râ   rN  rO  Úravelr  r  r2   r  r   )r+   r„  rˆ  rW   rü   rý   rö   rø   rq   r8   r  r\   r   rÿ   r    Ú,test_grouped_hist_legacy_grouped_hist_kwargsÍ  s>   üÿ÷zFTestDataFrameGroupByPlots.test_grouped_hist_legacy_grouped_hist_kwargsc                 C   sŠ   ddl m} tj d¡}t| d¡dgd�}t|jddd	tj	d
�ƒ|d< | ddd	¡|d< dgd	 |d< ||j
|jdd�}t|dd� d S )Nr   rƒ  rF   ræ   rN  r?  rÞ   rß   r'   rà   r   rf   rO  r…  rP  T)r1   r»   r»   r¼   )r†  r„  r   rR   rS   r   rT   r   r•   râ   rN  rO  r   r‡  r   r   r    Ú%test_grouped_hist_legacy_grouped_histó  s   üÿz?TestDataFrameGroupByPlots.test_grouped_hist_legacy_grouped_histc                 C   sª   ddl m} tj d¡}t| d¡dgd�}t|jddd	tj	d
�ƒ|d< | ddd	¡|d< dgd	 |d< t
 t¡� ||j|jdd� W d   ƒ d S 1 sNw   Y  d S )Nr   rƒ  rF   ræ   rN  r?  rÞ   rß   r'   rà   r   rf   rO  r…  rP  r�   )r1   r  )r†  r„  r   rR   rS   r   rT   r   r•   râ   r2   r  r  rN  rO  )r+   r„  rˆ  rW   r   r   r    Ú%test_grouped_hist_legacy_external_err  s    üÿ"ÿz?TestDataFrameGroupByPlots.test_grouped_hist_legacy_external_errc                 C   s¢   t j d¡}t| d¡dgd�}t|jdddt jd�ƒ|d	< | d
dd¡|d< dgd |d< d}tj	t
|d�� |jddd� W d   ƒ d S 1 sJw   Y  d S )NrF   ræ   rN  r?  rÞ   rß   r'   rà   r   r   rf   rO  r…  rP  z$Specify figure size by tuple insteadrJ   Údefault)r1   r$   )r   rR   rS   r   rT   r   r•   râ   rL   rM   rN   r)   )r+   rˆ  rW   rO   r   r   r    Ú$test_grouped_hist_legacy_figsize_err  s    üÿ"ÿz>TestDataFrameGroupByPlots.test_grouped_hist_legacy_figsize_errc                 C   s¢   d}t tj d¡jdd|d�ƒ}t tj d¡jdd|d�ƒ}tj d¡jddg|d�}t|||d	œƒ}| d
¡}| ¡ }t	|ƒdksDJ ‚t	t
j ¡ ƒdksOJ ‚d S )Nr'   rF   é¦   rð   r>  é<   r   r7   )r\   Úweightr_   r_   )r   r   rR   rS   ÚnormalÚchoicer   Úgroupbyr)   rU   r;   r<   r‚   )r+   Únr–  r\   Ú
gender_intÚdf_intÚgbrq   r   r   r    Útest_grouped_hist_legacy2*  s   
z3TestDataFrameGroupByPlots.test_grouped_hist_legacy2zmsg, plot_col, by_col, layout)z1Layout of 1x1 must be larger than required size 2r–  r_   rY   )z1Layout of 1x3 must be larger than required size 4r\   rd   r7  )r  r\   rd   r  c                 C   sN   |}t jt|d�� |j|t||ƒ|d� W d   ƒ d S 1 s w   Y  d S )NrJ   ©r-  r1   r[   )rL   rM   rN   r)   ro   )r+   r]   rO   Úplot_colÚby_colr[   rW   r   r   r    Útest_grouped_hist_layout_error5  s   "ÿz8TestDataFrameGroupByPlots.test_grouped_hist_layout_errorc                 C   sX   |}t jtdd�� t|jd|jdd�}W d   ƒ n1 sw   Y  t|ddd� d S )NFr/   r\   r`   rŸ  rF   rm   )r2   r3   r4   r   r)   r_   r   rw   r   r   r    Ú test_grouped_hist_layout_warningR  s   ÿÿz:TestDataFrameGroupByPlots.test_grouped_hist_layout_warningzlayout, check_layout, figsize)re   re   N))rc   r7   re   N)rs   rs   )rt   r&   c                 C   s,   |}|j d|j||d�}t|d||d� d S )Nr\   )r-  r1   r[   r$   rf   rv   )r)   rd   r   )r+   r]   r[   Úcheck_layoutr$   rW   rq   r   r   r    Ú test_grouped_hist_layout_figsize[  s   z:TestDataFrameGroupByPlots.test_grouped_hist_layout_figsizer"   r\   rh   )r-  r[   c                 C   sZ   |}t jtdd�� t|jfddi|¤Ž}W d   ƒ n1 sw   Y  t|ddd� d S )NFr/   r1   rk   rb   rh   rm   )r2   r3   r4   r   r)   r   )r+   r]   r"   rW   rq   r   r   r    Ú#test_grouped_hist_layout_by_warninge  s
   ÿz=TestDataFrameGroupByPlots.test_grouped_hist_layout_by_warningzkwargs, axes_num, layoutr_   )rb   r.   rl   rF   r-  ©r\   r–  rd   rb   c                 C   s&   |}|j di |¤Ž}t|||d� d S )Nrm   r   )r)   r   )r+   r]   r"   rn   r[   rW   rq   r   r   r    Útest_grouped_hist_layout_axesn  s   	z7TestDataFrameGroupByPlots.test_grouped_hist_layout_axesc                 C   s`   |}t j dd¡\}}|jg d¢|d d�}t|ddd� t ||d ¡ |d j|u s.J ‚d S )NrF   rb   r§  r   ©r-  r8   r7  rm   ©r;   r<   r=   r)   r   r2   Úassert_numpy_array_equalrB   ©r+   r]   rW   r?   rq   Úreturnedr   r   r    Útest_grouped_hist_multiple_axes{  s   z9TestDataFrameGroupByPlots.test_grouped_hist_multiple_axesc                 C   s\   |}t j dd¡\}}|jd|d d�}t|ddd� t ||d ¡ |d j|u s,J ‚d S )	NrF   rb   rk   r7   )r1   r8   r7  rm   r   rª  r¬  r   r   r    Ú'test_grouped_hist_multiple_axes_no_cols…  s   zATestDataFrameGroupByPlots.test_grouped_hist_multiple_axes_no_colsc                 C   s\   |}t j dd¡\}}d}tjt|d�� |jd|d�}W d   ƒ d S 1 s'w   Y  d S )NrF   rb   z@The number of passed axes must be 1, the same as the output plotrJ   r\   r©  )r;   r<   r=   rL   rM   rN   r)   )r+   r]   rW   r?   rq   rO   r   r   r    Ú%test_grouped_hist_multiple_axes_error�  s   "ÿz?TestDataFrameGroupByPlots.test_grouped_hist_multiple_axes_errorc                 C   ón   |}|j d|jdd�\}}t|ƒ ||¡sJ ‚t|ƒ ||¡s!J ‚t|ƒ ||¡r+J ‚t|ƒ ||¡r5J ‚d S )Nr\   T)r-  r1   rì   ©r)   r_   r   Újoinedr   ©r+   r]   rW   rG   rH   r   r   r    Útest_axis_share_x˜  s   z+TestDataFrameGroupByPlots.test_axis_share_xc                 C   r±  )Nr\   T)r-  r1   rí   )r)   r_   r   r³  r   r´  r   r   r    Útest_axis_share_y¥  s   z+TestDataFrameGroupByPlots.test_axis_share_yc                 C   sp   |}|j d|jddd�\}}t|ƒ ||¡sJ ‚t|ƒ ||¡s"J ‚t|ƒ ||¡s,J ‚t|ƒ ||¡s6J ‚d S )Nr\   T)r-  r1   rì   rí   r²  r´  r   r   r    Útest_axis_share_xy±  s   z,TestDataFrameGroupByPlots.test_axis_share_xyr‹   rŒ   c                 C   sB   t tj d¡jdddd�ddgd�}|jd|d	�}t||d
� d S )NrF   r7   r'   rQ   r>  r�   r™   r?  )r1   r’   r“   rA  rB  r   r   r    r˜   ¼  s
   ÿz0TestDataFrameGroupByPlots.test_histtype_argumentN)rÕ   rÖ   r×   r‰  r‹  r�  r�  r�  r‘  r“  rž  rL   rØ   rÚ   rÙ   r¢  r£  r¥  r¦  r¨  r®  r¯  r°  rµ  r¶  r·  r˜   r   r   r   r    r‚  —  s`    &óþ
þþþ

	þ	r‚  ) Ú__doc__r  Únumpyr   rL   Úpandasr   r   r   r   r   Úpandas._testingÚ_testingr2   Úpandas.tests.plotting.commonr   r   r	   r
   r   r   r   r   r   r   r¾   r;   Úfixturer   r!   rÜ   r‚  r   r   r   r    Ú<module>   s"    0

 Y   