
    Owg                         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j2                  d      Zej6                  d        Z G d d      Z G d	 d
      Z G d d      Zy)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                  |    t        t        j                  dt        j                        t	        ddd      d      S )N   dtypez
2020-01-01B)periodsfreqtsindexname)r   nparangefloat64r        ]/var/www/horilla/myenv/lib/python3.12/site-packages/pandas/tests/plotting/test_hist_method.pyr   r      s0    
		"BJJ'r< r"   c                      e Zd Zej                  j                  di ddiddig      d        Zej                  j                  di ddig      d	        Zd
 Zd Z	d Z
d Zd Zd Zd Zej                  j                  ej                  j                  dg dg dg dg dg dg dg dg      d               Zd Zd Zd Zd Zej                  j                  dg d      d         Zej                  j                  d!d"d#g      d$        Zej                  j                  d%d&d'g      d(        Zd) Zd* Zd+ Zej                  j7                  d,-      d.        Zd/ Zd0 Zej                  j7                  d,-      d1        Zd2 Z d3 Z!y&)4TestSeriesPlotskwargsgridFfigsize   
   c                 0    t        |j                  fi | y N)r   histselfr   r&   s      r#   test_hist_legacy_kwargsz'TestSeriesPlots.test_hist_legacy_kwargs)   s    "'',V,r"   bins   c                     t        j                  t        d      5  t        |j                  fd|j
                  j                  i| d d d        y # 1 sw Y   y xY w)NFcheck_stacklevelby)tmassert_produces_warningUserWarningr   r.   r   monthr/   s      r#   test_hist_legacy_kwargs_warningz/TestSeriesPlots.test_hist_legacy_kwargs_warning-   sK     ''eL 	DbggC"((..CFC	D 	D 	Ds   -AAc                 z    t         j                  j                  dd      \  }}t        |j                  |d       y )N   T)axdefault_axesmplpyplotsubplotsr   r.   r0   r   figr?   s       r#   test_hist_legacy_axz#TestSeriesPlots.test_hist_legacy_ax3   s,    **%%a+R"''bt<r"   c                 |    t         j                  j                  dd      \  }}t        |j                  ||d       y )Nr>   T)r?   figurer@   rA   rE   s       r#   test_hist_legacy_ax_and_figz+TestSeriesPlots.test_hist_legacy_ax_and_fig7   s.    **%%a+R"''b4Hr"   c                 z    t         j                  j                  dd      \  }}t        |j                  |d       y )Nr>   T)rI   r@   rA   )r0   r   rF   _s       r#   test_hist_legacy_figz$TestSeriesPlots.test_hist_legacy_fig;   s,    $$Q*Q"''#DAr"   c                     t         j                  j                  dd      \  }\  }}t        |j                  ||d       t        |j                  ||d       y )Nr>      T)rI   r?   r@   rA   )r0   r   rF   ax1ax2s        r#   test_hist_legacy_multi_axz)TestSeriesPlots.test_hist_legacy_multi_ax?   sD    **--a3Zc3"''##DI"''##DIr"   c                     t         j                  j                  dd      \  }}d}t        j                  t
        |      5  |j                  |j                  |       d d d        y # 1 sw Y   y xY w)Nr>   z`Cannot pass 'figure' when using the 'by' argument, since a new 'Figure' instance will be createdmatch)r7   rI   )rB   rC   rD   pytestraises
ValueErrorr.   r   )r0   r   rF   rL   msgs        r#   test_hist_legacy_by_fig_errorz-TestSeriesPlots.test_hist_legacy_by_fig_errorD   s_    $$Q*Q' 	 ]]:S1 	-GGrxxG,	- 	- 	-s   A((A1c                     t        t        j                  j                  d      j	                  d            }|j                  d      d   d   }t        |j                        dk(  sJ y )NrO   r+   rO   )r2   r   )r   r   randomdefault_rngstandard_normalr.   lenpatches)r0   dfr?   s      r#   test_hist_bins_legacyz%TestSeriesPlots.test_hist_bins_legacyM   sU    ryy,,Q/??HIWW!W_Q"2::!###r"   c                 @   |}d}t        j                  t        |      5  |j                  j	                  d       d d d        t        j                  t        |      5  |j                  j	                  ddg       d d d        y # 1 sw Y   LxY w# 1 sw Y   y xY w)Nz7The 'layout' keyword is not supported when 'by' is NonerT   r>   r>   layoutr>   )rV   rW   rX   heightr.   )r0   hist_dfrb   rY   s       r#   test_hist_layoutz TestSeriesPlots.test_hist_layoutR   s    G]]:S1 	*IINN&N)	* ]]:S1 	*IINN1a&N)	* 	*	* 	*	* 	*s   B BBBz by, layout, axes_num, res_layout)genderrO   r>   rO   rl   )rk      rO   )rn   r>   )category   r>   rr   rq   )rp   rO   ro   rr   rO   rO   )rp   rm   rr   )rn   rO   )rp   ro   rr   rr   r>   rr   )	classroomrt   rn   rt   c                     |}t        j                  t        d      5  t        |j                  j
                  t        ||      |      }d d d        t        ||       y # 1 sw Y   xY w)NFr5   r7   rg   axes_numrg   )r8   r9   r:   r   rh   r.   getattrr	   )r0   ri   r7   rg   r{   
