
    .i/                     ,   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j2                  d      ZddlmZ ej<                  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
matplotlibzmatplotlib.pyplot)_grouped_histc                  |    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        d/var/www/app/trading-bot/venv/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   monthr0   s      r$   test_hist_legacy_kwargs_warningz/TestSeriesPlots.test_hist_legacy_kwargs_warning1   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/   r1   r   figr@   s       r$   test_hist_legacy_axz#TestSeriesPlots.test_hist_legacy_ax7   s,    **%%a+R"''bt<r#   c                 |    t         j                  j                  dd      \  }}t        |j                  ||d       y )Nr?   T)r@   figurerA   rB   rF   s       r$   test_hist_legacy_ax_and_figz+TestSeriesPlots.test_hist_legacy_ax_and_fig;   s.    **%%a+R"''b4Hr#   c                 z    t         j                  j                  dd      \  }}t        |j                  |d       y )Nr?   T)rJ   rA   rB   )r1   r   rG   _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)rJ   r@   rA   rB   )r1   r   rG   ax1ax2s        r$   test_hist_legacy_multi_axz)TestSeriesPlots.test_hist_legacy_multi_axC   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)r8   rJ   )rC   rD   rE   pytestraises
ValueErrorr/   r   )r1   r   rG   rM   msgs        r$   test_hist_legacy_by_fig_errorz-TestSeriesPlots.test_hist_legacy_by_fig_errorH   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 )NrP   r,   rP   )r3   r   )r   r   randomdefault_rngstandard_normalr/   lenpatches)r1   dfr@   s      r$   test_hist_bins_legacyz%TestSeriesPlots.test_hist_bins_legacyQ   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 NonerU   r?   r?   layoutr?   )rW   rX   rY   heightr/   )r1   hist_dfrc   rZ   s       r$   test_hist_layoutz TestSeriesPlots.test_hist_layoutV   s    G]]:S1 	*IINN&N)	* ]]:S1 	*IINN1a&N)	* 	*	* 	*	* 	*s   B BBBz by, layout, axes_num, res_layout)genderrP   r?   rP   rm   )rl      rP   )ro   r?   )category   r?   rs   rr   )rq   rP   rp   rs   rP   rP   )rq   rn   rs   )ro   rP   )rq   rp   rs   rs   r?   rs   )	classroomru   ro   ru   c                     |}t        j                  t        d      5  t        |j                  j
                  t        ||      |      }d d d        t        ||       y # 1 sw Y   xY w)NFr6   r8   rh   axes_numrh   )r9   r:   r;   r   ri   r/   getattrr	   )r1   rj   r8   rh   r|   
