o
    _~#g                     @   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   /var/www/static.ux5.de/https/Moving-Object-Detection-with-OpenCV/env/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     ReZr'   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 sJ tddgddgg}d}t jt|d tj	 \}}|j
j||d W d    d S 1 sw   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   