res_layoutrb   axess           r#   test_hist_layout_with_byz(TestSeriesPlots.test_hist_layout_with_by[   s]     
 ''eL 	X$RYY^^BPVWD	X$*E	X 	Xs   -A""A+c                 v    |}|j                   j                  |j                  dd      }t        |ddd       y )Nrr   rO   )      )r7   rg   r(   rr   r{   rg   r(   )rh   r.   rp   r	   r0   ri   rb   r~   s       r#   test_hist_layout_with_by_shapez.TestSeriesPlots.test_hist_layout_with_by_shaper   s1    yy~~VW~M$67Kr"   c                    ddl m}m} t        t        j
                  j                  d      j                  d            }t        t        j
                  j                  d      j                  d            } |d       |j                           |d       |j                           |       }|j                  }t        |      dk(  sJ y )Nr   )gcfsubplotrO   y   z   )matplotlib.pyplotr   r   r   r   r]   r^   r_   r.   r~   r`   )r0   r   r   xyrF   r~   s          r#   test_hist_no_overlapz$TestSeriesPlots.test_hist_no_overlapx   s    	

 299((+;;A>?299((+;;A>?		exx4yA~~r"   c                     |}|j                   j                  |j                         t        t        j
                  j                               dk(  sJ y )Nr7   r>   )rh   r.   rk   r`   rB   rC   get_fignums)r0   ri   rb   s      r#   test_hist_by_no_extra_plotsz+TestSeriesPlots.test_hist_by_no_extra_plots   s=    
		"))$3::))+,111r"   c                     ddl m}  |       } |       }|j                  d      }d}t        j                  t
        |      5  |j                  ||       d d d        y # 1 sw Y   y xY w)Nr   )rI   o   z&passed axis not bound to passed figurerT   )r?   rI   )pylabrI   add_subplotrV   rW   AssertionErrorr.   )r0   r   rI   fig1fig2rP   rY   s          r#   +test_plot_fails_when_ax_differs_from_figurez;TestSeriesPlots.test_plot_fails_when_ax_differs_from_figure   s[     xxs#6]]>5 	)GGs4G(	) 	) 	)   A  A)histtype, expected)barT)
barstackedT)stepF)
stepfilledTc                     t        t        j                  j                  d      j	                  dd            }|j                  |      }t        ||       y )NrO   r>   r+   histtypefilled)r   r   r]   r^   integersr.   r   )r0   r   expectedserr?   s        r#   test_histtype_argumentz&TestSeriesPlots.test_histtype_argument   sD     RYY**1-66q"=>XXxX(!"X6r"   z&by, expected_axes_num, expected_layout)Nr>   re   )brO   )r>   rO   c                    ddgz  ddgz  z   }t        t        j                  j                  d      j	                  d      |d      }d|j
                  _        t        |j                  d	d	|
      }t        |||       t        |d       y )N   12rO   r   ar   r   T)r@   legendr7   rz   )r   r   r]   r^   r_   r   r   r   r.   r	   r   )r0   r7   expected_axes_numexpected_layoutr   sr~   s          r#   test_hist_with_legendz%TestSeriesPlots.test_hist_with_legend   s{    
 cU
R3%Z'299((+;;B?uSVW !d4BO$):?ST3'r"   r7   Nr   c                 <   ddgz  ddgz  z   }t        t        j                  j                  d      j	                  d      |d      }d|j
                  _        t        j                  t        d	
      5  |j                  d|d       d d d        y # 1 sw Y   y xY w)Nr   r   r   rO   r   r   r   r    Cannot use both legend and labelrT   Tc)r   r7   label)r   r   r]   r^   r_   r   r   rV   rW   rX   r.   )r0   r7   r   r   s       r#   test_hist_with_legend_raisesz,TestSeriesPlots.test_hist_with_legend_raises   s     cU
R3%Z'299((+;;B?uSVW]]:-OP 	2FF$2SF1	2 	2 	2s   4BBc                     t         j                  j                         \  }}|j                  j	                  d|      }t        |j                        dk(  sJ t        |j                  j                         d       y )Nr3   r2   r?   	Frequency)
rB   rC   rD   plotr.   r`   ra   r   yaxis	get_labelr0   r   rL   r?   s       r#   test_hist_kwargsz TestSeriesPlots.test_hist_kwargs   s[    

##%2WW\\qR\(2::!###288--/=r"   c                    t         j                  j                         \  }}|j                  j	                  d|      }|j                  j	                  d|      }t        |j                  j                         d       y )Nr3   r   
horizontal)orientationr?   r   )rB   rC   rD   r   r.   r   xaxisr   r   s       r#   test_hist_kwargs_horizontalz+TestSeriesPlots.test_hist_kwargs_horizontal   s[    

##%2WW\\qR\(WW\\lr\:288--/=r"   c                     t         j                  j                         \  }}|j                  j	                  d|      }|j                  j	                  dd|      }y )Nr3   r   leftT)alignstackedr?   )rB   rC   rD   r   r.   r   s       r#   test_hist_kwargs_alignz&TestSeriesPlots.test_hist_kwargs_align   sF    

##%2WW\\qR\(WW\\\<r"   zApi changed in 3.6.0)reasonc                 h   t        j                  d       t        j                  j	                         \  }}|j
                  j                  d|      }t        |d       |j                         }t        |dgt        |      z         |j                         }t        |dgt        |      z         y NscipyT)logyr?   logr    )rV   importorskiprB   rC   rD   r   r.   r   get_xticklabelsr   r`   get_yticklabelsr0   r   rL   r?   xlabelsylabelss         r#   test_hist_kdezTestSeriesPlots.test_hist_kde   s    G$

