o
    d`                     @   s   d 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mZmZmZmZmZ ddlmZ ddlmZmZ ddlmZ e	jG dd deZe	jG dd	 d	eZdS )
z  Test cases for .boxplot method     N)	DataFrame
MultiIndexSeries
date_rangeplottingtimedelta_range)TestPlotBase_check_plot_works)pprint_thingc                   @   sr  e Zd Zdd Ze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dd Zejdddddddddddfddiddifddddddfgdd Zejddd d d!d dfd"d#d#d$d#dfgd%d& Zejd'ddd(d)fgd*d+ Zejd,g d-d.d/ Zejd0d1d2gd3d4 Zejd0d1d2gd5d6 Zejd0d1d2gd7d8 Zd9S ):TestDataFramePlotsc                 C   s   dd l m} d}ttjg d|tjg d|tjg d|dtd|d}|jddd}d	d
 | D |j	
 ksBJ |tddd |  dd
 | D ttdddksdJ d S )Nr   P   )r            )Clinical	Confirmed	DiscardedindexbarT)kindstackedc                 S      g | ]}t | qS  intget_text.0xr   r   n/var/www/html/visualizacion-main/env/lib/python3.10/site-packages/pandas/tests/plotting/test_boxplot_method.py
<listcomp>,       zDTestDataFramePlots.test_stacked_boxplot_set_axis.<locals>.<listcomp>
   c                 S   r   r   r   r   r   r   r    r!   /   r"   )matplotlib.pyplotpyplotr   nprandomchoicearangeplotget_xticklabelsr   to_list
set_xticksdrawlist)selfpltndfaxr   r   r    test_stacked_boxplot_set_axis   s    
 z0TestDataFramePlots.test_stacked_boxplot_set_axisc                 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ddgdd t	j
tdd t|jddgdd W d    n1 sRw   Y  t|jdddgd t	j
tdd t|jdd W d    n1 szw   Y  t	j
tdd t|jddgd W d    n1 sw   Y  ttjj|d dd t|jddd t	j
tdd t|jddd W d    d S 1 sw   Y  d S )N      onetwothreefourr   columnsfoor   r   indic)r?   r   r?   r   indic2dictreturn_typer9   r:   columnrD   Fcheck_stacklevel)rF   byrI   )datarD   r   )notchrD   )rI   rL   )r   r&   r'   randnr/   stringascii_lettersr	   boxplottmassert_produces_warningUserWarningr   _corer0   r3   r   r   r    test_boxplot_legacy13   s0   "z'TestDataFramePlots.test_boxplot_legacy1c                 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    n1 s7w   Y  | j
 \}}|j	dd|d}|j}||u sTJ | j
 \}}|d	j	|dd}|j}||d u spJ | j
 \}}tt |j	ddgd|dd}W d    n1 sw   Y  |d  |u sJ | j
 \}}|j	|dd}ttj| }t| t|ksJ d S )Nr#   r   Col1Col2r>   )
ArZ   rZ   rZ   rZ   Br[   r[   r[   r[   XrZ   YFrG   rJ   )rI   r4   axes)r4   rD   )rF   rI   r4   rD   rB   )r   r&   r'   randr   rQ   rR   rS   r	   rP   r1   subplotsr^   groupby
get_figurer/   	itertoolschainfrom_iterablevalueslen	get_lines)r0   r3   figr4   r^   ax_axesdlinesr   r   r    test_boxplot_legacy2L   s2   z'TestDataFramePlots.test_boxplot_legacy2c                 C   s   |  }t|| jjsJ d S N)rP   
isinstancer1   Axes)r0   hist_dfresultr   r   r    test_boxplot_return_type_nonen   s   z0TestDataFramePlots.test_boxplot_return_type_nonec                 C   sF  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 s/w   Y  |
 }| |d	 td
 |j
dd}W d    n1 sTw   Y  | |d td
 |j
d	d}W d    n1 suw   Y  | |d	 td
 |j
dd}W d    n1 sw   Y  | |d d S )Nr6   r7   r8   r=   z,return_type must be {'axes', 'dict', 'both'}match
NOT_A_TYPErC   r^   FrB   both)r   r&   r'   rM   r/   rN   rO   pytestraises
ValueErrorrP   _check_box_return_typerQ   rR   )r0   r3   msgrr   r   r   r    test_boxplot_return_type_legacys   s.   z2TestDataFramePlots.test_boxplot_return_type_legacyc           	      C   s   dd }|  }tjdd|jd |d< |jddgd	d
\}}||d | ||d | |j|ks5J |jg dd	d
}|d |d |d }}}|d }||d | ||d | ||d | |j|kslJ |j|kssJ |jd u szJ d S )Nc                 S   s0   |  \}}||  ksJ ||  ksJ d S rn   )get_ylimminmax)colr4   y_miny_maxr   r   r    _check_ax_limits   s   zETestDataFramePlots.test_boxplot_axis_limits.<locals>._check_ax_limitsr      r   ageheightweightcategoryrJ   )r   r   r   )r   r   )r   r   )r   r   r   r   )copyr&   r'   randintshaperP   _sharey)	r0   rq   r   r3   	height_ax	weight_axpage_axdummy_axr   r   r    test_boxplot_axis_limits   s    z+TestDataFramePlots.test_boxplot_axis_limitsc                 C   s8   t tjdd}tj|jd d df< t|jdd d S )Nr   r7   r   r^   rC   )r   r&   r'   rM   nanlocr	   rP   rU   r   r   r    test_boxplot_empty_column   s   z,TestDataFramePlots.test_boxplot_empty_columnc                 C   sP   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#      )rZ   r[   CDErY   r^   )      )rD   figsizer   r   )	r   r&   r'   r_   rP   figurebbox_incheswidthr   )r0   r3   rr   r   r   r    test_figsize   s   zTestDataFramePlots.test_figsizec                 C   s.   t dg di}| j|jdddddd d S )Nar   r   r   r7   r   r6      )fontsize
xlabelsize
ylabelsizer   _check_ticks_propsrP   rU   r   r   r    test_fontsize   s   
z TestDataFramePlots.test_fontsizec              
   C   s   t tdddtjdtj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s>J d S )Nz
2012-01-01d   )periodsr   UTC)r   tzz1 days)r   bcrk   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   r&   r'   rM   astypestrr   r*   r+   )r0   r3   r4   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   sN   t tjdd}|j|dd}| D ]\}}|| d  |ks$J qd S )Nr#   r   rB   colorrD   r   )r   r&   r'   r_   rP   items	get_color)r0   
colors_kwdexpectedr3   rr   kvr   r   r    test_color_kwd   s
   z!TestDataFramePlots.test_color_kwdzscheme,expecteddark_backgroundz#8dd3c7z#bfbbd9defaultz#1f77b4z#2ca02cc                 C   sf   t tjdd}dd lm} |j| |jj	dd}|
 D ]\}}|| d  |ks0J q d S )Nr#   r   r   rB   rC   )r   r&   r'   r_   r$   r%   styleuser*   r   r   r   )r0   schemer   r3   r1   rr   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   sT   t tjdd}tjt|d |j|dd W d    d S 1 s#w   Y  d S )Nr#   r   rt   rB   r   )r   r&   r'   r_   rx   ry   rz   rP   )r0   dict_colorsr|   r3   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 qS )r   )r&   r'   )r   r   r   r   r    
<dictcomp>  s    z?TestDataFramePlots.test_specified_props_kwd.<locals>.<dictcomp>ABCr   C1rD   rB   r   r   )r   rP   r   )r0   propsr   r3   kwdrr   r   r   r    test_specified_props_kwd  s   z+TestDataFramePlots.test_specified_props_kwdvertTFc                 C   sl   t tjdtjdtjddgdd}d\}}|jd|||d}| |ks,J | |ks4J d S )Nr   group1group2r   r   groupr   yr   )r   r   xlabelylabel)r   r&   r'   rM   r(   r*   
get_xlabel
get_ylabelr0   r   r3   r   r   r4   r   r   r    test_plot_xlabel_ylabel  s   

z*TestDataFramePlots.test_plot_xlabel_ylabelc                 C   sj   t tjdtjdtjddgdd}d\}}|j|||d}| |ks+J | |ks3J d S )Nr   r   r   r   r   )r   r   r   )r   r&   r'   rM   r(   rP   r   r   r   r   r   r    test_boxplot_xlabel_ylabel$  s   

z-TestDataFramePlots.test_boxplot_xlabel_ylabelc                 C   s   t tjdtjdtjddgdd}d\}}|jd|||d}|D ]}| |ks0J | |ks8J q&| j	  |jd|d}|D ]}|rO| n| }|t
dgks\J qG| j	  d S )	Nr   r   r   r   r   r   )rI   r   r   r   )rI   r   )r   r&   r'   rM   r(   rP   r   r   r1   closer
   )r0   r   r3   r   r   r4   subplottarget_labelr   r   r     test_boxplot_group_xlabel_ylabel2  s"   


z3TestDataFramePlots.test_boxplot_group_xlabel_ylabelN)__name__
__module____qualname__r5   rx   markslowrV   rm   rs   r}   r   r   r   r   r   parametrizer   r   r   r   r   r   r   r   r   r   r    r      sr    
"





	

r   c                
   @   s   e Zd Zdd Zejjdd Zdd Z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g dfdgg dfdg dfddgg dfdg dfgdd Zdd Zdd ZdS )TestDataFrameGroupByPlotsc                 C   s   |j dd}tjtdd t|jdd}W d    n1 sw   Y  | jt|jddd	 t|jddd
}| j|ddd	 d S )NgenderrJ   FrG   r^   rC   r   r   r   axes_numlayoutr`   rD   r   r   )	ra   rQ   rR   rS   r	   rP   _check_axes_shaper/   rf   )r0   rq   groupedr^   r   r   r    rV   K  s   z.TestDataFrameGroupByPlots.test_boxplot_legacy1c                 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 s9w   Y  | jt|jdd
d t|jddd}| j|ddd d S )Nr#   r   r   r   levelFrG   r^   rC   )r7   r   r   r   r   )ziprN   rO   ranger   r&   r'   r_   r   from_tuplesra   rQ   rR   rS   r	   rP   r   r/   rf   r0   tuplesr3   r   r^   r   r   r    rm   S  s   z.TestDataFrameGroupByPlots.test_boxplot_legacy2c                 C   s   t tjd d td}ttjddt	|d}|j
ddjddd}tjtdd	 t|jd
d}W d    n1 s>w   Y  | jt|jddd t|jdd
d}| j|ddd d S )Nr#   r   r   r   r   r   )r   axisFrG   r^   rC   r   r   r   r   r   )r  rN   rO   r  r   r&   r'   r_   r   r  unstackra   rQ   rR   rS   r	   rP   r   r/   rf   r  r   r   r    test_boxplot_legacy3_  s   z.TestDataFrameGroupByPlots.test_boxplot_legacy3c                 C   s   d}t tjjdd|d}t tjjdd|d}tjdjddg|d}t|||d	}|d
}| }t	| j
 dksAJ t	|dksIJ t  |jdd}t	| j
 dks^J t	|dksfJ t  |d
 }t  d S )Nr#      r   )size<   *   malefemale)r   r   r   r   r   r^   rC   r   )r   r&   r'   normalRandomStater(   r   ra   r*   rg   r1   get_fignumsrQ   r   rP   hist)r0   r2   r   r   r   r3   gbresr   r   r    test_grouped_plot_fignumsi  s    