res_layoutrc   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rs   rP   )      )r8   rh   r)   rs   r|   rh   r)   )ri   r/   rq   r	   r1   rj   rc   r   s       r$   test_hist_layout_with_by_shapez.TestSeriesPlots.test_hist_layout_with_by_shapev   s1    yy~~VW~M$67Kr#   c                    t        t        j                  j                  d      j	                  d            }t        t        j                  j                  d      j	                  d            }t
        j                  d       |j                          t
        j                  d       |j                          t
        j                         }|j                  }t        |      dk(  sJ y )NrP   y   z   )r   r   r^   r_   r`   pltsubplotr/   gcfr   ra   )r1   xyrG   r   s        r$   test_hist_no_overlapz$TestSeriesPlots.test_hist_no_overlap|   s    299((+;;A>?299((+;;A>?C	C	ggixx4yA~~r#   c                     |}|j                   j                  |j                         t        t        j
                  j                               dk(  sJ y )Nr8   r?   )ri   r/   rl   ra   rC   rD   get_fignums)r1   rj   rc   s      r$   test_hist_by_no_extra_plotsz+TestSeriesPlots.test_hist_by_no_extra_plots   s=    
		"))$3::))+,111r#   c                    t         j                  d      }t         j                  d      }|j                  d      }d}t        j                  t
        |      5  |j                  ||       d d d        y # 1 sw Y   y xY w)Nr?   rP   o   z&passed axis not bound to passed figurerU   )r@   rJ   )r   rJ   add_subplotrW   rX   AssertionErrorr/   )r1   r   fig1fig2rQ   rZ   s         r$   +test_plot_fails_when_ax_differs_from_figurez;TestSeriesPlots.test_plot_fails_when_ax_differs_from_figure   sd    zz!}zz!}s#6]]>5 	)GGs4G(	) 	) 	)s   A66A?histtype, expected)barT)
barstackedT)stepF)
stepfilledTc                     t        t        j                  j                  d      j	                  dd            }|j                  |      }t        ||       y )NrP   r?   r,   histtypefilled)r   r   r^   r_   integersr/   r   )r1   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?   rf   )brP   )r?   rP   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 )Nr4   12rP   r,   ar   r   T)rA   legendr8   r{   )r   r   r^   r_   r`   r   r   r   r/   r	   r   )r1   r8   expected_axes_numexpected_layoutr   sr   s          r$   test_hist_with_legendz%TestSeriesPlots.test_hist_with_legend   s{    
 SE	AI%299((+;;B?uSVW !d4BO$):?ST3'r#   r8   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)Nr4   r   r   rP   r,   r   r   r    Cannot use both legend and labelrU   Tc)r   r8   label)r   r   r^   r_   r`   r   r   rW   rX   rY   r/   )r1   r8   r   r   s       r$   test_hist_with_legend_raisesz,TestSeriesPlots.test_hist_with_legend_raises   s     SE	AI%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 )Nr4   r3   r@   	Frequency)
rC   rD   rE   plotr/   ra   rb   r   yaxis	get_labelr1   r   rM   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 )Nr4   r   
horizontal)orientationr@   r   )rC   rD   rE   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 )Nr4   r   leftT)alignstackedr@   )rC   rD   rE   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    )rW   importorskiprC   rD   rE   r   r/   r   get_xticklabelsr   ra   get_yticklabelsr1   r   rM   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   )rW   r   r   r   kder1   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   )rW   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   )rW   r   rC   rD   rE   r   r   r   r   r   ra   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   r3   colorr@   r   r   )
facecolors)rW   r   rC   rD   rE   r   r/   r   ra   rb   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?   )rW   r   rC   rD   rE   r   r   r   	get_linesra   r
   )r1   r   rM   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__rW   markparametrizer2   r=   rH   rK   rN   rS   r[   rd   rk   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)NFr6   )r9   r:   r;   r   r/   )r1   rj   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)NrP   r]        j+2Z     ReZr,   sizer   Fr6   )r(   ro   ru   r{   rf   )r   r   r^   r_   r`   r   r   int64r9   r:   r;   r   r/   r	   get_visibler1   rc   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 )NrP   r,   r?   )r   r   r^   r_   r`   r   r/   r1   rc   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)NrP   r,   r4   r   r   r,   r   r4   Fr6   r   rg      r{   )r   r   r^   r_   r`   r   r   r   r9   r:   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*   r3   r4   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)
NrP   r  r   r   r,   r   r4   Fr6   )r   r   r^   r_   r`   r   r   r   r9   r:   r;   r   r/   )r1   r'   rc   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   )r1   frame_or_seriesobjxfyfr  r  r   s           r$   (test_hist_df_legacy_layout_labelsize_rotz;TestDataFramePlots.test_hist_df_legacy_layout_labelsize_rot?  sJ     eBi(B
dxx2DRdxK4BTbtTr#   c                 0   t        t        d            }|j                  ddd      }|j                         D cg c])  }t	        |t
        j                  j                        s(|+ }}t        j                  |d   j                         d       y c c}w )Nr,   Trs   )