##%2WW\\t\+5)$$&7RD3w<$78$$&7RD3w<$78r"   c                 l    t        j                  d       t        |j                  j                         y Nr   )rV   r   r   r   kder0   r   s     r#   test_hist_kde_plot_worksz(TestSeriesPlots.test_hist_kde_plot_works   s     G$"''++&r"   c                 l    t        j                  d       t        |j                  j                         y r   )rV   r   r   r   densityr   s     r#   test_hist_kde_density_worksz+TestSeriesPlots.test_hist_kde_density_works   s     G$"''//*r"   c                 h   t        j                  d       t        j                  j	                         \  }}|j
                  j                  d|      }t        |d       |j                         }t        |dgt        |      z         |j                         }t        |dgt        |      z         y r   )rV   r   rB   rC   rD   r   r   r   r   r   r`   r   r   s         r#   test_hist_kde_logyz"TestSeriesPlots.test_hist_kde_logy   s    G$

##%2WW[[dr[*5)$$&7RD3w<$78$$&7RD3w<$78r"   c                 2   t        j                  d       t        j                  j	                         \  }}|j
                  j                  ddd|      }t        |d       t        |j                        dk(  sJ t        |j                  dgdz         y )	Nr   Tr+   r   )r   r2   colorr?   r   r   )
facecolors)rV   r   rB   rC   rD   r   r.   r   r`   ra   r
   r   s       r#   test_hist_kde_color_binsz(TestSeriesPlots.test_hist_kde_color_bins   st    G$

