o
    �¨Êh‡r  ã                   @   s´   d Z ddl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mZ ddlmZ ddlmZmZmZmZmZ ddlmZ e d¡Ze d¡Zdd	„ ZG d
d„ dƒZG dd„ dƒZdS )z  Test cases for .boxplot method é    N)Ú	DataFrameÚ
MultiIndexÚSeriesÚ
date_rangeÚplottingÚtimedelta_range)Ú_check_axes_shapeÚ_check_box_return_typeÚ_check_plot_worksÚ_check_ticks_propsÚ_check_visible)Úpprint_thingÚ
matplotlibzmatplotlib.pyplotc                 C   s0   |  ¡ \}}||  ¡ ksJ ‚||  ¡ ksJ ‚d S ©N)Úget_ylimÚminÚmax)ÚcolÚaxÚy_minÚy_max© r   ú[/var/www/html/env/lib/python3.10/site-packages/pandas/tests/plotting/test_boxplot_method.pyÚ_check_ax_limits    s   r   c                   @   sf  e Zd Zdd„ Zejjej dddidgddd	gidgdd	gd
dœegdgd
dgdœdgdd
iegdd
dgiegddidgd
ddœeg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d!d"„ Zej dg d#¢¡d$d%„ ƒZd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Zej d2d3d4d5d6d7œd3d4d5d6d7œfd8d3id8d3ifd3d3d3d3d3d7œfg¡d9d:„ ƒZej d;d<d=d=d>d=d7œfd?d@d@dAd@d7œfg¡dBdC„ ƒZej dDd3d3dEœdFfg¡dGdH„ ƒZej dIg dJ¢¡dKdL„ ƒZej dMdNdOg¡dPdQ„ ƒZej dMdNdOg¡dRdS„ ƒZej dMdNdOg¡dTdU„ ƒZej dMdNdOg¡dVdW„ ƒZ ej dMdNdOg¡dXdY„ ƒZ!dS )ZÚTestDataFramePlotsc                 C   sÞ   dd l m} d}ttj d¡ g d¢|¡tj d¡ g d¢|¡tj d¡ g d¢|¡dœt d|¡d�}|jddd	�}d
d„ | 	¡ D ƒ|j
 ¡ ksKJ ‚| t ddd¡¡ | ¡  dd„ | 	¡ D ƒtt ddd¡ƒksmJ ‚d S )Nr   éP   é   )r   é   r   é   )ÚClinicalÚ	ConfirmedÚ	Discarded©ÚindexÚbarT)ÚkindÚstackedc                 S   ó   g | ]}t | ¡ ƒ‘qS r   ©ÚintÚget_text©Ú.0Úxr   r   r   Ú
<listcomp>5   ó    zDTestDataFramePlots.test_stacked_boxplot_set_axis.<locals>.<listcomp>é
   c                 S   r'   r   r(   r+   r   r   r   r.   8   r/   )Úmatplotlib.pyplotÚpyplotr   ÚnpÚrandomÚdefault_rngÚchoiceÚarangeÚplotÚget_xticklabelsr#   Úto_listÚ
set_xticksÚdrawÚlist)ÚselfÚpltÚnÚdfr   r   r   r   Útest_stacked_boxplot_set_axis'   s    ý
ú ÿz0TestDataFramePlots.test_stacked_boxplot_set_axiszkwargs, warnÚreturn_typeÚdictNÚcolumnÚoneÚtwoÚindic)rE   ÚbyÚindic2rI   Únotchr   )rI   rK   c                 C   s”   t tj d¡ d¡ttjd d… ƒg d¢d�}ddgd |d	< g d
¢d |d< tj	|dd�� t
|jfi |¤Ž W d   ƒ d S 1 sCw   Y  d S )Nr   ©é   é   rM   ©rF   rG   ÚthreeÚfour©r#   ÚcolumnsÚfoor$   r   rH   )rT   r$   rT   rJ   F©Úcheck_stacklevel)r   r3   r4   r5   Ústandard_normalr=   ÚstringÚascii_lettersÚtmÚassert_produces_warningr
   Úboxplot)r>   ÚkwargsÚwarnrA   r   r   r   Útest_boxplot_legacy1<   s   ý"ÿz'TestDataFramePlots.test_boxplot_legacy1c                 C   s,   t tj d¡ d¡ƒ}ttjj|dd� d S )Nr   rM   rD   )ÚdatarC   )	r   r3   r4   r5   rW   r
   r   Ú_corer\   )r>   Úserr   r   r   Útest_boxplot_legacy1_seriesW   s   z.TestDataFramePlots.test_boxplot_legacy1_seriesc                 C   s‚   t tj d¡ d¡ddgd�}tg d¢ƒ|d< tdgd	 ƒ|d