cumulativer3   r   rp         ?)r   r  r/   get_children
isinstancerC   rb   	Rectangler9   assert_almost_equal
get_height)r1   r   r@   r   rectss        r$   test_hist_df_legacy_rectanglesz1TestDataFramePlots.test_hist_df_legacy_rectanglesH  st    U2YXXAtX<OO-VqAs{{?T?T1UVV
uRy335s; Ws   )B%Bc                 j    t        t        d            }|j                  d      }t        |d       y )Nr,   T)r   r   r   )r   r  r/   r   )r1   r   r@   s      r$   test_hist_df_legacy_scalez,TestDataFramePlots.test_hist_df_legacy_scaleP  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  r9   external_error_raisedAttributeErrorr/   )r1   r   s     r$   "test_hist_df_legacy_external_errorz5TestDataFramePlots.test_hist_df_legacy_external_errorW  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)NrP   r,   r   l     p/ l    @spc/ r   T)utc)r   r   r   dzDhist method requires numerical or datetime columns, nothing to plot.rU   )r   r   r^   r_   r   r   r   astypeobjectrW   rX   rY   r/   )r1   rc   df_orZ   s       r$   *test_hist_non_numerical_or_datetime_raisesz=TestDataFramePlots.test_hist_non_numerical_or_datetime_raises^  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_testNru   )rh   expected_sizerr   rw   )ro   ro   rv   )rs   rp   )rp   rP   rt   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 )NrP   r]   r   r   r,   r   rh   rg   r8  ro   r{   )
r   r   r^   r_   r`   r   r   r   r/   r	   )r1   r7  rc   r   r   s        r$   rk   z#TestDataFramePlots.test_hist_layoutw  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)NrP   r]   r   r   r,   r   z1Layout of 1x1 must be larger than required size 3rU   rf   rg   z)Layout must be a tuple of (rows, columns))r?   1At least one dimension of layout must be positiverp   rp   )r   r   r^   r_   r`   r   r   r   rW   rX   rY   r/   reescape)r1   rc   rZ   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 )	NrP   r]   r   r   r,   r   T)rA   )r   r   r^   r_   r`   r   r   r   r   r/   rC   rD   tight_layoutr  s     r$   test_tight_layoutz$TestDataFramePlots.test_tight_layout  s    ryy,,Q/??HI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??ro   )pigrabbitrG  rG  rH  )lengthanimalTrI  rJ  r4   r   )rA   columnr8   r3   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widthrI  ri   )rI  rO  ri   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?rR  g?rD  )ro   rE  g333333@rP   r?   rN  )rG  rH  duckchickenhorse)r   Tr?   ro   )rA   rK  rh   ro   r   )r   r   r/   r  	get_title)r1   rK  r   rc   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 )NrP   r?   r,   r]   r   r   r   columnsr   r   r   r   r^   r_   r   r/   r   r1   r   r   rc   r@   s        r$   r   z)TestDataFramePlots.test_histtype_argument  sU     II!!!$--a'-BSRUJ
 WWhW'!"X6r#   r8   r   rK  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      D ]  \  }	}
t        |
|	        y )Nr?   rP   r   r   r4   r   r   r   r   r]   r   r^  T)rA   r   r8   rK  r{   r   strict)r   r   r   r^   r_   r`   r   r/   r	   zipr   )r1   r8   rK  r   r   expected_labelsr   rc   r   expected_labelr@   s              r$   r   z(TestDataFramePlots.test_hist_with_legend  s     "$0BA/0 .S#J>./!3Oa3%i!se)+#6II!!!$44W=#J
 !GG
 	$):?S:&.7D"%otD"I 	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)Nr4   r   r   r   rb  rP   r]   r   r   rc  r   rU   Tr2  )r   r8   rK  r   )
r   r   r   r^   r_   r`   rW   rX   rY   r/   )r1   r8   rK  r   rc   s        r$   r   z/TestDataFramePlots.test_hist_with_legend_raises  s     a3%i!se)+#6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 )NrP   r]   r4   r   r,   r   r   r^   r_   r`   rC   rD   rE   r   r/   ra   rb   r1   rc   rM   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 )NrP   r,   rs   Ar   CDr]  r   r   r4   Er   r  rk  rl  s       r$   test_hist_df_with_nonnumericsz0TestDataFramePlots.test_hist_df_with_nonnumerics.  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 )NrP   ro  rp  r]  r   r   r4   rt  )r@   r  rk  rl  s       r$   %test_hist_df_with_nonnumerics_no_binsz8TestDataFramePlots.test_hist_df_with_nonnumerics_no_bins9  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 )NrP   ro  abcdr]  r   T)r   r@   r   r@   r   secondary_y	b (right)labels)r   r   r^   r_   r`   listrC   rD   rE   r   r/   r   	get_yaxisr   right_axrl  s       r$   test_hist_secondary_legendz-TestDataFramePlots.test_hist_secondary_legendD  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 )NrP   ro  ry  r]  r   Tr   r{  r@   r   rz  	a (right)r|  r}  r   r   r^   r_   r`   r  rC   rD   rE   r   r/   r   left_axr  r   rl  s       r$   test_hist_secondary_secondaryz0TestDataFramePlots.test_hist_secondary_secondaryT  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 )NrP   ro  ry  r]  r   Tr  r   )r@   r   r  r}  r  rl  s       r$   test_hist_secondary_primaryz.TestDataFramePlots.test_hist_secondary_primaryc  s    II!!!$44W=tF|
 