##%2WW\\t"CB\?5)2::"$$$bjjcURZ8r"   c                     t        j                  d       t        j                  j	                         \  }}|j
                  j                  dd|      }t        |d       |j                         }t        |      dk(  sJ t        |dg       y )Nr   Tr)r   r   r?   r   r   r>   )rV   r   rB   rC   rD   r   r   r   	get_linesr`   r
   )r0   r   rL   r?   liness        r#   test_hist_kde_colorz#TestSeriesPlots.test_hist_kde_color   so    G$

##%2WW[[d#"[55)5zQecU#r"   )"__name__
__module____qualname__rV   markparametrizer1   r<   rG   rJ   rM   rR   rZ   rc   rj   slowr   r   r   r   r   r   r   r   r   r   r   xfailr   r   r   r   r   r   r!   r"   r#   r%   r%   (   s   [[XVUOi=Q'RS- T- [[XVQK'89D :D
=IBJ
-$
* [[[[*)*+,,,,	
F FL 2
) [[	
77 [[03DFV2W	(	( [[TD#;/2 02>>=
 [[45	9 6	9'+ [[459 699$r"   r%   c                      e Zd Zej                  j
                  d        Zej                  j
                  d        Zej                  j
                  d        Zej                  j
                  d        Z	ej                  j
                  ej                  j                  dddddd	id
dig      d               Zej                  j
                  d        Zej                  j
                  d        Zej                  j
                  d        Zej                  j
                  d        Zd Zej                  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        Zd Zd Zd  Zej                  j                  d!dg d"fg d#g d#fg      d$        Zej                  j                  d%g d&      d'        Zej                  j                  d(dd)g      ej                  j                  d*dd+g      d,               Zej                  j                  d(dd)g      ej                  j                  d*dd+g      d-               Zd. Zd/ Zd0 Zd1 Zd2 Zd3 Zd4 Zy)5TestDataFramePlotsc                     t        j                  t        d      5  t        |j                         d d d        y # 1 sw Y   y xY w)NFr5   )r8   r9   r:   r   r.   )r0   ri   s     r#   test_hist_df_legacyz&TestDataFramePlots.test_hist_df_legacy  s3    ''eL 	,gll+	, 	, 	,s	   ;Ac                    t        t        j                  j                  d      j	                  d            }t        t        j                  j                  d      j                  dddt        j                              |d<   t        j                  t        d      5  t        |j                  d	      }d d d        t        d
d       |d   j                         rJ t        |dg   j                         y # 1 sw Y   FxY w)NrO   r\        j+2Z     ReZr+   sizer   Fr5   )r'   rn   rt   rz   re   )r   r   r]   r^   r_   r   r   int64r8   r9   r:   r   r.   r	   get_visibler0   rb   r~   s      r#   test_hist_df_legacy_layoutz-TestDataFramePlots.test_hist_df_legacy_layout  s     ryy,,Q/??HIII!!!$--""hh	 . 
1 ''eL 	:$RWW59D	:$6::))+++"aS',,'	: 	:s   C<<Dc                     t        t        j                  j                  d      j	                  d            }t        |j                         y )NrO   r+   r>   )r   r   r]   r^   r_   r   r.   r0   rb   s     r#   test_hist_df_legacy_layout2z.TestDataFramePlots.test_hist_df_legacy_layout2  s2    ryy,,Q/??HI"''"r"   c                    t        t        j                  j                  d      j	                  d            }t        t        j                  j                  d      j                  dddt        j                              |d<   t        j                  t        d	      5  t        |j                  d
      }d d d        t        dd
       y # 1 sw Y   xY w)NrO   r+   r3   r   r   r+   r   r3   Fr5   r   rf      rz   )r   r   r]   r^   r_   r   r   r   r8   r9   r:   r   r.   r	   r  s      r#   test_hist_df_legacy_layout3z.TestDataFramePlots.test_hist_df_legacy_layout3  s     ryy,,Q/??HIII!!!$--""hh	 . 
1 ''eL 	=$RWWV<D	=$6:	= 	=s   CCr&   T)sharexshareyr(   r)   r2   r3   c                    t        t        j                  j                  d      j	                  d            }t        t        j                  j                  d      j                  dddt        j                              |d<   t        j                  t        d	      5  t        |j                  fi | d d d        y # 1 sw Y   y xY w)
NrO   r	  r   r   r+   r   r3   Fr5   )r   r   r]   r^   r_   r   r   r   r8   r9   r:   r   r.   )r0   r&   rb   s      r#   !test_hist_df_legacy_layout_kwargsz4TestDataFramePlots.test_hist_df_legacy_layout_kwargs.  s    
 ryy,,Q/??HIII!!!$--""hh	 . 
1 ''eL 	1bgg00	1 	1 	1s   B??Cc                      |t        d            }d\  }}d\  }}|j                  ||||      }t        |||||       y )Nr+         r   (   
xlabelsizexrot
ylabelsizeyrot)ranger.   r   )r0   frame_or_seriesobjxfyfr  r  r~   s           r#   (test_hist_df_legacy_layout_labelsize_rotz;TestDataFramePlots.test_hist_df_legacy_layout_labelsize_rotB  sJ     eBi(B
dxx2DRdxK4BTbtTr"   c                    ddl m} t        t        d            }|j	                  ddd      }|j                         D cg c]  }t        ||      s| }}t        j                  |d   j                         d       y c c}w )	Nr   	Rectangler+   Trr   )
cumulativer2   r   ro         ?)
matplotlib.patchesr#  r   r  r.   get_children
isinstancer8   assert_almost_equal
get_height)r0   r#  r   r?   r   rectss         r#   test_hist_df_legacy_rectanglesz1TestDataFramePlots.test_hist_df_legacy_rectanglesK  sm    0U2YXXAtX<OO-JqAy1IJJ
uRy335s; Ks   BBc                 j    t        t        d            }|j                  d      }t        |d       y )Nr+   T)r   r   r   )r   r  r.   r   )r0   r   r?   s      r#   test_hist_df_legacy_scalez,TestDataFramePlots.test_hist_df_legacy_scaleU  s*    U2YXX$X5)r"   c                     t        t        d            }t        j                  t              5  |j                  d       d d d        y # 1 sw Y   y xY w)Nr+   r   )foo)r   r  r8   external_error_raisedAttributeErrorr.   )r0   r   s     r#   "test_hist_df_legacy_external_errorz5TestDataFramePlots.test_hist_df_legacy_external_error\  sA    U2Y%%n5 	 HHH	  	  	 s   A

Ac                    t        t        j                  j                  d      j                  d      t        j                  j                  d      j	                  ddd      t        t        j                  j                  d      j	                  dddt        j                              t        t        j                  j                  d      j	                  dddt        j                        d      d	      }|j                  t              }d
}t        j                  t        |      5  |j                          d d d        y # 1 sw Y   y xY w)NrO   r+   r   l     p/ l    @spc/ r   T)utc)r   r   r   dzDhist method requires numerical or datetime columns, nothing to plot.rT   )r   r   r]   r^   r   r   r   astypeobjectrV   rW   rX   r.   )r0   rb   df_orY   s       r#   *test_hist_non_numerical_or_datetime_raisesz=TestDataFramePlots.test_hist_non_numerical_or_datetime_raisesc  s   YY**1-44R8YY**1-66q"bA II))!,55+-@"BHH 6 
 !II))!,55+-@"BHH 6  	
" yy T]]:S1 	IIK	 	 	s   -EElayout_testNrt   )rg   expected_sizerq   rv   )rn   rn   ru   )rr   ro   )ro   rO   rs   c                 Z   t        t        j                  j                  d      j	                  d            }t        t        j                  j                  d      j                  dddt        j                              |d<   |j                  |d         }|d	   }t        |d
|       y )NrO   r\   r   r   r+   r   rg   rf   r<  rn   rz   )
r   r   r]   r^   r_   r   r   r   r.   r	   )r0   r;  rb   r~   r   s        r#   rj   z#TestDataFramePlots.test_hist_layout|  s     ryy,,Q/??HIII!!!$--""hh	 . 
1 wwk(3w4/$8<r"   c                    t        t        j                  j                  d      j	                  d            }t        t        j                  j                  d      j                  dddt        j                              |d<   d}t        j                  t        |      5  |j                  d	
       d d d        t        j                  d      }t        j                  t        |      5  |j                  d
       d d d        d}t        j                  t        |      5  |j                  d
       d d d        y # 1 sw Y   xY w# 1 sw Y   NxY w# 1 sw Y   y xY w)NrO   r\   r   r   r+   r   z1Layout of 1x1 must be larger than required size 3rT   re   rf   z)Layout must be a tuple of (rows, columns))r>   1At least one dimension of layout must be positivero   ro   )r   r   r]   r^   r_   r   r   r   rV   rW   rX   r.   reescape)r0   rb   rY   s      r#   test_hist_layout_errorz)TestDataFramePlots.test_hist_layout_error  s   ryy,,Q/??HIII!!!$--""hh	 . 
1 B]]:S1 	#GG6G"	# iiCD]]:S1 	!GG4G 	!A]]:S1 	%GG8G$	% 	%	# 	#
	! 	!	% 	%s$   !E ,E$E E	EE!c                 t   t        t        j                  j                  d      j	                  d            }t        t        j                  j                  d      j                  dddt        j                              |d<   t        |j                  d       t        j                  j                          y )	NrO   d   rO   r   r   rF  r   T)r@   )r   r   r]   r^   r_   r   r   r   r   r.   rB   rC   tight_layoutr  s     r#   test_tight_layoutz$TestDataFramePlots.test_tight_layout  s    ryy,,Q/??IJII!!!$--""hh	 . 
1 	"''5

!r"   c                 x    t        g dg dd      }t        |j                  ddddd	      }t        |d
       y )Ng      ?      ?g333333??rn   )pigrabbitrM  rM  rN  )lengthanimalTrO  rP  r3   r   )r@   columnr7   r2   r  r  )r   r   r.   r   r  s      r#   test_hist_subplot_xrotz)TestDataFramePlots.test_hist_subplot_xrot  sE    1C
 !GG
 	4a(r"   zcolumn, expectedwidthrO  rh   )rO  rU  rh   c                     t        g dg dg ddg d      }t        |j                  d|d	      }t        d
      D cg c]  }|d|f   j	                          }}||k(  sJ y c c}w )N)ffffff?皙?g333333?rX  g?rJ  )rn   rK  g333333@rO   r>   rT  )rM  rN  duckchickenhorse)r   Tr>   rn   )r@   rQ  rg   rn   r   )r   r   r.   r  	get_title)r0   rQ  r   rb   r~   iresults          r#    test_hist_column_order_unchangedz3TestDataFramePlots.test_hist_column_order_unchanged  s{     31-
 @
 !GG	
 38(;Q$q!t*&&(;;!!! <s    A&r   r   c                     t        t        j                  j                  d      j	                  ddd      ddg      }|j                  |	      }t        ||
       y )NrO   r>   r+   rE  r   r   r   columnsr   r   r   r   r]   r^   r   r.   r   r0   r   r   rb   r?   s        r#   r   z)TestDataFramePlots.test_histtype_argument  sU     II!!!$--a(-CcSVZ
 WWhW'!"X6r"   r7   r   rQ  r   c                    ||dnd}d|f}|xs ddg}||gdz  }t        ddgz  ddgz  z   d	      }t        t        j                  j	                  d      j                  d
      |ddg      }t        |j                  dd||      }t        |||       |||d   }t        ||      D ]  \  }	}
t        |
|	        y )Nr>   rO   r   r   r   r   r   r   r   r   rO   r   rd  T)r@   r   r7   rQ  rz   r   )r   r   r   r]   r^   r_   r   r.   r	   zipr   )r0   r7   rQ  r   r   expected_labelsr   rb   r~   expected_labelr?   s              r#   r   z(TestDataFramePlots.test_hist_with_legend  s     "$0BA/0 .S#J>./!3ObC5j2:-C8II!!!$44W=#J
 !GG
 	$):?S:&.7D"%ot"< 	5NB ^4	5r"   c                 6   t        ddgz  ddgz  z   d      }t        t        j                  j	                  d      j                  d      |dd	g
      }t        j                  t        d      5  |j                  d||d       d d d        y # 1 sw Y   y xY w)Nr   r   r   r   rh  rO   ri  r   r   rj  r   rT   Tr6  )r   r7   rQ  r   )
r   r   r   r]   r^   r_   rV   rW   rX   r.   )r0   r7   rQ  r   rb   s        r#   r   z/TestDataFramePlots.test_hist_with_legend_raises  s     bC5j2:-C8II!!!$44W=#J
 ]]:-OP 	BGG4BvSGA	B 	B 	Bs   0BBc                 "   t        t        j                  j                  d      j	                  d            }t
        j                  j                         \  }}|j                  j                  d|      }t        |j                        dk(  sJ y )NrO   r\   r3   r   r+   r   r   r]   r^   r_   rB   rC   rD   r   r.   r`   ra   r0   rb   rL   r?   s       r#   test_hist_df_kwargsz&TestDataFramePlots.test_hist_df_kwargs-  sh    ryy,,Q/??HI