< tjtdd�� t|j	dd� W d   ƒ d S 1 s:w   Y  d S )Nr   ©r0   r   ÚCol1ÚCol2©rS   ©
ÚAri   ri   ri   ri   ÚBrj   rj   rj   rj   ÚXri   r0   ÚYFrU   ©rI   )
r   r3   r4   r5   r   rZ   r[   ÚUserWarningr
   r\   ©r>   rA   r   r   r   Útest_boxplot_legacy2[   s   ÿ"ÿz'TestDataFramePlots.test_boxplot_legacy2c                 C   st   t tj d¡ d¡ddgd�}tg d¢ƒ|d< tdgd	 ƒ|d
< tj ¡ \}}|jdd|d�}|j	}||u s8J ‚d S )Nr   rd   re   rf   rg   rh   rk   ri   r0   rl   )rI   r   )
r   r3   r4   r5   r   Úmplr2   Úsubplotsr\   Úaxes)r>   rA   Ú_r   rs   Úax_axesr   r   r   Útest_boxplot_legacy2_with_axd   s   ÿz/TestDataFramePlots.test_boxplot_legacy2_with_axc                 C   s|   t tj d¡ d¡ddgd�}tg d¢ƒ|d< tdgd	 ƒ|d
< tj ¡ \}}| d
¡j	|dd�}|j
}||d u s<J ‚d S )Nr   rd   re   rf   rg   rh   rk   ri   r0   rl   rs   ©r   rC   )r   r3   r4   r5   r   rq   r2   rr   Úgroupbyr\   rs   )r>   rA   Úfigr   rs   ru   r   r   r   Ú(test_boxplot_legacy2_with_ax_return_typeq   s   ÿz;TestDataFramePlots.test_boxplot_legacy2_with_ax_return_typec                 C   s¦   t tj d¡ d¡ddgd�}tg d¢ƒ|d< tdgd	 ƒ|d
< tj ¡ \}}t 	t
¡� |jddgd|dd�}W d   ƒ n1 sBw   Y  |d  ¡ |u sQJ ‚d S )Nr   rd   re   rf   rg   rh   rk   ri   r0   rl   rs   )rE   rI   r   rC   )r   r3   r4   r5   r   rq   r2   rr   rZ   r[   rn   r\   Ú
get_figure)r>   rA   ry   r   rs   r   r   r   Ú#test_boxplot_legacy2_with_multi_col|   s   ÿÿÿz6TestDataFramePlots.test_boxplot_legacy2_with_multi_colc                 C   sŒ   t tj d¡ d¡ddgd�}tg d¢ƒ|d< tdgd	 ƒ|d
< tj ¡ \}}|j|dd�}t	t
j | ¡ ¡ƒ}t| ¡ ƒt|ƒksDJ ‚d S )Nr   rd   re   rf   rg   rh   rk   ri   r0   rl   rD   rw   )r   r3   r4   r5   r   rq   r2   rr   r\   r=   Ú	itertoolsÚchainÚfrom_iterableÚvaluesÚlenÚ	get_lines)r>   rA   rt   r   ÚdÚlinesr   r   r   Útest_boxplot_legacy2_by_noneŠ   s   ÿz/TestDataFramePlots.test_boxplot_legacy2_by_nonec                 C   s   |  ¡ }t|tjjƒsJ ‚d S r   )r\   Ú
isinstancerq   r2   ÚAxes)r>   Úhist_dfÚresultr   r   r   Útest_boxplot_return_type_none—   s   z0TestDataFramePlots.test_boxplot_return_type_nonec                 C   s‚   t tj d¡ d¡ttjd d… ƒg d¢d�}d}tj	t
|d�� |jdd	� W d   ƒ n1 s1w   Y  | ¡ }t|d
ƒ d S )Nr   rL   rM   rO   rR   z,return_type must be {'axes', 'dict', 'both'}©ÚmatchÚ
NOT_A_TYPE©rC   rs   )r   r3   r4   r5   rW   r=   rX   rY   ÚpytestÚraisesÚ
ValueErrorr\   r	   )r>   rA   Úmsgr‰   r   r   r   Útest_boxplot_return_type_legacyœ   s   ýÿz2TestDataFramePlots.test_boxplot_return_type_legacy©rD   rs   Úbothc                 C   sr   t tj d¡ d¡ttjd d… ƒg d¢d�}t 	d¡� |j
|d�}W d   ƒ n1 s-w   Y  t||ƒ d S )Nr   rL   rM   rO   rR   FrŽ   )r   r3   r4   r5   rW   r=   rX   rY   rZ   r[   r\   r	   )r>   rC   rA   r‰   r   r   r   Ú+test_boxplot_return_type_legacy_return_type«   s   ýÿz>TestDataFramePlots.test_boxplot_return_type_legacy_return_typec                 C   sl   |  ¡ }tj d¡ dd|jd ¡|d< |jddgdd	�\}}t|d |ƒ t|d |ƒ |j|ks4J ‚d S )
Nr   r   é   r   ÚageÚheightÚweightÚcategoryrm   ©	Úcopyr3   r4   r5   ÚintegersÚshaper\   r   Ú_sharey)r>   rˆ   rA   Ú	height_axÚ	weight_axr   r   r   Útest_boxplot_axis_limits¸   s    z+TestDataFramePlots.test_boxplot_axis_limitsc                 C   s¶   |  ¡ }tj d¡ dd|jd ¡|d< |jg d¢dd�}|d	 |d
 |d }}}|d }t|d |ƒ t|d |ƒ t|d |ƒ |j|ksKJ ‚|j|ksRJ ‚|jd u sYJ ‚d S )Nr   r   r—   r   r˜   )r™   rš   r˜   r›   rm   )r   r   )r   r   )r   r   ©r   r   r™   rš   rœ   )r>   rˆ   rA   Úpr¡   r¢   Úage_axÚdummy_axr   r   r   Ú!test_boxplot_axis_limits_two_rowsÁ   s    z4TestDataFramePlots.test_boxplot_axis_limits_two_rowsc                 C   s<   t tj d¡ d¡ƒ}tj|jd d …df< t|jdd� d S )Nr   )r—   rN   r   rs   rŽ   )	r   r3   r4   r5   rW   ÚnanÚlocr
   r\   ro   r   r   r   Útest_boxplot_empty_columnÐ   s   z,TestDataFramePlots.test_boxplot_empty_columnc                 C   sT   t tj d¡ d¡g d¢d�}|jddd�}|jjjdksJ ‚|jjjd	ks(J ‚d S )