##%2W\\dD
3R- 	RZZc0BCzz##%11333||~))+++r#   c                 (   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        |t
        j                  j                        s(|+ }}|D 	cg c]  }	|	j                          }
}	t
        j                  j                         \  }}|j                  j                  ||       |j                         D cg c])  }t        |t
        j                  j                        s(|+ }}|D 	cg c]  }	|	j                          }}	t        d t!        |
|d      D              sJ t        j                  ddgddgg      }d}t
        j                  j                         \  }}t#        j$                  t&        |      5  |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)NrR  333333?皙?)rQ  g?rF  abcr]  )      ?r  ?)r  rR  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     TB28Ts   Trd  r  r  z?weights must have the same shape as data, or be a single columnrU   )r   r   nanr  arrayrC   rD   rE   r   r/   r"  r#  rb   r$  r&  allrf  rW   rX   rY   )r1   rc   r  	no_nan_dfno_nan_weightsrM   ax0r   r'  rectheightsrQ   no_nan_rectsno_nan_heightsidxerror_weightsrZ   rR   s                    r$   test_hist_with_nans_and_weightsz2TestDataFramePlots.test_hist_with_nans_and_weightss  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3;;;P;P-QA
 
 9EE$//+EET#g~d*STTTT88c4[4,$?@O$$&3]]:S1 	BNN30@A	B 	B X7
 F	B 	Bs0   *)I4I4I9)I>1I>;JJJ) r   r   r   rW   r   r   r   r  r  r	  r   r  r  r(  r*  r/  r6  rk   r?  rB  rM  rZ  r   r   r   rm  ru  rw  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                 v   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                  |j                        }t        |d
d       y Nr,   r  rq  r]  r   r   r   r   r   rs   rr  Xrs  r   ru   r{   )r   r^   r_   r   r`   r   r   r   r   rq  rr  r	   r1   rsrc   r   s       r$   test_grouped_hist_legacyz2TestDataFrameGroupByPlots.test_grouped_hist_legacy  s    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 r  )r   r^   r_   r   r`   r   r   r   r/   rr  r	   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 )NrP   r  rq  r]  r   r   r,   r   r   r   rs   rr  r  rs  r   )r8   rotr?   rf   r{   rL  )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                    t         j                  j                  d      }t        |j	                  d      dg      }t        |j                  dddt         j                              |d	<   |j                  d
dd      |d<   d\  }}d\  }}t        |j                  |j                  dd||||d	      }|j                         D ]m  }|j                         D 	cg c])  }	t        |	t        j                  j                         s(|	+ }
}	|
d   j#                         }t%        j&                  |d       o t)        |||||       y c c}	w )NrP   r  rq  r]  r   r   r,   r   r   r   rs   rr  r  r  T)r8   r   r3   r  r  r  r  r   rp   r!  r  )r   r^   r_   r   r`   r   r   r   r   rq  rr  ravelr"  r#  rC   rb   r$  r&  r9   r%  r   )r1   r  rc   r  r  r  r  r   r@   r   r'  ri   s               r$   ,test_grouped_hist_legacy_grouped_hist_kwargszFTestDataFrameGroupByPlots.test_grouped_hist_legacy_grouped_hist_kwargs  s;   YY""1%r))'2SEBKK""hh	  
3 ++aB'3B
dDDtt

 **, 	0B??,
