a
    Pf                     @   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_axisZ
matplotlibc                   C   s$   t tjdtjdtddddddS )N   dtypez
2020-01-01B)Zperiodsfreqtsindexname)r   npZarangeZfloat64r    r   r   _/var/www/ai-form-bot/venv/lib/python3.9/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   sL   t jtdd* t|jfd|jji| W d    n1 s>0    Y  d S )NFZ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   figr3   r   r   r   test_hist_legacy_ax3   s    z#TestSeriesPlots.test_hist_legacy_axc                 C   s(   t jdd\}}t|j||dd d S )Nr2   T)r3   figurer4   r5   r9   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 )Nr2   T)r<   r4   r5   )r'   r   r:   _r   r   r   test_hist_legacy_fig;   s    z$TestSeriesPlots.test_hist_legacy_figc                 C   s>   t jdd\}\}}t|j||dd t|j||dd d S )Nr2      T)r<   r3   r4   r5   )r'   r   r:   ax1ax2r   r   r   test_hist_legacy_multi_ax?   s    z)TestSeriesPlots.test_hist_legacy_multi_axc                 C   sX   t jdd\}}d}tjt|d  |j|j|d W d    n1 sJ0    Y  d S )Nr2   z`Cannot pass 'figure' when using the 'by' argument, since a new 'Figure' instance will be createdmatch)r,   r<   )r6   r7   r8   pytestraises
ValueErrorr%   r   )r'   r   r:   r>   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 )Nr@   r#   r@   )r)   r   )r   r   randomdefault_rngstandard_normalr%   lenpatches)r'   dfr3   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:0    Y  t jt|d" |jjddgd W d    n1 sz0    Y  d S )Nz7The 'layout' keyword is not supported when 'by' is NonerD   r2   r2   layoutr2   )rF   rG   rH   heightr%   )r'   hist_dfrQ   rI   r   r   r   test_hist_layoutR   s    ,z TestSeriesPlots.test_hist_layoutz by, layout, axes_num, res_layout)genderr@   r2   r@   rZ   )rY      r@   )r\   r2   )category   r2   r`   r_   )r^   r@   r]   r`   r@   r@   )r^   r[   r`   )r\   r@   )r^   r]   r`   r`   r2   r`   )	classroomrb   r\   rb   c                 C   s\   |}t jtdd( t|jjt|||d}W d    n1 s@0    Y  t|||d d S )NFr+   r,   rU   axes_numrU   )r-   r.   r/   r   rV   r%   getattrr   )r'   rW   r,   rU   rh   Z
res_layoutrQ   axesr   r   r   test_hist_layout_with_by[   s    6z(TestSeriesPlots.test_hist_layout_with_byc                 C   s,   |}|j j|jddd}t|dddd d S )Nr`   r@   )      )r,   rU   r    r`   rh   rU   r    )rV   r%   r^   r   r'   rW   rQ   rj   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sxJ d S )Nr   )gcfsubplotr@   y   z   )Zmatplotlib.pyplotrr   rs   r   r   rL   rM   rN   r%   rj   rO   )r'   rr   rs   xyr:   rj   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r,   r2   )rV   r%   rY   rO   r6   r7   get_fignums)r'   rW   rQ   r   r   r   test_hist_by_no_extra_plots   s    z+TestSeriesPlots.test_hist_by_no_extra_plotsc                 C   sf   ddl m} | }| }|d}d}tjt|d |j||d W d    n1 sX0    Y  d S )Nr   )r<   o   z&passed axis not bound to passed figurerD   )r3   r<   )Zpylabr<   Zadd_subplotrF   rG   AssertionErrorr%   )r'   r   r<   Zfig1Zfig2rA   rI   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)Z
barstackedT)stepF)Z
stepfilledTc                 C   s4   t tjddd}|j|d}t||d d S )Nr@   r2   r#   histtypeZfilled)r   r   rL   rM   integersr%   r   )r'   r   expectedserr3   r   r   r   test_histtype_argument   s    z&TestSeriesPlots.test_histtype_argumentz&by, expected_axes_num, expected_layout)Nr2   rS   )br@   )r2   r@   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2r@   r   ar   r   T)r4   legendr,   rg   )r   r   rL   rM   rN   r   r   r   r%   r   r
   )r'   r,   expected_axes_numexpected_layoutr   srj   r   r   r   test_hist_with_legend   s    z%TestSeriesPlots.test_hist_with_legendr,   Nr   c                 C   sz   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    n1 sl0    Y  d S )Nr   r   r   r@   r   r   r   r    Cannot use both legend and labelrD   Tc)r   r,   label)r   r   rL   rM   rN   r   r   rF   rG   rH   r%   )r'   r,   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s0J t|j	 d d S )Nr*   r)   r3   	Frequency)