Nr   )r0   é   )ri   rj   ÚCÚDÚErg   rs   )é   é   )rC   Úfigsizer°   r±   )	r   r3   r4   r5   r\   ÚfigureÚbbox_inchesÚwidthr™   )r>   rA   r‰   r   r   r   Útest_figsizeÕ   s   ÿzTestDataFramePlots.test_figsizec                 C   s,   t dg d¢iƒ}t|jddd�ddd� d S )NÚa©r   r   r   rN   r¬   rM   é   )Úfontsize©Ú
xlabelsizeÚ
ylabelsize©r   r   r\   ro   r   r   r   Útest_fontsizeÝ   s   z TestDataFramePlots.test_fontsizec              
   C   sŒ   t tddd�tj d¡ d¡tj d¡ d¡d tddd� t¡tdddd�tddd�dœƒ}|j	d	d
�}dd„ | 
¡ D ƒddgksDJ ‚d S )Nz
2012-01-01éd   )Úperiodsr   ÚUTC)rÁ   Útzz1 days)r·   ÚbÚcrƒ   ÚeÚfÚbox)r%   c                 S   ó   g | ]}|  ¡ ‘qS r   ©r*   r+   r   r   r   r.   î   ó    z@TestDataFramePlots.test_boxplot_numeric_data.<locals>.<listcomp>rÄ   rÅ   )r   r   r3   r4   r5   rW   ÚastypeÚstrr   r8   r9   )r>   rA   r   r   r   r   Útest_boxplot_numeric_dataá   s   

úÿ
"z,TestDataFramePlots.test_boxplot_numeric_datazcolors_kwd, expectedÚrrÄ   ÚgrÅ   )ÚboxesÚwhiskersÚmediansÚcapsrÑ   c                 C   sR   t tj d¡ d¡ƒ}|j|dd�}| ¡ D ]\}}|| d  ¡ |ks&J ‚qd S )Nr   rd   rD   ©ÚcolorrC   r   )r   r3   r4   r5   r\   ÚitemsÚ	get_color)r>   Ú
colors_kwdÚexpectedrA   r‰   ÚkÚvr   r   r   Útest_color_kwdð   s
   ÿz!TestDataFramePlots.test_color_kwdzscheme,expectedÚdark_backgroundz#8dd3c7z#bfbbd9Údefaultz#1f77b4z#2ca02cc                 C   sj   t tj d¡ d¡ƒ}dd lm} |j |¡ |jj	dd�}| 