##%2WW\\qR\(2::"$$$r"   c                 >   t        t        j                  j                  d      j	                  d      g d      }ddgdz  |d<   t
        j                  j                         \  }}|j                  j                  d|	      }t        |j                        d
k(  sJ y )NrO   r+   rr   Ar   CDrc  r   r   r3   Er   r  rp  rq  s       r#   test_hist_df_with_nonnumericsz0TestDataFramePlots.test_hist_df_with_nonnumerics3  s    II!!!$44W=(
 *q.3

##%2WW\\qR\(2::"$$$r"   c                 <   t        t        j                  j                  d      j	                  d      g d      }ddgdz  |d<   t
        j                  j                         \  }}|j                  j                  |	      }t        |j                        d
k(  sJ y )NrO   rt  ru  rc  r   r   r3   ry  )r?   r  rp  rq  s       r#   %test_hist_df_with_nonnumerics_no_binsz8TestDataFramePlots.test_hist_df_with_nonnumerics_no_bins>  s    II!!!$44W=(
 *q.3

##%2WW\\R\ 2::"$$$r"   c                    t        t        j                  j                  d      j	                  d      t        d            }t        j                  j                         \  }}|d   j                  j                  d|      }|d   j                  j                  |dd	       t        |dd
g       |j                         j                         sJ |j                  j                         j                         sJ y )NrO   r   rr   abcdrc  r   T)r   r?   r   r?   r   secondary_y	b (right)labels)r   r   r]   r^   r_   listrB   rC   rD   r   r.   r   	get_yaxisr  right_axrq  s       r#   test_hist_secondary_legendz-TestDataFramePlots.test_hist_secondary_legendI  s    II!!!$44W=tF|

 

##%2W\\dr2
3R$? 	Rk(:;||~))+++{{$$&22444r"   c                    t        t        j                  j                  d      j	                  d      t        d            }t        j                  j                         \  }}|d   j                  j                  dd|      }|d   j                  j                  |dd	       t        |j                  d
dg       |j                  j                         j                         rJ |j                         j                         sJ y )NrO   r~  r  rc  r   Tr   r  r?   r   r  	a (right)r  r  r   r   r]   r^   r_   r  rB   rC   rD   r   r.   r   left_axr  r  rq  s       r#   test_hist_secondary_secondaryz0TestDataFramePlots.test_hist_secondary_secondaryY  s    II!!!$44W=tF|
 