z3TestDataFrameGroupByPlots.test_grouped_plot_fignumsc           	      C   s"  |}|j dd}t|tjsJ | j|d g dd |dj dd}| j|dddgd d	 }ttj	d
d|d}d }|d |d< dD ]F}|dj |d}| j||g dd |j d|d}| j||g dd |dj |d}| j|||d |j d|d}| j|||d qHd S )Nr   rJ   r   r   r   )expected_keysrB   rC   MaleFemalezX B C D A G Y N Q O2   r#   rY   zA B C D E F G H I Jr   r   )rB   r^   rw   	classroomrZ   r[   r   )rI   rD   )
rP   ro   r&   ndarrayr{   ra   splitr   r'   rM   )	r0   rq   r3   rr   columns2df2categories2treturnedr   r   r    test_grouped_box_return_type  s0   

z6TestDataFrameGroupByPlots.test_grouped_box_return_typec                 C   s<  |}d}t jt|d |jddg|jdd W d    n1 s!w   Y  d}t jt|d |jg dd	d
d W d    n1 sDw   Y  d}t jt|d |jddg|jdd W d    n1 shw   Y  tjtdd t|	djdd
d}W d    n1 sw   Y  | j
| j jddd tjtdd t|	djdd
d}W d    n1 sw   Y  | j
| j jddd tjtdd t|	djdd
d}W d    n1 sw   Y  | j
| j jddd |jg dddd}| j
| j jddd |d fD ]}| j| dd | j|j gdd q|d |d fD ]}| |  | |j g q2|	djg dd
d}| j
| j jddd tjtdd t|	djddd
d}W d    n	1 s}w   Y  | j
| j jddd tjtdd t|	djddd
d}W d    n	1 sw   Y  | j
| j jddd |jg dddd}| j
| j jddd |jg ddd d}| j
| j jdd!d |	djg dd"d
d}| j
| j jdd"d |	djg dd#d
d}| j
| j jdd$d d S )%Nz1Layout of 1x1 must be larger than required size 2rt   r   r   r   )rF   rI   r   z7The 'layout' keyword is not supported when 'by' is Noner  )r   r   rB   )rF   r   rD   z1At least one dimension of layout must be positive)r&  FrG   r   rE   r   r   r   r   r7   r  r  r   r^   )rF   rI   rD   )visible)r   r   )r   r&  )r7   r   )r&  r   )r   r   )r   r7   )r   r&  r   r   )rx   ry   rz   rP   r   rQ   rR   rS   r	   ra   r   r1   gcfr^   _check_visibler+   xaxis	get_label)r0   rq   r3   r|   r   r^   r4   r   r   r    test_grouped_box_layout  s   