¡ D ]\}}|| d  ¡ |ks2J ‚q"d S )Nr   rd   r   rD   rŽ   )r   r3   r4   r5   r1   r2   ÚstyleÚuser8   rÈ   r×   rØ   )r>   ÚschemerÚ   rA   r?   r‰   rÛ   rÜ   r   r   r   Útest_colors_in_theme  s   ÿz'TestDataFramePlots.test_colors_in_themezdict_colors, msg)rÑ   Úinvalid_keyzinvalid key 'invalid_key'c                 C   sX   t tj d¡ d¡ƒ}tjt|d�� |j|dd� W d   ƒ d S 1 s%w   Y  d S )Nr   rd   r‹   rD   rÕ   )r   r3   r4   r5   r�   r�   r‘   r\   )r>   Údict_colorsr’   rA   r   r   r   Útest_color_kwd_errors#  s   "ÿz(TestDataFramePlots.test_color_kwd_errorszprops, expected))ÚboxpropsrÑ   )ÚwhiskerpropsrÒ   )ÚcappropsrÔ   )ÚmedianpropsrÓ   c                 C   sN   t dd„ dD ƒƒ}|ddii}|jd	ddi|¤Ž}|| d  ¡ dks%J ‚d S )
Nc                 S   s    i | ]}|t j d ¡ d¡“qS )r   r0   )r3   r4   r5   )r,   rÛ   r   r   r   Ú
<dictcomp>8  s     z?TestDataFramePlots.test_specified_props_kwd.<locals>.<dictcomp>ÚABCrÖ   ÚC1rC   rD   r   r   )r   r\   rØ   )r>   ÚpropsrÚ   rA   Úkwdr‰   r   r   r   Útest_specified_props_kwd-  s   z+TestDataFramePlots.test_specified_props_kwdÚvertTFc                 C   s~   t tj d¡ d¡tj d¡ d¡tj d¡ ddgd¡dœƒ}d\}}|jd|||d�}| ¡ |ks5J ‚| ¡ |ks=J ‚d S )	Nr   r0   Úgroup1Úgroup2©r·   rÄ   Úgroup©r-   ÚyrÈ   )r%   rñ   ÚxlabelÚylabel)	r   r3   r4   r5   rW   r6   r8   Ú
get_xlabelÚ
get_ylabel©r>   rñ   rA   rø   rù   r   r   r   r   Útest_plot_xlabel_ylabel>  s   ýÿz*TestDataFramePlots.test_plot_xlabel_ylabelc           
      C   sÈ   t j d¡}t|jdddd�tdƒd�}t|jdddd�tdƒd�}d\}}tjdd	d
d�\}}|jj	|d |||d� |jj	|d |||d� |D ]}	|	 
¡ |ksTJ ‚|	 ¡ |ks\J ‚qJtj ¡  d S )Nr   r   rÀ   )rÀ   rN   ©ÚsizeÚABCDrg   rö   )r0   é   T)Úncolsr²   Úsharey)r   rñ   rø   rù   r   )r3   r4   r5   r   rž   r=   r?   rr   r8   rÈ   rú   rû   rq   r2   Úclose)
r>   rñ   ÚrngÚdf1Údf2rø   rù   rt   Úaxsr   r   r   r   Útest_plot_boxL  s   z TestDataFramePlots.test_plot_boxc                 C   s|   t tj d¡ d¡tj d¡ d¡tj d¡ ddgd¡dœƒ}d\}}|j|||d�}| ¡ |ks4J ‚| ¡ |ks<J ‚d S )Nr   r0   rò   ró   rô   rö   )rñ   rø   rù   )	r   r3   r4   r5   rW   r6   r\   rú   rû   rü   r   r   r   Útest_boxplot_xlabel_ylabel\  s   ýÿz-TestDataFramePlots.test_boxplot_xlabel_ylabelc                 C   s’   t tj d¡ d¡tj d¡ d¡tj d¡ ddgd¡dœƒ}d\}}|jd|||d�}|D ]}| ¡ |ks9J ‚| ¡ |ksAJ ‚q/t	j
 ¡  d S )	Nr   r0   rò   ró   rô   rö   rõ   )rI   rñ   rø   rù   )r   r3   r4   r5   rW   r6   r\   rú   rû   rq   r2   r  )r>   rñ   rA   rø   rù   r   Úsubplotr   r   r   Ú test_boxplot_group_xlabel_ylabelj  s   ýÿz3TestDataFramePlots.test_boxplot_group_xlabel_ylabelc                 C   sŒ   t tj d¡ d¡tj d¡ d¡tj d¡ ddgd¡dœƒ}|jd|d�}|D ]}|r1| ¡ n| ¡ }|t	dgƒks>J ‚q)t