##%2W\\dD
3R$? 	RZZk0JK::'')55777||~))+++r"   c                    t        t        j                  j                  d      j	                  d      t        d            }t        j                  j                         \  }}|d   j                  j                  dd|      }|d   j                  j                  |d	       t        |j                  d
dg       |j                  j                         j                         sJ |j                         j                         sJ y )NrO   r~  r  rc  r   Tr  r   )r?   r   r  r  r  rq  s       r#   test_hist_secondary_primaryz.TestDataFramePlots.test_hist_secondary_primaryh  s    II!!!$44W=tF|
 

##%2W\\dD
3R- 	RZZc0BCzz##%11333||~))+++r"   c                    t        j                  d      }t        t        j                  ddgdt        j                  t        j                  gg dgt        d            }t        j                  g d      }t        g d	g dgt        d            }t        j                  g d
g dg      }t        j                  j                         \  }}|j                  j                  ||       |j                         D cg c]  }t        ||j                        s| }	}|	D 
cg c]  }
|
j                          }}
t        j                  j                         \  }}|j                  j                  ||       |j                         D cg c]  }t        ||j                        s| }}|D 
cg c]  }
|
j                          }}
t!        d t#        ||      D              sJ t        j                  ddgddgg      }d}t        j$                  t&        |      5  t        j                  j                         \  }}|j                  j                  ||       d d d        y c c}w c c}
w c c}w c c}
w # 1 sw Y   y xY w)Nzmatplotlib.patchesrX  333333?皙?)rW  g?rL  abcrc  )      ?r  ?)r  rX  r  )r  r  r  )r  r  r  )r?   weightsc              3   ,   K   | ]  \  }}||k(    y wr-   r!   ).0h0h1s      r#   	<genexpr>zETestDataFramePlots.test_hist_with_nans_and_weights.<locals>.<genexpr>  s     GB28Gs   r  r  z?weights must have the same shape as data, or be a single columnrT   )rV   r   r   r   nanr  arrayrB   rC   rD   r   r.   r'  r(  r#  r*  allrk  rW   rX   )r0   mpl_patchesrb   r  	no_nan_dfno_nan_weightsrL   ax0r   r+  rectheightsrP   no_nan_rectsno_nan_heightsidxerror_weightsrY   rQ   s                     r#   test_hist_with_nans_and_weightsz2TestDataFramePlots.test_hist_with_nans_and_weightsx  s   ))*>?ffc3#rvvrvv!6HK
 ((,-@$u+V	#46H"IJ$$&3
W-,,.Wq*Q@U@U2VWW1674??$77$$&3sN;'')
Z;;P;P-QA
 
 9EE$//+EEG#g~*FGGGG88c4[4,$?@O]]:S1 	BZZ((*FAsNN30@A	B 	B X7
 F	B 	Bs0   ?I+I+%I0I5*I54I:#?I??J) r   r   r   rV   r   r   r   r  r  r  r   r  r   r,  r.  r3  r:  rj   rC  rH  rS  r`  r   r   r   rr  rz  r|  r  r  r  r  r!   r"   r#   r   r      s   [[, , [[( ($ [[# # [[; ; [[[[dd3i5IFTU;W1 1  [[U U [[< < [[* * [[   2 [[f577778888
	
==%0")& [[01*,IJ	
"", [[	
77 [[TD#;/[[Xc{35 4 05< [[TD#;/[[Xc{3
B 4 0
B%	%	%5 ,, Br"   r   c                      e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
ej                  j                  ej                  j                  d	g d
g dg dg      d               Zej                  j                  d        Zej                  j                  ej                  j                  dg dg dg dg      d               Zej                  j                  ej                  j                  di dddg      d               Zej                  j                  ej                  j                  ddddddgdg did dgg      d!               Zd" Zd# Zd$ Zd% Zd& Zd' Zej                  j                  d(g d)      d*        Zy+),TestDataFrameGroupByPlotsc                 |   ddl m} t        j                  j	                  d      }t        |j                  d      dg      }t        |j                  dddt        j                  	            |d
<   |j                  ddd      |d<   dgdz  |d<    ||j                  |j                        }t        |dd       y )Nr   _grouped_histr+   r  rv  rc  r   r   r   r   rr   rw  Xrx  r   rt   rz   ) pandas.plotting._matplotlib.histr  r   r]   r^   r   r_   r   r   r   rv  rw  r	   r0   r  rsrb   r~   s        r#   test_grouped_hist_legacyz2TestDataFrameGroupByPlots.test_grouped_hist_legacy  s    BYY""2&r))'2SEBKK""hh	  
3 ++aB'3%"*3RTTbdd+$6:r"   c                 l   t         j                  j                  d      }t        |j	                  d      dg      }t        |j                  dddt         j                              |d<   |j                  d	d
d      |d<   dgdz  |d<   |j                  |j                        }t        |d
d       y )Nr+   r  rv  rc  r   r   r   r   r   rr   rw  r  rx  r   rt   rz   )r   r]   r^   r   r_   r   r   r   r.   rw  r	   r0   r  rb   r~   s       r#   *test_grouped_hist_legacy_axes_shape_no_colzDTestDataFrameGroupByPlots.test_grouped_hist_legacy_axes_shape_no_col  s    YY""2&r))'2SEBKK""hh	  
3 ++aB'3%"*3ww"$$w$6:r"   c                 t   t         j                  j                  d      }t        |j	                  d      dg      }t        |j                  dddt         j                              |d	<   |j                  d
dd      |d<   dgdz  |d<   |j                  dd      }t        |dd       t        |d       y )NrO   r  rv  rc  r   r   r+   r   r   r   rr   rw  r  rx  r   )r7   rotr>   re   rz   rR  )r   r]   r^   r   r_   r   r   r   r.   r	   r   r  s       r#   #test_grouped_hist_legacy_single_keyz=TestDataFrameGroupByPlots.test_grouped_hist_legacy_single_key  s    YY""1%r))'2SEBKK""hh	  
3 ++aB'3%"*3ww#2w&$6:4b)r"   c                 v   ddl m} ddlm} t        j
                  j                  d      }t        |j                  d      dg      }t        |j                  dd	d