r6   r7   r8   plotr%   rO   rP   r   yaxis	get_labelr'   r   r>   r3   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)Zorientationr3   r   )r6   r7   r8   r   r%   r   Z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)alignZstackedr3   )r6   r7   r8   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   sp   t d tj \}}|jjd|d}t|dd | }t	|dgt
|  | }t	|dgt
|  d S NscipyT)logyr3   logr    )rF   importorskipr6   r7   r8   r   r%   r   get_xticklabelsr   rO   get_yticklabelsr'   r   r>   r3   ZxlabelsZylabelsr   r   r   test_hist_kde   s    
zTestSeriesPlots.test_hist_kdec                 C   s   t d t|jj d S Nr   )rF   r   r   r   kder'   r   r   r   r   test_hist_kde_plot_works   s    
z(TestSeriesPlots.test_hist_kde_plot_worksc                 C   s   t d t|jj d S r   )rF   r   r   r   densityr   r   r   r   test_hist_kde_density_works   s    
z+TestSeriesPlots.test_hist_kde_density_worksc                 C   sp   t d tj \}}|jjd|d}t|dd | }t	|dgt
|  | }t	|dgt
|  d S r   )rF   r   r6   r7   r8   r   r   r   r   r   rO   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sJJ t
|j	dgd d d S )	Nr   Tr#   r   )r   r)   colorr3   r   r   )Z
facecolors)rF   r   r6   r7   r8   r   r%   r   rO   rP   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sNJ t
|dg d S )Nr   Tr)r   r   r3   r   r   r2   )rF   r   r6   r7   r8   r   r   r   	get_linesrO   r	   )r'   r   r>   r3   linesr   r   r   test_hist_kde_color   s    
z#TestSeriesPlots.test_hist_kde_color)"__name__
__module____qualname__rF   markparametrizer(   r1   r;   r=   r?   rC   rJ   rR   rX   slowrk   rq   rx   r{   r~   r   r   r   r   r   r   Zxfailr   r   r   r   r   r   r   r   r   r   r   (   sd   

		

	


	


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    n1 s.0    Y  d S )NFr+   )r-   r.   r/   r   r%   )r'   rW   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 sl0    Y  t|d
dd |d  rJ t|dg j d S )Nr@   rK        j+2Z     ReZr#   sizer   Fr+   )r   r\   rb   rg   rS   )r   r   rL   rM   rN   r   r   int64r-   r.   r/   r   r%   r   get_visibler'   rQ   rj   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 )Nr@   r#   r2   )r   r   rL   rM   rN   r   r%   r'   rQ   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 sl0    Y  t|dd
d d S )Nr@   r#   r*   r   r   r#   r   r*   Fr+   rl   rT      rg   )r   r   rL   rM   rN   r   r   r   r-   r.   r/   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    n1 sp0    Y  d S )
Nr@   r   r   r   r#   r   r*   Fr+   )r   r   rL   rM   rN   r   r   r   r-   r.   r/   r   r%   )r'   r   rQ   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'   Zframe_or_seriesobjxfyfr   r   rj   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#   Tr`   )
cumulativer)   r   c                    s   g | ]}t | r|qS r   
isinstance.0rv   r   r   r   
<listcomp>R      zETestDataFramePlots.test_hist_df_legacy_rectangles.<locals>.<listcomp>r]         ?)	matplotlib.patchesr   r   r   r%   get_childrenr-   assert_almost_equal
get_height)r'   r   r3   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   r3   r   r   r   test_hist_df_legacy_scaleU  s    z,TestDataFramePlots.test_hist_df_legacy_scalec                 C   sF   t td}tt |jdd W d    n1 s80    Y  d S )Nr#   r   )foo)r   r   r-   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    n1 s0    Y  d S )Nr@   r#   r   l     p/ l    @spc/ r   T)utc)r   r   r   dzDhist method requires numerical or datetime columns, nothing to plot.rD   )r   r   rL   rM   r   r   r   ZastypeobjectrF   rG   rH   r%   )r'   rQ   Zdf_orI   r   r   r   *test_hist_non_numerical_or_datetime_raisesc  s(    


z=TestDataFramePlots.test_hist_non_numerical_or_datetime_raiseslayout_testNrb   )rU   expected_sizer_   rd   )r\   r\   rc   )r`   r]   )r]   r@   ra   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 )Nr@   rK   r   r   r#   r   rU   rT   r   r\   rg   )
r   r   rL   rM   rN   r   r   r   r%   r   )r'   r   rQ   rj   r   r   r   r   rX   |  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 sn0    Y  td}tj	t
|d |jdd
 W d    n1 s0    Y  d}tj	t
|d |jdd
 W d    n1 s0    Y  d S )Nr@   rK   r   r   r#   r   z1Layout of 1x1 must be larger than required size 3rD   rS   rT   z)Layout must be a tuple of (rows, columns))r2   1At least one dimension of layout must be positiver]   r]   )r   r   rL   rM   rN   r   r   r   rF   rG   rH   r%   reescape)r'   rQ   rI   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 )	Nr@   d   r@   r   r   r  r   T)r4   )r   r   rL   rM   rN   r   r   r   r   r%   r6   r7   Z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??r\   )pigrabbitr  r  r  )lengthanimalTr  r  r*   r   )r4   columnr,   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  rV   )r  r  rV   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sXJ d S )N)ffffff?皙?g333333?r  g?r  )r\   r	  g333333@r@   r2   r  )r  r  duckchickenhorse)r   Tr2   r\   )r4   r  rU   c                    s   g | ]} d |f   qS )r   )Z	get_title)r   irj   r   r   r     r   zGTestDataFramePlots.test_hist_column_order_unchanged.<locals>.<listcomp>r\   )r   r   r%   r   )r'   r  r   rQ   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 )Nr@   r2   r#   r  r   r   r   columnsr   r   r   r   rL   rM   r   r%   r   r'   r   r   rQ   r3   r   r   r   r     s
    z)TestDataFramePlots.test_histtype_argumentr,   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 r|d u r|d }t	||D ]\}	}
t
|
|	 qd S )Nr2   r@   r   r   r   r   r   r   r   r   r@   r   r   T)r4   r   r,   r  rg   r   )r   r   r   rL   rM   rN   r   r%   r   zipr
   )r'   r,   r  r   r   Zexpected_labelsr   rQ   rj   Zexpected_labelr3   r   r   r   r     s.    
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    n1 sr0    Y  d S )Nr   r   r   r   r#  r@   r$  r   r   r%  r   rD   Tr   )r   r,   r  r   )
r   r   r   rL   rM   rN   rF   rG   rH   r%   )r'   r,   r  r   rQ   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sFJ d S )Nr@   rK   r*   r   r#   r   r   rL   rM   rN   r6   r7   r8   r   r%   rO   rP   r'   rQ   r>   r3   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 )Nr@   r#   r`   Ar   CDr  rv   rw   r*   Er   r   r'  r(  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 )Nr@   r*  r+  r  rv   rw   r*   r/  )r3   r   r'  r(  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 |  svJ |j  sJ d S )Nr@   r   r`   abcdr  r   T)r   r3   r   r3   r   secondary_y	b (right)labels)r   r   rL   rM   rN   listr6   r7   r8   r   r%   r
   	get_yaxisr   Zright_axr(  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 |  sJ d S )Nr@   r2  r3  r  r   Tr   r5  r3   r   r4  	a (right)r6  r7  r   r   rL   rM   rN   r9  r6   r7   r8   r   r%   r
   Zleft_axr:  r   r(  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  szJ |  sJ d S )Nr@   r2  r3  r  r   Tr<  r   )r3   r   r=  r7  r>  r(  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    n1 sv0    Y  d S )Nzmatplotlib.patchesr  333333?皙?)r  g?r
  abcr  )      ?rA  ?)rB  r  rA  )rA  rD  rD  )rE  rE  rE  )r3   weightsc                    s   g | ]}t | jr|qS r   r   r   r   Zmpl_patchesr   r   r     r   zFTestDataFramePlots.test_hist_with_nans_and_weights.<locals>.<listcomp>c                 S   s   g | ]}|  qS r   r   r   rectr   r   r   r     r   c                    s   g | ]}t | jr|qS r   rG  r   rH  r   r   r     s   c                 S   s   g | ]}|  qS r   rI  rJ  r   r   r   r     r   c                 s   s   | ]\}}||kV  qd S r$   r   )r   Zh0Zh1r   r   r   	<genexpr>  r   zETestDataFramePlots.test_hist_with_nans_and_weights.<locals>.<genexpr>rD  rE  z?weights must have the same shape as data, or be a single columnrD   )rF   r   r   r   nanr9  arrayr6   r7   r8   r   r%   r   allr&  rG   rH   )r'   rQ   rF  Z	no_nan_dfZno_nan_weightsr>   Zax0r   ZheightsrA   Zno_nan_rectsZno_nan_heightsZidxerror_weightsrI   rB   r   rH  r   test_hist_with_nans_and_weightsx  s0    

z2TestDataFramePlots.test_hist_with_nans_and_weights) r   r   r   rF   r   r   r   r   r   r   r   r   r   r   r   r   r   rX   r  r  r  r  r   r   r   r)  r0  r1  r;  r?  r@  rP  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   r,  r  r   r   r   r   r`   r-  Xr.  ry   rb   rg   ) pandas.plotting._matplotlib.histrS  r   rL   rM   r   rN   r   r   r   r,  r-  r   r'   rS  rsrQ   rj   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   r,  r  r   r   r   r   r   r`   r-  rT  r.  ry   rb   rg   )r   rL   rM   r   rN   r   r   r   r%   r-  r   r'   rW  rQ   rj   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 )Nr@   r   r,  r  r   r   r#   r   r   r   r`   r-  rT  r.  r   )r,   Zrotr2   rS   rg   r  )r   rL   rM   r   rN   r   r   r   r%   r   r   rY  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 ]2}	 fdd|	 D }
|
d  }t|d qt|||||d d S )Nr   r   rR  r@   r   r,  r  r   r   r#   r   r   r`   r-  r   r   T)r,   r   r)   r   r   r   r   r   c                    s   g | ]}t | r|qS r   r   r   r   r   r   r     r   zZTestDataFrameGroupByPlots.test_grouped_hist_legacy_grouped_hist_kwargs.<locals>.<listcomp>r]   r   r   )r   r   rU  rS  r   rL   rM   r   rN   r   r   r   r,  r-  Zravelr   r   r-   r   r   )r'   rS  rW  rQ   r   r   r   r   rj   r3   r   rV   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   rR  r@   r   r,  r  r   r   r#   r   r   r`   r-  rT  r.  T)r,   r   r   r   )rU  rS  r   rL   rM   r   rN   r   r   r   r,  r-  r   rV  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    n1 s0    Y  d S )Nr   rR  r@   r   r,  r  r   r   r#   r   r   r`   r-  rT  r.  r   )r,   r   )rU  rS  r   rL   rM   r   rN   r   r   r   r-   r   r   r,  r-  )r'   rS  rW  rQ   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    n1 s0    Y  d S )Nr@   r   r,  r  r   r   r#   r   r   r   r`   r-  rT  r.  z$Specify figure size by tuple insteadrD   default)r,   r    )r   rL   rM   r   rN   r   r   r   rF   rG   rH   r%   )r'   rW  rQ   rI   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sJ t	t
j dksJ d S )Nr#   r@      r   r  <   r   r2   )rV   weightrY   rY   )r   r   rL   rM   normalchoicer   groupbyr%   rO   r6   r7   rz   )r'   nrc  rV   Z
gender_intZdf_intgbrj   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 2rc  rY   rS   )z1Layout of 1x3 must be larger than required size 4rV   r^   r  )r   rV   r^   r  c                 C   sL   |}t jt|d& |j|t|||d W d    n1 s>0    Y  d S )NrD   r  r,   rU   )rF   rG   rH   r%   ri   )r'   rW   rI   Zplot_colZby_colrU   rQ   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<0    Y  t|ddd d S )NFr+   rV   rZ   rj  r@   rg   )r-   r.   r/   r   r%   rY   r   rp   r   r   r    test_grouped_hist_layout_warningR  s    $z:TestDataFrameGroupByPlots.test_grouped_hist_layout_warningzlayout, check_layout, figsize)r_   r_   N))r]   r2   r_   N)rl   rl   )rm   r"   c                 C   s,   |}|j d|j||d}t|d||d d S )NrV   )r  r,   rU   r    r`   ro   )r%   r^   r   )r'   rW   rU   Zcheck_layoutr    rQ   rj   r   r   r    test_grouped_hist_layout_figsize[  s    z:TestDataFrameGroupByPlots.test_grouped_hist_layout_figsizer   rV   rb   )r  rU   c                 C   sZ   |}t jtdd& t|jfddi|}W d    n1 s>0    Y  t|ddd d S )NFr+   r,   re   r\   rb   rg   )r-   r.   r/   r   r%   r   )r'   rW   r   rQ   rj   r   r   r   #test_grouped_hist_layout_by_warninge  s    4z=TestDataFrameGroupByPlots.test_grouped_hist_layout_by_warningzkwargs, axes_num, layoutrY   )r\   r*   rf   r@   r  rV   rc  r^   r\   c                 C   s&   |}|j f i |}t|||d d S )Nrg   )r%   r   )r'   rW   r   rh   rU   rQ   rj   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 )Nr@   r\   ro  r   r  r3   r  rg   r6   r7   r8   r%   r   r-   Zassert_numpy_array_equalr<   r'   rW   rQ   r:   rj   Z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 sXJ d S )	Nr@   r\   re   r2   )r,   r3   r  rg   r   rr  rs  r   r   r   'test_grouped_hist_multiple_axes_no_cols  s    zATestDataFrameGroupByPlots.test_grouped_hist_multiple_axes_no_colsc                 C   sZ   |}t jdd\}}d}tjt|d |jd|d}W d    n1 sL0    Y  d S )Nr@   r\   z@The number of passed axes must be 1, the same as the output plotrD   rV   rq  )r6   r7   r8   rF   rG   rH   r%   )r'   rW   rQ   r:   rj   rI   r   r   r   %test_grouped_hist_multiple_axes_error  s
    z?TestDataFrameGroupByPlots.test_grouped_hist_multiple_axes_errorc                 C   sn   |}|j d|jdd\}}t|||s.J t|||sBJ t|||rVJ t|||rjJ d S )NrV   T)r  r,   r   r%   rY   r   joinedr   r'   rW   rQ   rA   rB   r   r   r   test_axis_share_x  s    z+TestDataFrameGroupByPlots.test_axis_share_xc                 C   sn   |}|j d|jdd\}}t|||s.J t|||sBJ t|||rVJ t|||rjJ d S )NrV   T)r  r,   r   )r%   rY   r   rx  r   ry  r   r   r   test_axis_share_y  s    z+TestDataFrameGroupByPlots.test_axis_share_yc                 C   sp   |}|j d|jddd\}}t|||s0J t|||sDJ t|||sXJ t|||slJ d S )NrV   T)r  r,   r   r   rw  ry  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 )Nr@   r2   r#   rK   r  r   r   r  )r,   r   r   r!  r"  r   r   r   r     s
    z0TestDataFrameGroupByPlots.test_histtype_argumentN)r   r   r   rX  rZ  r[  r\  r]  r^  r`  ri  rF   r   r   r   rk  rl  rm  rn  rp  rt  ru  rv  rz  r{  r|  r   r   r   r   r   rQ    s^   &


		rQ  ) __doc__r  numpyr   rF   Zpandasr   r   r   r   r   Zpandas._testingZ_testingr-   Zpandas.tests.plotting.commonr   r   r	   r
   r   r   r   r   r   r   r   r6   Zfixturer   r   r   rQ  r   r   r   r   <module>   s    0

 Y   