j ¡  d S )Nr   r0   rò   ró   rô   rõ   )rI   rñ   )r   r3   r4   r5   rW   r6   r\   rú   rû   r   rq   r2   r  )r>   rñ   rA   r   r  Útarget_labelr   r   r   Ú#test_boxplot_group_no_xlabel_ylabelz  s   ýÿz6TestDataFramePlots.test_boxplot_group_no_xlabel_ylabel)"Ú__name__Ú
__module__Ú__qualname__rB   r�   ÚmarkÚslowÚparametrizern   r_   rc   rp   rv   rz   r|   r…   rŠ   r“   r–   r£   r¨   r«   r¶   r¿   rÎ   rÝ   rã   ræ   rð   rý   r	  r
  r  r  r   r   r   r   r   &   s¢    


øþ	
	þúþ
üþ
üþöþ

þ
þ
	



r   c                
   @   s‚  e Zd Zdd„ Zdd„ Zejjdd„ ƒZejjdd„ ƒZ	ej 
d	d
eddgg d¢g¡dd„ ƒZdd„ Zdd„ Zejjdd„ ƒZejjdd„ ƒZejjej 
dg d¢¡dd„ ƒƒZejjej 
dg d¢¡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$g d%¢g d&¢g d'¢g¡d(d)„ ƒƒZejjej 
d*d+d,gd-d
gd.d
gg¡d/d0„ ƒƒZejjd1d2„ ƒZejjej 
d3d4d5g¡d6d7„ ƒƒZejjej 
d8d9d9gd5dgg¡d:d;„ ƒƒZejjej 
d<d9d9gd5dgg¡d=d>„ ƒƒZejjd?d@„ ƒZejjdAdB„ ƒZejjdCdD„ ƒZdEdF„ Zej 
dGdHg dI¢fdHgg dI¢fdJg dK¢fdHdJgg dL¢fdMg dL¢fg¡dNdO„ ƒZ dPdQ„ Z!dRdS„ Z"dMS )TÚTestDataFrameGroupByPlotsc                 C   s`   |j dd�}tjtdd�� t|jdd�}W d   ƒ n1 sw   Y  tt|jƒddd	� d S )
NÚgenderrm   FrU   rs   rŽ   r   )r   r   ©Úaxes_numÚlayout)	rx   rZ   r[   rn   r
   r\   r   r=   r€   ©r>   rˆ   Úgroupedrs   r   r   r   r_   ‹  s
   ÿz.TestDataFrameGroupByPlots.test_boxplot_legacy1c                 C   s.   |j dd�}t|jddd�}t|ddd� d S )	Nr  rm   Frs   ©rr   rC   r   r¤   r  )rx   r
   r\   r   r  r   r   r   Ú test_boxplot_legacy1_return_type‘  s   z:TestDataFrameGroupByPlots.test_boxplot_legacy1_return_typec                 C   s˜   t tjd d… tdƒƒ}ttj d¡ d¡t 	|¡d�}|j
dd�}tjtdd�� t|jd	d
�}W d   ƒ n1 s;w   Y  tt|jƒddd� d S )Nr0   r   ©r0   r   r"   r   ©ÚlevelFrU   rs   rŽ   )rN   r   r  )ÚziprX   rY   Úranger   r3   r4   r5   r   Úfrom_tuplesrx   rZ   r[   rn   r
   r\   r   r=   r€   ©r>   ÚtuplesrA   r  rs   r   r   r   rp   –  s   þÿz.TestDataFrameGroupByPlots.test_boxplot_legacy2c                 C   sf   t tjd d… tdƒƒ}ttj d¡ d¡t 	|¡d�}|j
dd�}t|jddd	�}t|dd
d� d S )Nr0   r   r  r"   r   r  Frs   r  r¤   r  )r!  rX   rY   r"  r   r3   r4   r5   r   r#  rx   r
   r\   r   r$  r   r   r   Ú test_boxplot_legacy2_return_type¢  s   þz:TestDataFrameGroupByPlots.test_boxplot_legacy2_return_typez subplots, warn, axes_num, layoutTr   ©r   r   )FNr   r¤   c           
      C   sÐ   t tjd d… tdƒƒ}ttj d¡ d¡t 	|¡d�}d}t