t        j                              |d<   |j                  ddd
      |d<   d\  }}d\  }} ||j                  |j                  dd||||d	      }	|	j                         D ]U  }
|
j                         D cg c]  }t!        ||      s| }}|d   j#                         }t%        j&                  |d       W t)        |	||||       y c c}w )Nr   r"  r  rO   r  rv  rc  r   r   r+   r   r   rr   rw  r  r  T)r7   r$  r2   r  r  r  r  r   ro   r%  r  )r&  r#  r  r  r   r]   r^   r   r_   r   r   r   rv  rw  ravelr'  r(  r*  r8   r)  r   )r0   r#  r  r  rb   r  r  r  r  r~   r?   r   r+  rh   s                 r#   ,test_grouped_hist_legacy_grouped_hist_kwargszFTestDataFrameGroupByPlots.test_grouped_hist_legacy_grouped_hist_kwargs  s/   0BYY""1%r))'2SEBKK""hh	  
3 ++aB'3B
dDDtt

 **, 	0B " 1N1Z95MQNEN2Y))+F""63/	0 	4BTbtT Os   "D64D6c                 |   ddl m} t        j                  j	                  d      }t        |j                  d      dg      }t        |j                  ddd	t        j                  
            |d<   |j                  ddd	      |d<   dgd	z  |d<    ||j                  |j                  d      }t        |d       y )Nr   r  rO   r  rv  rc  r   r   r+   r   r   rr   rw  r  rx  T)r7   r   r   r   )r  r  r   r]   r^   r   r_   r   r   r   rv  rw  r   r  s        r#   %test_grouped_hist_legacy_grouped_histz?TestDataFrameGroupByPlots.test_grouped_hist_legacy_grouped_hist  s    BYY""1%r))'2SEBKK""hh	  
3 ++aB'3%"*3RTTbdd5U+r"   c                    ddl m} t        j                  j	                  d      }t        |j                  d      dg      }t        |j                  ddd	t        j                  
            |d<   |j                  ddd	      |d<   dgd	z  |d<   t        j                  t              5   ||j                  |j                  d       d d d        y # 1 sw Y   y xY w)Nr   r  rO   r  rv  rc  r   r   r+   r   r   rr   rw  r  rx  r   )r7   r0  )r  r  r   r]   r^   r   r_   r   r   r   r8   r1  r2  rv  rw  )r0   r  r  rb   s       r#   %test_grouped_hist_legacy_external_errz?TestDataFrameGroupByPlots.test_grouped_hist_legacy_external_err  s    BYY""1%r))'2SEBKK""hh	  