1ckk>S>S0TE  2Y))+F""63/	0 	4BTbtTs   )EEc                 v   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                  |j                  d      }t        |d       y )NrP   r  rq  r]  r   r   r,   r   r   r   rs   rr  r  rs  T)r8   r   r   r   )r   r^   r_   r   r`   r   r   r   r   rq  rr  r   r  s       r$   %test_grouped_hist_legacy_grouped_histz?TestDataFrameGroupByPlots.test_grouped_hist_legacy_grouped_hist  s    YY""1%r))'2SEBKK""hh	  
3 ++aB'3%"*3RTTbdd5U+r#   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<   t        j                  t              5  t        |j                  |j                  d       d d d        y # 1 sw Y   y xY w)NrP   r  rq  r]  r   r   r,   r   r   r   rs   rr  r  rs  r   )r8   r,  )r   r^   r_   r   r`   r   r   r   r9   r-  r.  r   rq  rr  )r1   r  rc   s      r$   %test_grouped_hist_legacy_external_errz?TestDataFrameGroupByPlots.test_grouped_hist_legacy_external_err  s    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)NrP   r  rq  r]  r   r   r,   r   r   r   rs   rr  r  rs  z$Specify figure size by tuple insteadrU   default)r8   r)   )r   r^   r_   r   r`   r   r   r   rW   rX   rY   r/   )r1   r  rc   rZ   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,   rP      r  r\  <   r   r?   )ri   weightrl   rl   )r   r   r^   r_   normalchoicer   groupbyr/   ra   rC   rD   r   )r1   nr  ri   
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  rl   rf   )z1Layout of 1x3 must be larger than required size 4ri   rq   rV  )r;  ri   rq   r<  c                     |}t        j                  t        |      5  |j                  |t	        ||      |       d d d        y # 1 sw Y   y xY w)NrU   rK  r8   rh   )rW   rX   rY   r/   r}   )r1   rj   rZ   plot_colby_colrh   rc   s          r$   test_grouped_hist_layout_errorz8TestDataFrameGroupByPlots.test_grouped_hist_layout_error'  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)NFr6   ri   rm   r  rP   r{   )r9   r:   r;   r   r/   rl   r	   r   s       r$    test_grouped_hist_layout_warningz:TestDataFrameGroupByPlots.test_grouped_hist_layout_warningD  sU    ''eL 	$RYYvD	 	$6:		 	s   $AA"zlayout, check_layout, figsize)rr   rr   N))rp   r?   rr   N)r   r   )r   r+   c                 d    |}|j                  d|j                  ||      }t        |d||       y )Nri   )rK  r8   rh   r)   rs   r   )r/   rq   r	   )r1   rj   rh   check_layoutr)   rc   r   s          r$    test_grouped_hist_layout_figsizez:TestDataFrameGroupByPlots.test_grouped_hist_layout_figsizeM  s1     wwh2;;vwwW$<Qr#   r'   ri   ru   )rK  rh   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)NFr6   r8   rx   ro   ru   r{   )r9   r:   r;   r   r/   r	   )r1   rj   r'   rc   r   s        r$   #test_grouped_hist_layout_by_warningz=TestDataFrameGroupByPlots.test_grouped_hist_layout_by_warningW  sV     ''eL 	H$RWWGGGD	H$6:	H 	Hs   AAzkwargs, axes_num, layoutrl   )ro   r4   rz   rP   rK  ri   r  rq   ro   c                 H    |} |j                   di |}t        |||       y )Nr{   r"   )r/   r	   )r1   rj   r'   r|   rh   rc   r   s          r$   test_grouped_hist_layout_axesz7TestDataFrameGroupByPlots.test_grouped_hist_layout_axes`  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 )NrP   ro   r  r   rK  r@   rV  r{   rC   rD   rE   r/   r	   r9   assert_numpy_array_equalrJ   r1   rj   rc   rG   r   returneds         r$   test_grouped_hist_multiple_axesz9TestDataFrameGroupByPlots.test_grouped_hist_multiple_axesm  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 )	NrP   ro   rx   r?   )r8   r@   rV  r{   r   r  r  s         r$   'test_grouped_hist_multiple_axes_no_colszATestDataFrameGroupByPlots.test_grouped_hist_multiple_axes_no_colsw  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)NrP   ro   z@The number of passed axes must be 1, the same as the output plotrU   ri   r  )rC   rD   rE   rW   rX   rY   r/   )r1   rj   rc   rG   r   rZ   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 	5s   A  A)c                 2   |}|j                  d|j                  d      \  }}t        |      j                  ||      sJ t        |      j                  ||      sJ t	        |      j                  ||      rJ t	        |      j                  ||      rJ y )Nri   T)rK  r8   r
  r/   rl   r   joinedr   r1   rj   rc   rQ   rR   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 )Nri   T)rK  r8   r  )r/   rl   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 )Nri   T)rK  r8   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 )NrP   r?   r,   r]   r\  r   r   r]  )r8   r   r   r_  r`  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  rW   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r   r"   r#   r$   r  r    s   ;"; *$"UH,"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__r=  numpyr   rW   pandasr   r   r   r   r   pandas._testing_testingr9   pandas.tests.plotting.commonr   r	   r
   r   r   r   r   r   r   r   r   rC   r    pandas.plotting._matplotlib.histr   fixturer   r&   r   r  r"   r#   r$   <module>r     s    ! 	       f,'f-. :  N$ N$bQB QBhl7 l7r#   