jt|d�� |jdd�jd	dd
�}W d   ƒ n1 s;w   Y  t
j|dd�� t|j|dd�}	W d   ƒ n1 sZw   Y  t|	||d� d S )Nr0   r   r  r"   z+DataFrame.groupby with axis=1 is deprecatedr‹   r   r  r   )r   ÚaxisFrU   rs   r  r  )r!  rX   rY   r"  r   r3   r4   r5   r   r#  rZ   r[   ÚFutureWarningÚunstackrx   r
   r\   r   )
r>   rr   r^   r  r  r%  rA   r’   r  rs   r   r   r   Útest_boxplot_legacy3­  s   þÿÿÿz.TestDataFrameGroupByPlots.test_boxplot_legacy3c                 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	t
j ¡ ƒdksGJ ‚t	|ƒdksOJ ‚t d¡ |jdd�}t	t
j ¡ ƒdkseJ ‚t	|ƒdksmJ ‚d S )Nr0   r   é¦   r—   rþ   é<   ÚmaleÚfemale©r™   rš   r  r  Úallrs   rŽ   r   )r   r3   r4   r5   Únormalr6   r   rx   r8   r�   rq   r2   Úget_fignumsr?   r  r\   )r>   r@   rš   r™   r  rA   ÚgbÚresr   r   r   Útest_grouped_plot_fignumsÀ  s   

z3TestDataFrameGroupByPlots.test_grouped_plot_fignumsc                 C   sx   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
¡ ¡  d S )Nr0   r   r,  r—   rþ   r-  r.  r/  r0  r  )	r   r3   r4   r5   r2  r6   r   rx   Úhist)r>   r@   rš   r™   r  rA   r   r   r   Ú&test_grouped_plot_fignums_excluded_colÑ  s   z@TestDataFrameGroupByPlots.test_grouped_plot_fignums_excluded_colc                 C   s6   |}|j dd�}t|tjƒsJ ‚t|d g d¢d� d S )Nr  rm   ©r™   rš   r›   ©Úexpected_keys)r\   r†   r3   Úndarrayr	   ©r>   rˆ   rA   r‰   r   r   r   Útest_grouped_box_return_typeÚ  s   

ÿz6TestDataFrameGroupByPlots.test_grouped_box_return_typec                 C   s,   |}|  d¡jdd�}t|dddgd� d S )Nr  rD   rŽ   ÚMaleÚFemaler:  ©rx   r\   r	   r=  r   r   r   Ú$test_grouped_box_return_type_groupbyå  s   z>TestDataFrameGroupByPlots.test_grouped_box_return_type_groupbyrC   r”   c                 C   sL   |}|  d¡j|d�}t||g d¢d� |jd|d�}t||g d¢d� d S )NÚ	classroomrŽ   ©ri   rj   r­   r:  ©rI   rC   r9  rA  )r>   rˆ   rC   rA   Úreturnedr   r   r   Ú test_grouped_box_return_type_argì  s   

ÿz:TestDataFrameGroupByPlots.test_grouped_box_return_type_argc                 C   sv   d  ¡ }ttj d¡ d¡|d�}d  ¡ }|d |d< | d¡j|d�}t|||d	� |jd|d
�}t|||d	� d S )Nz	X B C D Ar   )rM   r¬   rg   zA Br   r›   rŽ   r:  rE  )	Úsplitr   r3   r4   r5   rW   rx   r\   r	   )r>   rC   Úcolumns2r  Úcategories2rF  r   r   r   Ú.test_grouped_box_return_type_arg_duplcate_catsù  s   ÿzHTestDataFrameGroupByPlots.test_grouped_box_return_type_arg_duplcate_catsc                 C   óR   |}d}t jt|d�� |jddg|jdd� W d   ƒ d S 1 s"w   Y  d S )Nz1Layout of 1x1 must be larger than required size 2r‹   rš   r™   r¤   ©rE   rI   r  ©r�   r�   r‘   r\   r  ©r>   rˆ   rA   r’   r   r   r   Ú!test_grouped_box_layout_too_small	  s
   "ÿz;TestDataFrameGroupByPlots.test_grouped_box_layout_too_smallc                 C   sP   |}d}t jt|d�� |jg d¢ddd� W d   ƒ d S 1 s!w   Y  d S )Nz7The 'layout' keyword is not supported when 'by' is Noner‹   r9  )r   r   rD   ©rE   r  rC   )r�   r�   r‘   r\   rO  r   r   r   Ú test_grouped_box_layout_needs_by  s   ý"ÿz:TestDataFrameGroupByPlots.test_grouped_box_layout_needs_byc                 C   rL  )Nz1At least one dimension of layout must be positiver‹   rš   r™   )éÿÿÿÿrS  rM  rN  rO  r   r   r   Ú'test_grouped_box_layout_positive_layout  s
   "ÿzATestDataFrameGroupByPlots.test_grouped_box_layout_positive_layoutzgb_key, axes_num, rows)r  r   r   )r›   rN   r   )rC  r   r   c                 C   sf   |}t jtdd�� t| |¡jddd� W d   ƒ n1 sw   Y  ttj 	¡ j