3 ++aB'3%"*3%%n5 	4"$$244U3	4 	4 	4s   * CCc                    t         j                  j                  d      }t        |j	                  d      dg      }t        |j                  dddt         j                              |d	<   |j                  d
dd      |d<   dgdz  |d<   d}t        j                  t        |      5  |j                  dd       d d d        y # 1 sw Y   y xY w)NrO   r  rv  rc  r   r   r+   r   r   r   rr   rw  r  rx  z$Specify figure size by tuple insteadrT   default)r7   r(   )r   r]   r^   r   r_   r   r   r   rV   rW   rX   r.   )r0   r  rb   rY   s       r#   $test_grouped_hist_legacy_figsize_errz>TestDataFrameGroupByPlots.test_grouped_hist_legacy_figsize_err  s    YY""1%r))'2SEBKK""hh	  
3 ++aB'3%"*34]]:S1 	/GGsIG.	/ 	/ 	/s   (CCc                 ,   d}t        t        j                  j                  d      j	                  dd|            }t        t        j                  j                  d      j	                  dd|            }t        j                  j                  d      j                  ddg|      }t        |||d	      }|j                  d
      }|j                         }t        |      dk(  sJ t        t        j                  j                               dk(  sJ y )Nr+   rO      r  rb  <   r   r>   )rh   weightrk   rk   )r   r   r]   r^   normalchoicer   groupbyr.   r`   rB   rC   r   )r0   nr  rh   
gender_intdf_intgbr~   s           r#   test_grouped_hist_legacy2z3TestDataFrameGroupByPlots.test_grouped_hist_legacy2*  s    		--a077Ra7HI		--a077BQ7GHYY**1-44aV!4D
f*UV^^H%wwy4yA~~3::))+,111r"   zmsg, plot_col, by_col, layout)z1Layout of 1x1 must be larger than required size 2r  rk   re   )z1Layout of 1x3 must be larger than required size 4rh   rp   r\  )r?  rh   rp   r@  c                     |}t        j                  t        |      5  |j                  |t	        ||      |       d d d        y # 1 sw Y   y xY w)NrT   rQ  r7   rg   )rV   rW   rX   r.   r|   )r0   ri   rY   plot_colby_colrg   rb   s          r#   test_grouped_hist_layout_errorz8TestDataFrameGroupByPlots.test_grouped_hist_layout_error5  sI    2 ]]:S1 	LGG8F(;FGK	L 	L 	Ls   AAc                     |}t        j                  t        d      5  t        |j                  d|j
                  d      }d d d        t        dd       y # 1 sw Y   xY w)NFr5   rh   rl   r  rO   rz   )r8   r9   r:   r   r.   rk   r	   r   s       r#    test_grouped_hist_layout_warningz:TestDataFrameGroupByPlots.test_grouped_hist_layout_warningR  sU    ''eL 	$RYYvD	 	$6:		 	s   $AA"zlayout, check_layout, figsize)rq   rq   N))ro   r>   rq   N)r   r   )r   r*   c                 d    |}|j                  d|j                  ||      }t        |d||       y )Nrh   )rQ  r7   rg   r(   rr   r   )r.   rp   r	   )r0   ri   rg   check_layoutr(   rb   r~   s          r#    test_grouped_hist_layout_figsizez:TestDataFrameGroupByPlots.test_grouped_hist_layout_figsize[  s1     wwh2;;vwwW$<Qr"   r&   rh   rt   )rQ  rg   c                     |}t        j                  t        d      5  t        |j                  fddi|}d d d        t        dd       y # 1 sw Y   xY w)NFr5   r7   rw   rn   rt   rz   )r8   r9   r:   r   r.   r	   )r0   ri   r&   rb   r~   s        r#   #test_grouped_hist_layout_by_warningz=TestDataFrameGroupByPlots.test_grouped_hist_layout_by_warninge  sV     ''eL 	H$RWWGGGD	H$6:	H 	Hs   AAzkwargs, axes_num, layoutrk   )rn   r3   ry   rO   rQ  rh   r  rp   rn   c                 H    |} |j                   di |}t        |||       y )Nrz   r!   )r.   r	   )r0   ri   r&   r{   rg   rb   r~   s          r#   test_grouped_hist_layout_axesz7TestDataFrameGroupByPlots.test_grouped_hist_layout_axesn  s(     rww  $&Ar"   c                     |}t         j                  j                  dd      \  }}|j                  g d|d         }t	        |dd       t        j                  ||d          |d   j                  |u sJ y )NrO   rn   r  r   rQ  r?   r\  rz   rB   rC   rD   r.   r	   r8   assert_numpy_array_equalrI   r0   ri   rb   rF   r~   returneds         r#   test_grouped_hist_multiple_axesz9TestDataFrameGroupByPlots.test_grouped_hist_multiple_axes{  sp    JJ''1-	T77"BtAw7O(Qv>
##Hd1g6{!!S(((r"   c                     |}t         j                  j                  dd      \  }}|j                  d|d         }t	        |dd       t        j                  ||d          |d   j                  |u sJ y )	NrO   rn   rw   r>   )r7   r?   r\  rz   r   r  r  s         r#   'test_grouped_hist_multiple_axes_no_colszATestDataFrameGroupByPlots.test_grouped_hist_multiple_axes_no_cols  so    JJ''1-	T77kd1g76(Qv>
##Hd1g6{!!S(((r"   c                     |}t         j                  j                  dd      \  }}d}t        j                  t
        |      5  |j                  d|      }d d d        y # 1 sw Y   y xY w)NrO   rn   z@The number of passed axes must be 1, the same as the output plotrT   rh   r  )rB   rC   rD   rV   rW   rX   r.   )r0   ri   rb   rF   r~   rY   s         r#   %test_grouped_hist_multiple_axes_errorz?TestDataFrameGroupByPlots.test_grouped_hist_multiple_axes_error  s[    JJ''1-	TP]]:S1 	577(t74D	5 	5 	5r   c                 2   |}|j                  d|j                  d      \  }}t        |      j                  ||      sJ t        |      j                  ||      sJ t	        |      j                  ||      rJ t	        |      j                  ||      rJ y )Nrh   T)rQ  r7   r  r.   rk   r   joinedr   r0   ri   rb   rP   rQ   s        r#   test_axis_share_xz+TestDataFrameGroupByPlots.test_axis_share_x  s    77(ryy7FS #%%c3///#%%c3/// c?))#s333c?))#s3333r"   c                 2   |}|j                  d|j                  d      \  }}t        |      j                  ||      sJ t        |      j                  ||      sJ t	        |      j                  ||      rJ t	        |      j                  ||      rJ y )Nrh   T)rQ  r7   r  )r.   rk   r   r  r   r  s        r#   test_axis_share_yz+TestDataFrameGroupByPlots.test_axis_share_y  s    77(ryy7FS #%%c3///#%%c3/// c?))#s333c?))#s3333r"   c                 4   |}|j                  d|j                  dd      \  }}t        |      j                  ||      sJ t        |      j                  ||      sJ t	        |      j                  ||      sJ t	        |      j                  ||      sJ y )Nrh   T)rQ  r7   r  r  r  r  s        r#   test_axis_share_xyz,TestDataFrameGroupByPlots.test_axis_share_xy  s    77(ryyd7SS #%%c3///#%%c3///#%%c3///#%%c3///r"   r   r   c                     t        t        j                  j                  d      j	                  ddd      ddg      }|j                  d|	      }t        ||
       y )NrO   r>   r+   r\   rb  r   r   rc  )r7   r   r   re  rf  s        r#   r   z0TestDataFrameGroupByPlots.test_histtype_argument  sW     II!!!$--a'-BSRUJ
 WWhW/!"X6r"   N)r   r   r   r  r  r  r  r  r  r  r  rV   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r   r!   r"   r#   r  r    s   ;&; *$$UL,&4&/"	2 [[[['	
.L/ 0L
 [[; ; [[[['	!8:STR	 
R
 [[[[Xx6,R'ST; U ; [[[["/F;891fE	
B B
))54
4	0 [[	
77r"   r  ) __doc__rA  numpyr   rV   pandasr   r   r   r   r   pandas._testing_testingr8   pandas.tests.plotting.commonr   r	   r
   r   r   r   r   r   r   r   r   rB   fixturer   r%   r   r  r!   r"   r#   <module>r     s    # 	       f,'  U$ U$pTB TBnt7 t7r"   