z1TestDataFrameGroupByPlots.test_grouped_box_layoutc              	   C   s(  |}t t( | jdd\}}|djdd|d | j| j j	ddd W d    n1 s2w   Y  | jdd	\}}t t |jg d
dd|d d}W d    n1 s]w   Y  t
t|j}| j|d	dd t ||d  |d j|u sJ t t |djg d
d|d d}W d    n1 sw   Y  t
t|j}| j|d	dd t ||d  |d j|u sJ d}tjt|d8 | jdd	\}}t t |dj|d}W d    n1 sw   Y  W d    d S W d    d S 1 sw   Y  d S )Nr   r   r   r^   )rF   rD   r4   r7   r  r   r   r  r   r   )rF   rI   rD   r4   r(  r  r   z@The number of passed axes must be 3, the same as the output plotrt   )r4   )rQ   rR   rS   r1   r`   ra   rP   r   r)  r^   r&   arrayr/   rf   assert_numpy_array_equalr   rx   ry   rz   )r0   rq   r3   ri   r^   r$  r|   r   r   r    test_grouped_box_multiple_axes   sJ   
$z8TestDataFrameGroupByPlots.test_grouped_box_multiple_axesc                 C   s6   t g dg dd}| j|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   rU   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))
r1  r7  r2  r8  r3  r9  r4  r:  r5  r;  Nc                 C   sl   t tjtddtjdtjdd}|d}t|jd|dd}dd	 |	 D }||ks4J d S )
Nabcder   )catr   r6  r=  Fr^   )r`   rF   rD   c                 S   r   r   r   r   r   r   r    r!   h  r   zQTestDataFrameGroupByPlots.test_groupby_boxplot_subplots_false.<locals>.<listcomp>)
r   r&   r'   r(   r/   r_   ra   r	   rP   r+   )r0   r   expected_xticklabelr3   r   r^   result_xticklabelr   r   r    #test_groupby_boxplot_subplots_false3  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 plotrt   F)r`   )r   ra   rx   ry   rz   r	   rP   )r0   rq   r3   r   r|   r   r   r    test_groupby_boxplot_objectk  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sDJ d S )N)r   r   bazrC  r?   r?   quxrD  )r9   r:   r9   r:   r9   r:   r9   r:   firstsecond)namesr   r   r  r=   )r   r9   )r   r:   r^   rE   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   r&   r'   rM   r	   rP   r+   )	r0   arraysr  r   r3   r   r^   r>  r?  r   r   r    test_boxplot_multiindex_columns  s   z8TestDataFrameGroupByPlots.test_boxplot_multiindex_column)r   r   r   rV   rx   r   r   rm   r	  r  r%  r-  r0  r   r   r@  rB  rI  r   r   r   r    r   I  s:    


"
]
,


&r   )__doc__rc   rN   numpyr&   rx   pandas.util._test_decoratorsutil_test_decoratorstdpandasr   r   r   r   r   r   pandas._testing_testingrQ   pandas.tests.plotting.commonr   r	   pandas.io.formats.printingr
   skip_if_no_mplr   r   r   r   r   r    <module>   s        .