||dfd� d S )NFrU   r™   rD   ©rE   rC   r   r  ©rZ   r[   rn   r
   rx   r\   r   rq   r2   Úgcfrs   )r>   rˆ   Úgb_keyr  ÚrowsrA   r   r   r   Ú,test_grouped_box_layout_positive_layout_axes#  s   ÿÿzFTestDataFrameGroupByPlots.test_grouped_box_layout_positive_layout_axeszcol, visibler™   Frš   r›   c                 C   s^   |}|j g d¢ddd�}ttj ¡ jddd� || }t| ¡ |d� t|j 	¡ g|d� d S )	Nr9  r  rs   )rE   rI   rC   r   r'  r  )Úvisible)
r\   r   rq   r2   rW  rs   r   r9   ÚxaxisÚ	get_label)r>   rˆ   r   r[  rA   rs   r   r   r   r   Útest_grouped_box_layout_visible3  s   
ÿz9TestDataFrameGroupByPlots.test_grouped_box_layout_visiblec                 C   s6   |}|  d¡jg d¢dd� ttj ¡ jddd� d S )NrC  r9  rD   rU  r   r'  r  ©rx   r\   r   rq   r2   rW  rs   )r>   rˆ   rA   r   r   r   Útest_grouped_box_layout_shapeB  s
   
ÿz7TestDataFrameGroupByPlots.test_grouped_box_layout_shapeÚcolsr   rS  c                 C   sh   |}t jtdd�� t| d¡jdd|fdd� W d   ƒ n1 s"w   Y  ttj 	¡ j
dd	d
� d S )NFrU   r›   r™   r   rD   rQ  rN   )r   r   r  rV  )r>   rˆ   ra  rA   r   r   r   Útest_grouped_box_layout_worksJ  s   
üÿz7TestDataFrameGroupByPlots.test_grouped_box_layout_worksz	rows, resrN   c                 C   s:   |}|j g d¢d|dfd� ttj ¡ jd|dfd� d S )Nr9  r  r   rM  r   r  )r\   r   rq   r2   rW  rs   )r>   rˆ   rY  r5  rA   r   r   r   Ú'test_grouped_box_layout_axes_shape_rowsW  s
   ÿzATestDataFrameGroupByPlots.test_grouped_box_layout_axes_shape_rowsz	cols, resc                 C   s@   |}|  d¡jg d¢d|fdd� ttj ¡ jdd|fd� d S )NrC  r9  r   rD   rQ  r   r  r_  )r>   rˆ   ra  r5  rA   r   r   r   Ú/test_grouped_box_layout_axes_shape_cols_groupby`  s   
ýzITestDataFrameGroupByPlots.test_grouped_box_layout_axes_shape_cols_groupbyc                 C   sr   |}t  t¡�( tj dd¡\}}| d¡jdd|d� ttj 	¡ j
ddd� W d   ƒ d S 1 s2w   Y  d S )	Nr   r›   r™   rs   ©rE   rC   r   rN   r'  r  )rZ   r[   rn   rq   r2   rr   rx   r\   r   rW  rs   )r>   rˆ   rA   rt   rs   r   r   r   Útest_grouped_box_multiple_axesk  s   "ýz8TestDataFrameGroupByPlots.test_grouped_box_multiple_axesc                 C   s&  |}t j dd¡\}}t t¡� |jg d¢dd|d d�}W d   ƒ n1 s(w   Y  t t	|j
ƒ¡}t|ddd	� t ||d ¡ |d j|u sMJ ‚t t¡� | d
¡jg d¢d|d d�}W d   ƒ n1 slw   Y  t t	|j
ƒ¡}t|ddd	� t ||d ¡ |d j|u s‘J ‚d S )Nr   r   r9  r  rs   r   )rE   rI   rC   r   )r   r   r  rC  r   re  )rq   r2   rr   rZ   r[   rn   r\   r3   Úarrayr=   r€   r   Úassert_numpy_array_equalr³   rx   )r>   rˆ   rA   ry   rs   rF  r   r   r   Ú%test_grouped_box_multiple_axes_on_figz  s.   üÿ
ÿÿz?TestDataFrameGroupByPlots.test_grouped_box_multiple_axes_on_figc              	   C   sš   |}d}t jt|d��8 tj dd¡\}}t t¡� | 	d¡j
|d�}W d   ƒ n1 s.w   Y  W d   ƒ d S W d   ƒ d S 1 sFw   Y  d S )Nz@The number of passed axes must be 3, the same as the output plotr‹   r   r   rC  )r   )r�   r�   r‘   rq   r2   rr   rZ   r[   rn   rx   r\   )r>   rˆ   rA   r’   ry   rs   r   r   r   Ú'test_grouped_box_multiple_axes_ax_error•  s   ÿý"ýzATestDataFrameGroupByPlots.test_grouped_box_multiple_axes_ax_errorc                 C   s4   t g d¢g d¢dœƒ}t|jdddd�ddd� d S )	Nr¸   )r   r   r   r   r   r   )r·   rÄ   r·   rÄ   r¹   )rI   rº   r»   r¾   ro   r   r   r   r¿      s   
ÿz'TestDataFrameGroupByPlots.test_fontsizezcol, expected_xticklabelrÜ   )ú(a, v)ú(b, v)ú(c, v)ú(d, v)ú(e, v)Úv1)ú(a, v1)ú(b, v1)ú(c, v1)ú(d, v1)ú(e, v1))
rk  rq  rl  rr  rm  rs  rn  rt  ro  ru  Nc                 C   s~   t tj d¡ tdƒd¡tj d¡ d¡tj d¡ d¡dœƒ}| d¡}t|jd|dd�}d	d
„ | 	¡ D ƒ}||ks=J ‚d S )Nr   ÚabcderÀ   )ÚcatrÜ   rp  rw  Frs   )rr   rE   rC   c                 S   rÉ   r   rÊ   r+   r   r   r   r.   Û  rË   zQTestDataFrameGroupByPlots.test_groupby_boxplot_subplots_false.<locals>.<listcomp>)
r   r3   r4   r5   r6   r=   rx   r
   r\   r9   )r>   r   Úexpected_xticklabelrA   r  rs   Úresult_xticklabelr   r   r   Ú#test_groupby_boxplot_subplots_false¦  s   (ýÿ

ÿz=TestDataFrameGroupByPlots.test_groupby_boxplot_subplots_falsec                 C   sZ   |  d¡}| d¡}d}tjt|d�� t|jdd� W d   ƒ d S 1 s&w   Y  d S )NÚobjectr  z:boxplot method requires numerical columns, nothing to plotr‹   F)rr   )rÌ   rx   r�   r�   r‘   r
   r\   )r>   rˆ   rA   r  r’   r   r   r   Útest_groupby_boxplot_objectÞ  s   

"ÿz5TestDataFrameGroupByPlots.test_groupby_boxplot_objectc           	      C   s�   g d¢g d¢g}t t|Ž ƒ}tj|ddgd�}ttj d¡ d¡g d¢|d	�}d
dg}t	|j
|dd�}ddg}dd„ | ¡ D ƒ}||ksFJ ‚d S )N)r$   r$   Úbazr}  rT   rT   Úquxr~  )rF   rG   rF   rG   rF   rG   rF   rG   ÚfirstÚsecond)Únamesr   )r   r±   rD  rR   )r$   rF   )r$   rG   rs   rU  z
(bar, one)z
(bar, two)c                 S   rÉ   r   rÊ   r+   r   r   r   r.   ø  rË   zLTestDataFrameGroupByPlots.test_boxplot_multiindex_column.<locals>.<listcomp>)r=   r!  r   r#  r   r3   r4   r5   rW   r
   r\   r9   )	r>   Úarraysr%  r#   rA   r   rs   rx  ry  r   r   r   Útest_boxplot_multiindex_columnæ  s   þýz8TestDataFrameGroupByPlots.test_boxplot_multiindex_column)#r  r  r  r_   r  r�   r  r  rp   r&  r  rn   r+  r6  r8  r>  rB  rG  rK  rP  rR  rT  rZ  r^  r`  rb  rc  rd  rf  ri  rj  r¿   rz  r|  rƒ  r   r   r   r   r  Š  s–    


þ
	






þÿ
	





þþíþ
&r  )Ú__doc__r}   rX   Únumpyr3   r�   Úpandasr   r   r   r   r   r   Úpandas._testingÚ_testingrZ   Úpandas.tests.plotting.commonr   r	   r
   r   r   Úpandas.io.formats.printingr   Úimportorskiprq   r?   r   r   r  r   r   r   r   Ú<module>   s      

  f