
    o[we!                        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	 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j        d          Zej        d             Z G d d          Z G d	 d
          Z G d d          ZdS )z Test cases for .hist method     N)	DataFrameIndexSeries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          j        d          S )Ntsname)tmmakeTimeSeries     Flib/python3.11/site-packages/pandas/tests/plotting/test_hist_method.pyr   r      s    $''''r   c                   *   e Zd Zej                            di ddiddig          d             Ze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                            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                            dg d          d              Zej                            d!d"d#g          d$             Zej                            d%d&d'g          d(             Zd) Zd* Zd+ Zej                            d,-          d.             Zd/ Zd0 Zej                            d,-          d1             Zd2 Z d3 Z!d&S )4TestSeriesPlotskwargsgridFfigsize   
   c                 *    t          |j        fi | d S 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            d S # 1 swxY w Y   d S )NFcheck_stacklevelby)r   assert_produces_warningUserWarningr   r%   indexmonthr&   s      r   test_hist_legacy_kwargs_warningz/TestSeriesPlots.test_hist_legacy_kwargs_warning(   s     'eLLL 	D 	DbgCC"(.CFCCC	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	D 	Ds   AAAc                 z    t           j                            dd          \  }}t          |j        |d           d S )N   T)axdefault_axesmplpyplotsubplotsr   r%   r'   r   figr6   s       r   test_hist_legacy_axz#TestSeriesPlots.test_hist_legacy_ax.   s:    *%%a++R"'bt<<<<<<r   c                 |    t           j                            dd          \  }}t          |j        ||d           d S )Nr5   T)r6   figurer7   r8   r<   s       r   test_hist_legacy_ax_and_figz+TestSeriesPlots.test_hist_legacy_ax_and_fig2   s<    *%%a++R"'b4HHHHHHr   c                 z    t           j                            dd          \  }}t          |j        |d           d S )Nr5   T)r@   r7   r8   )r'   r   r=   _s       r   test_hist_legacy_figz$TestSeriesPlots.test_hist_legacy_fig6   s:    $$Q**Q"'#DAAAAAAr   c                     t           j                            dd          \  }\  }}t          |j        ||d           t          |j        ||d           d S )Nr5      T)r@   r6   r7   r8   )r'   r   r=   ax1ax2s        r   test_hist_legacy_multi_axz)TestSeriesPlots.test_hist_legacy_multi_ax:   sY    *--a33Zc3"'##DIIII"'##DIIIIIIr   c                     t           j                            dd          \  }}d}t          j        t
          |          5  |                    |j        |           d d d            d S # 1 swxY w Y   d S )Nr5   z`Cannot pass 'figure' when using the 'by' argument, since a new 'Figure' instance will be createdmatch)r.   r@   )r9   r:   r;   pytestraises
ValueErrorr%   r1   )r'   r   r=   rC   msgs        r   test_hist_legacy_by_fig_errorz-TestSeriesPlots.test_hist_legacy_by_fig_error?   s    $$Q**Q' 	 ]:S111 	- 	-GGrxG,,,	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	- 	-s   A++A/2A/c                     t          t          j                            d                              d                    }|                    d          d         d         }t          |j                  dk    sJ d S )NrF   r"   rF   )r)   r   )r   nprandomdefault_rngstandard_normalr%   lenpatches)r'   dfr6   s      r   test_hist_bins_legacyz%TestSeriesPlots.test_hist_bins_legacyH   sg    ry,,Q//??HHIIWW!W__Q"2:!######r   c                 L   |}d}t          j        t          |          5  |j                            d           d d d            n# 1 swxY w Y   t          j        t          |          5  |j                            ddg           d d d            d S # 1 swxY w Y   d S )Nz7The 'layout' keyword is not supported when 'by' is NonerK   r5   r5   layoutr5   )rM   rN   rO   heightr%   )r'   hist_dfrZ   rP   s       r   test_hist_layoutz TestSeriesPlots.test_hist_layoutM   s!   G]:S111 	* 	*INN&N)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* ]:S111 	* 	*INN1a&N)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s#   AAA.BB Bz by, layout, axes_num, res_layout)genderrF   r5   rF   rd   )rc      rF   )rf   r5   )category   r5   rj   ri   )rh   rF   rg   rj   rF   rF   )rh   re   rj   )rf   rF   )rh   rg   rj   rj   r5   rj   )	classroomrl   rf   rl   c                     |}t          j        t          d          5  t          |j        j        t          ||          |          }d d d            n# 1 swxY w Y   t          |||           d S )NFr,   r.   r_   axes_numr_   )r   r/   r0   r   r`   r%   getattrr   )r'   ra   r.   r_   rs   
res_layoutrZ   axess           r   test_hist_layout_with_byz(TestSeriesPlots.test_hist_layout_with_byV   s     
 'eLLL 	X 	X$RY^BPVWWWD	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X 	X$*EEEEEEs   +AAAc                 t    |}|j                             |j        dd          }t          |ddd           d S )Nrj   rF   )      )r.   r_   r   rj   rs   r_   r   )r`   r%   rh   r   r'   ra   rZ   rv   s       r   test_hist_layout_with_by_shapez.TestSeriesPlots.test_hist_layout_with_by_shapem   s?    y~~VW~MM$67KKKKKKr   c                    ddl m}m} t          t          j                            d                              d                    }t          t          j                            d                              d                    } |d           |                                  |d           |                                  |            }|j	        }t          |          dk    sJ d S )Nr   )gcfsubplotrF   y   z   )matplotlib.pyplotr   r   r   rT   rU   rV   rW   r%   rv   rX   )r'   r   r   xyr=   rv   s          r   test_hist_no_overlapz$TestSeriesPlots.test_hist_no_overlaps   s    	
 	
 	
 	
 	
 	
 	
 	

 29((++;;A>>??29((++;;A>>??		ceex4yyA~~~~~~r   c                     |}|j                             |j                   t          t          j                                                  dk    sJ d S )Nr.   r5   )r`   r%   rc   rX   r9   r:   get_fignums)r'   ra   rZ   s      r   test_hist_by_no_extra_plotsz+TestSeriesPlots.test_hist_by_no_extra_plots   sL    
	")$$$3:))++,,111111r   c                     ddl m}  |            } |            }|                    d          }d}t          j        t
          |          5  |                    ||           d d d            d S # 1 swxY w Y   d S )Nr   )r@   o   z&passed axis not bound to passed figurerK   )r6   r@   )pylabr@   add_subplotrM   rN   AssertionErrorr%   )r'   r   r@   fig1fig2rG   rP   s          r   +test_plot_fails_when_ax_differs_from_figurez;TestSeriesPlots.test_plot_fails_when_ax_differs_from_figure   s          vxxvxxs##6]>555 	) 	)GGs4G(((	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	) 	)s   A22A69A6histtype, expected)barT)
barstackedT)stepF)
stepfilledTc                     t          t          j                            d                              dd                    }|                    |          }t          ||           d S )NrF   r5   r"   histtypefilled)r   rT   rU   rV   integersr%   r   )r'   r   expectedserr6   s        r   test_histtype_argumentz&TestSeriesPlots.test_histtype_argument   s]     RY**1--66q"==>>XXxX((!"X666666r   z&by, expected_axes_num, expected_layout)Nr5   r]   )brF   )r5   rF   c                 0   ddgz  ddgz  z   }t          t          j                            d                              d          |d          }d|j        _        t          |j        d	d	|
          }t          |||           t          |d           d S )N   12rF      ar1   r   r   T)r7   legendr.   rr   )r   rT   rU   rV   rW   r1   r   r   r%   r   r
   )r'   r.   expected_axes_numexpected_layoutr1   srv   s          r   test_hist_with_legendz%TestSeriesPlots.test_hist_with_legend   s    
 cU
R3%Z'29((++;;B??uSVWWW !d4BOOO$):?SSSST3'''''r   r.   Nr   c                 T   ddgz  ddgz  z   }t          t          j                            d                              d          |d          }d|j        _        t          j        t          d	
          5  |
                    d|d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   rF   r   r   r   r    Cannot use both legend and labelrK   Tc)r   r.   label)r   rT   rU   rV   rW   r1   r   rM   rN   rO   r%   )r'   r.   r1   r   s       r   test_hist_with_legend_raisesz,TestSeriesPlots.test_hist_with_legend_raises   s     cU
R3%Z'29((++;;B??uSVWWW]:-OPPP 	2 	2FF$2SF111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   7BB!$B!c                    t           j                                        \  }}|j                            d|          }t          |j                  dk    sJ t          |j        	                                d           d S )Nr*   r)   r6   	Frequency)
r9   r:   r;   plotr%   rX   rY   r   yaxis	get_labelr'   r   rC   r6   s       r   test_hist_kwargsz TestSeriesPlots.test_hist_kwargs   sm    
##%%2W\\qR\((2:!####28--//=====r   c                    t           j                                        \  }}|j                            d|          }|j                            d|          }t          |j                                        d           d S )Nr*   r   
horizontal)orientationr6   r   )r9   r:   r;   r   r%   r   xaxisr   r   s       r   test_hist_kwargs_horizontalz+TestSeriesPlots.test_hist_kwargs_horizontal   sk    
##%%2W\\qR\((W\\lr\::28--//=====r   c                     t           j                                        \  }}|j                            d|          }|j                            dd|          }d S )Nr*   r   leftT)alignstackedr6   )r9   r:   r;   r   r%   r   s       r   test_hist_kwargs_alignz&TestSeriesPlots.test_hist_kwargs_align   sM    
##%%2W\\qR\((W\\\<<r   zApi changed in 3.6.0)reasonc                    t          j        d           t          j                                        \  }}|j                            d|          }t          |d           |                                }t          |dgt          |          z             |                                }t          |dgt          |          z             d S NscipyT)logyr6   logr    )rM   importorskipr9   r:   r;   r   r%   r   get_xticklabelsr   rX   get_yticklabelsr'   r   rC   r6   xlabelsylabelss         r   test_hist_kdezTestSeriesPlots.test_hist_kde   s    G$$$
##%%2W\\t\++5))))$$&&7RD3w<<$7888$$&&7RD3w<<$788888r   c                 `    t          j        d           t          |j        j                   d S Nr   )rM   r   r   r   kder'   r   s     r   test_hist_kde_plot_worksz(TestSeriesPlots.test_hist_kde_plot_works   s+    G$$$"'+&&&&&r   c                 `    t          j        d           t          |j        j                   d S r   )rM   r   r   r   densityr   s     r   test_hist_kde_density_worksz+TestSeriesPlots.test_hist_kde_density_works   s+    G$$$"'/*****r   c                    t          j        d           t          j                                        \  }}|j                            d|          }t          |d           |                                }t          |dgt          |          z             |                                }t          |dgt          |          z             d S r   )rM   r   r9   r:   r;   r   r   r   r   r   rX   r   r   s         r   test_hist_kde_logyz"TestSeriesPlots.test_hist_kde_logy   s    G$$$
##%%2W[[dr[**5))))$$&&7RD3w<<$7888$$&&7RD3w<<$788888r   c                 6   t          j        d           t          j                                        \  }}|j                            ddd|          }t          |d           t          |j	                  dk    sJ t          |j	        dgdz             d S )	Nr   Tr"   r   )r   r)   colorr6   r   r   )
facecolors)rM   r   r9   r:   r;   r   r%   r   rX   rY   r	   r   s       r   test_hist_kde_color_binsz(TestSeriesPlots.test_hist_kde_color_bins   s    G$$$
##%%2W\\t"CB\??5))))2:"$$$$bjcURZ888888r   c                 @   t          j        d           t          j                                        \  }}|j                            dd|          }t          |d           |                                }t          |          dk    sJ t          |dg           d S )Nr   Tr)r   r   r6   r   r   r5   )rM   r   r9   r:   r;   r   r   r   	get_linesrX   r	   )r'   r   rC   r6   liness        r   test_hist_kde_colorz#TestSeriesPlots.test_hist_kde_color   s    G$$$
##%%2W[[d#"[555))))5zzQecU#####r   )"__name__
__module____qualname__rM   markparametrizer(   r3   r>   rA   rD   rI   rQ   r[   rb   slowrw   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S- - TS- [XVQK'899D D :9D
= = =I I IB B BJ J J
- - -$ $ $
* * * [[*)))***+++,,,,,,,,,,,,	
 F F  FL L L   2 2 2
) ) ) [	
 	
 	
 7 7 7 [03DFV2W 	( 	( 	( [TD#;//2 2 0/2> > >> > >= = =
 [455	9 	9 65	9' ' '+ + + [4559 9 6599 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        
                    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        
                    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        
                    d!dg d"fg d#g d#fg          d$             Zej        
                    d%g d&          d'             Zej        
                    d(dd)g          ej        
                    d*dd+g          d,                         Zej        
                    d(dd)g          ej        
                    d*dd+g          d-                         Zd. Zd/ Zd0 Zd1 Zd2 Zd3 Zd4 ZdS )5TestDataFramePlotsc                     t          j        t          d          5  t          |j                   d d d            d S # 1 swxY w Y   d S )NFr,   )r   r/   r0   r   r%   )r'   ra   s     r   test_hist_df_legacyz&TestDataFramePlots.test_hist_df_legacy   s    'eLLL 	, 	,gl+++	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	, 	,s   >AAc                 H   t          t          j                            d                              d                    }t          t          j                            d                              dddt          j                            |d<   t          j	        t          d          5  t          |j        d	          }d d d            n# 1 swxY w Y   t          |d
d           |d                                         rJ t          |dg         j                   d S )NrF   rS        j+2Z     ReZr"   sizedtypeFr,   )r   rf   rl   rr   r]   )r   rT   rU   rV   rW   r   r   int64r   r/   r0   r   r%   r   get_visibler'   rZ   rv   s      r   test_hist_df_legacy_layoutz-TestDataFramePlots.test_hist_df_legacy_layout  sF    ry,,Q//??HHIII!!!$$--""h	 .  
 
1 'eLLL 	: 	:$RW5999D	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:$6:::::))+++++"aS','''''   +CCCc                     t          t          j                            d                              d                    }t          |j                   d S )NrF   r"   r5   )r   rT   rU   rV   rW   r   r%   r'   rZ   s     r   test_hist_df_legacy_layout2z.TestDataFramePlots.test_hist_df_legacy_layout2  sC    ry,,Q//??HHII"'"""""r   c                    t          t          j                            d                              d                    }t          t          j                            d                              dddt          j                            |d<   t          j	        t          d	          5  t          |j        d
          }d d d            n# 1 swxY w Y   t          |dd
           d S )NrF   r"   r*   r   r   r"   r   r*   Fr,   ry   r^      rr   )r   rT   rU   rV   rW   r   r   r   r   r/   r0   r   r%   r   r   s      r   test_hist_df_legacy_layout3z.TestDataFramePlots.test_hist_df_legacy_layout3  s    ry,,Q//??HHIII!!!$$--""h	 .  
 
1 'eLLL 	= 	=$RWV<<<D	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=$6::::::r   r   T)sharexshareyr   r    r)   r*   c                    t          t          j                            d                              d                    }t          t          j                            d                              dddt          j                            |d<   t          j	        t          d	          5  t          |j        fi | d d d            d S # 1 swxY w Y   d S )
NrF   r  r   r   r"   r   r*   Fr,   )r   rT   rU   rV   rW   r   r   r   r   r/   r0   r   r%   )r'   r   rZ   s      r   !test_hist_df_legacy_layout_kwargsz4TestDataFramePlots.test_hist_df_legacy_layout_kwargs)  s   
 ry,,Q//??HHIII!!!$$--""h	 .  
 
1 'eLLL 	1 	1bg00000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1s   +CCCc                      |t          d                    }d\  }}d\  }}|                    ||||          }t          |||||           d S )Nr"         r   (   
xlabelsizexrot
ylabelsizeyrot)ranger%   r   )r'   frame_or_seriesobjxfyfr  r  rv   s           r   (test_hist_df_legacy_layout_labelsize_rotz;TestDataFramePlots.test_hist_df_legacy_layout_labelsize_rot=  sc     oeBii((B
dxx2DRdxKK4BTbtTTTTTTr   c                    ddl m t          t          d                    }|                    ddd          }fd|                                D             }t          j        |d                                         d	           d S )
Nr   	Rectangler"   Trj   )
cumulativer)   r   c                 4    g | ]}t          |          |S r   
isinstance.0r   r  s     r   
<listcomp>zETestDataFramePlots.test_hist_df_legacy_rectangles.<locals>.<listcomp>M  s(    JJJqAy1I1IJJJJr   rg         ?)	matplotlib.patchesr  r   r  r%   get_childrenr   assert_almost_equal
get_height)r'   r   r6   rectsr  s       @r   test_hist_df_legacy_rectanglesz1TestDataFramePlots.test_hist_df_legacy_rectanglesF  s    000000U2YYXXAtX<<JJJJBOO--JJJ
uRy3355s;;;;;r   c                     t          t          d                    }|                    d          }t          |d           d S )Nr"   T)r   r   r   )r   r  r%   r   )r'   r   r6   s      r   test_hist_df_legacy_scalez,TestDataFramePlots.test_hist_df_legacy_scaleP  sA    U2YYXX$X5))))))r   c                     t          t          d                    }t          j        t                    5  |                    d           d d d            d S # 1 swxY w Y   d S )Nr"   r   )foo)r   r  r   external_error_raisedAttributeErrorr%   )r'   r   s     r   "test_hist_df_legacy_external_errorz5TestDataFramePlots.test_hist_df_legacy_external_errorW  s    U2YY%n55 	  	 HHH	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   AA!Ac                    t          t          j                            d                              d          t          j                            d                              ddd          t          t          j                            d                              dddt          j                            t          t          j                            d                              dddt          j                  d          d	          }|                    t                    }d
}t          j
        t          |          5  |                                 d d d            d S # 1 swxY w Y   d S )NrF   r"   r   l     p/ l    @spc/ )r   T)utc)r   r   r   dzDhist method requires numerical or datetime columns, nothing to plot.rK   )r   rT   rU   rV   r   r   r   astypeobjectrM   rN   rO   r%   )r'   rZ   df_orP   s       r   *test_hist_non_numerical_or_datetime_raisesz=TestDataFramePlots.test_hist_non_numerical_or_datetime_raises^  s   Y**1--44R88Y**1--66q"bAA I))!,,55+-@"BH 6   
 !I))!,,55+-@"BH 6   	   
 
" yy  T]:S111 	 	IIKKK	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   E((E,/E,layout_testNrl   )r_   expected_sizeri   rn   )rf   rf   rm   )rj   rg   )rg   rF   rk   c                    t          t          j                            d                              d                    }t          t          j                            d                              dddt          j                            |d<   |                    |d                   }|d	         }t          |d
|           d S )NrF   rS   r   r   r"   r   r_   r^   r<  rf   rr   )
r   rT   rU   rV   rW   r   r   r   r%   r   )r'   r;  rZ   rv   r   s        r   rb   z#TestDataFramePlots.test_hist_layoutw  s     ry,,Q//??HHIII!!!$$--""h	 .  
 
1 wwk(3w44/$8<<<<<<r   c                    t          t          j                            d                              d                    }t          t          j                            d                              dddt          j                            |d<   d}t          j	        t          |          5  |                    d	
           d d d            n# 1 swxY w Y   t          j        d          }t          j	        t          |          5  |                    d
           d d d            n# 1 swxY w Y   d}t          j	        t          |          5  |                    d
           d d d            d S # 1 swxY w Y   d S )NrF   rS   r   r   r"   r   z1Layout of 1x1 must be larger than required size 3rK   r]   r^   z)Layout must be a tuple of (rows, columns))r5   1At least one dimension of layout must be positiverg   rg   )r   rT   rU   rV   rW   r   r   r   rM   rN   rO   r%   reescape)r'   rZ   rP   s      r   test_hist_layout_errorz)TestDataFramePlots.test_hist_layout_error  s   ry,,Q//??HHIII!!!$$--""h	 .  
 
1 B]:S111 	# 	#GG6G"""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# iCDD]:S111 	! 	!GG4G   	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	! 	!A]:S111 	% 	%GG8G$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	%s6   -CCC
D--D14D1E99E= E=c                    t          t          j                            d                              d                    }t          t          j                            d                              dddt          j                            |d<   t          |j	        d           t          j                                         d S )	NrF   d   rF   r   r   rF  r   T)r7   )r   rT   rU   rV   rW   r   r   r   r   r%   r9   r:   tight_layoutr  s     r   test_tight_layoutz$TestDataFramePlots.test_tight_layout  s    ry,,Q//??IIJJI!!!$$--""h	 .  
 
1 	"'5555
!!!!!r   c                     t          g dg dd          }t          |j        ddddd	          }t          |d
           d S )Ng      ?      ?g333333??rf   )pigrabbitrM  rM  rN  )lengthanimalTrO  rP  r*   r   )r7   columnr.   r)   r  r  )r   r   r%   r   r   s      r   test_hist_subplot_xrotz)TestDataFramePlots.test_hist_subplot_xrot  sr    111CCC 
 
 !G
 
 
 	4a((((((r   zcolumn, expectedwidthrO  r`   )rO  rU  r`   c                     t          g dg dg ddg d          }t          |j        d|d	          fd
t          d          D             }||k    sJ d S )N)ffffff?皙?g333333?rX  g?rJ  )rf   rK  g333333@rF   r5   rT  )rM  rN  duckchickenhorse)r1   Tr5   rf   )r7   rQ  r_   c                 H    g | ]}d |f                                          S )r   )	get_title)r$  irv   s     r   r%  zGTestDataFramePlots.test_hist_column_order_unchanged.<locals>.<listcomp>  s-    ;;;Q$q!t*&&((;;;r   rf   )r   r   r%   r  )r'   rQ  r   rZ   resultrv   s        @r    test_hist_column_order_unchangedz3TestDataFramePlots.test_hist_column_order_unchanged  s     333111--- 
 @??
 
 
 !G	
 
 
 <;;;%((;;;!!!!!!r   r   r   c                     t          t          j                            d                              ddd          ddg          }|                    |	          }t          ||
           d S )NrF   r5   r"   rE  r   r   r   columnsr   r   r   rT   rU   rV   r   r%   r   r'   r   r   rZ   r6   s        r   r   z)TestDataFramePlots.test_histtype_argument  su     I!!!$$--a(-CCcSVZ
 
 
 WWhW''!"X666666r   r.   r   rQ  r   c                    ||dnd}d|f}|pddg}||gdz  }t          ddgz  ddgz  z   d	          }t          t          j                            d                              d
          |ddg          }t          |j        dd||          }t          |||           |
||d         }t          ||          D ]\  }	}
t          |
|	           d S )Nr5   rF   r   r   r   r   r   r   r   r   rF   r1   re  T)r7   r   r.   rQ  rr   r   )r   r   rT   rU   rV   rW   r   r%   r   zipr
   )r'   r.   rQ  r   r   expected_labelsr1   rZ   rv   expected_labelr6   s              r   r   z(TestDataFramePlots.test_hist_with_legend  s0    "$0BAA/0 .S#J>./!3ObC5j2:-C888I!!!$$44W==#J
 
 
 !G
 
 
 	$):?SSSS:&.7D"%ot"<"< 	5 	5NB ^4444	5 	5r   c                 `   t          ddgz  ddgz  z   d          }t          t          j                            d                              d          |dd	g
          }t          j        t          d          5  |	                    d||d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   r   r   rF   ri  r   r   rj  r   rK   Tr6  )r   r.   rQ  r   )
r   r   rT   rU   rV   rW   rM   rN   rO   r%   )r'   r.   rQ  r1   rZ   s        r   r   z/TestDataFramePlots.test_hist_with_legend_raises  s    bC5j2:-C888I!!!$$44W==#J
 
 
 ]:-OPPP 	B 	BGG4BvSGAAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   <B##B'*B'c                 2   t          t          j                            d                              d                    }t
          j                                        \  }}|j        	                    d|          }t          |j                  dk    sJ d S )NrF   rS   r*   r   r"   r   rT   rU   rV   rW   r9   r:   r;   r   r%   rX   rY   r'   rZ   rC   r6   s       r   test_hist_df_kwargsz&TestDataFramePlots.test_hist_df_kwargs(  sz    ry,,Q//??HHII
##%%2W\\qR\((2:"$$$$$$r   c                 N   t          t          j                            d                              d          g d          }ddgdz  |d<   t
          j                                        \  }}|j        	                    d|	          }t          |j                  d
k    sJ d S )NrF   r"   rj   ABCDrd  r   r   r*   Er   r  rp  rq  s       r   test_hist_df_with_nonnumericsz0TestDataFramePlots.test_hist_df_with_nonnumerics.  s    I!!!$$44W==(((
 
 
 *q.3
##%%2W\\qR\((2:"$$$$$$r   c                 L   t          t          j                            d                              d          g d          }ddgdz  |d<   t
          j                                        \  }}|j        	                    |	          }t          |j                  d
k    sJ d S )NrF   rt  ru  rd  r   r   r*   rz  )r6   r  rp  rq  s       r   %test_hist_df_with_nonnumerics_no_binsz8TestDataFramePlots.test_hist_df_with_nonnumerics_no_bins9  s    I!!!$$44W==(((
 
 
 *q.3
##%%2W\\R\  2:"$$$$$$r   c                 >   t          t          j                            d                              d          t          d                    }t          j                                        \  }}|d         j	        
                    d|          }|d         j	        
                    |dd	           t          |dd
g           |                                                                sJ |j                                                                        sJ d S )NrF   r   rj   abcdrd  r   T)r   r6   r   r6   r   secondary_y	b (right)labels)r   rT   rU   rV   rW   listr9   r:   r;   r   r%   r
   	get_yaxisr   right_axrq  s       r   test_hist_secondary_legendz-TestDataFramePlots.test_hist_secondary_legendD  s    I!!!$$44W==tF||
 
 

 
##%%2W\dr22
3R$??? 	Rk(:;;;;||~~))+++++{$$&&224444444r   c                 J   t          t          j                            d                              d          t          d                    }t          j                                        \  }}|d         j	        
                    dd|          }|d         j	        
                    |dd	           t          |j        d
dg           |j                                                                        rJ |                                                                sJ d S )NrF   r  r  rd  r   Tr   r  r6   r   r  	a (right)r  r  r   rT   rU   rV   rW   r  r9   r:   r;   r   r%   r
   left_axr  r   rq  s       r   test_hist_secondary_secondaryz0TestDataFramePlots.test_hist_secondary_secondaryT  s   I!!!$$44W==tF||
 
 
 
##%%2W\dDD
3R$??? 	RZk0JKKKK:''))5577777||~~))+++++++r   c                 H   t          t          j                            d                              d          t          d                    }t          j                                        \  }}|d         j	        
                    dd|          }|d         j	        
                    |d	           t          |j        d
dg           |j                                                                        sJ |                                                                sJ d S )NrF   r  r  rd  r   Tr  r   )r6   r   r  r  r  rq  s       r   test_hist_secondary_primaryz.TestDataFramePlots.test_hist_secondary_primaryc  s    I!!!$$44W==tF||
 
 
 
##%%2W\dDD
3R--- 	RZc0BCCCCz##%%1133333||~~))+++++++r   c                 v   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
                            ||           fd|                                D             }d |D             }t          j        	                                \  }}	|j
                            |	|           fd|	                                D             }
d |
D             }t          d t          ||          D                       sJ t          j        ddgddgg          }d}t          j        t           |          5  t          j        	                                \  }}|j
                            ||           d d d            d S # 1 swxY w Y   d S )Nzmatplotlib.patchesrX  333333?皙?)rW  g?rL  abcrd  )      ?r  ?)r  rX  r  )r  r  r  )r  r  r  )r6   weightsc                 >    g | ]}t          |j                  |S r   r"  r  r$  r   mpl_patchess     r   r%  zFTestDataFramePlots.test_hist_with_nans_and_weights.<locals>.<listcomp>  s+    WWWq*Q@U2V2VWWWWr   c                 6    g | ]}|                                 S r   r*  r$  rects     r   r%  zFTestDataFramePlots.test_hist_with_nans_and_weights.<locals>.<listcomp>  s"    7774??$$777r   c                 >    g | ]}t          |j                  |S r   r  r  s     r   r%  zFTestDataFramePlots.test_hist_with_nans_and_weights.<locals>.<listcomp>  s;     
 
 
Z;;P-Q-Q

 
 
r   c                 6    g | ]}|                                 S r   r  r  s     r   r%  zFTestDataFramePlots.test_hist_with_nans_and_weights.<locals>.<listcomp>  s"    EEE$//++EEEr   c              3   (   K   | ]\  }}||k    V  d S r$   r   )r$  h0h1s      r   	<genexpr>zETestDataFramePlots.test_hist_with_nans_and_weights.<locals>.<genexpr>  s*      GGB28GGGGGGr   r  r  z?weights must have the same shape as data, or be a single columnrK   )rM   r   r   rT   nanr  arrayr9   r:   r;   r   r%   r(  allrk  rN   rO   )r'   rZ   r  	no_nan_dfno_nan_weightsrC   ax0r+  heightsrG   no_nan_rectsno_nan_heightsidxerror_weightsrP   rH   r  s                  @r   test_hist_with_nans_and_weightsz2TestDataFramePlots.test_hist_with_nans_and_weightss  s   )*>??fc3#rvrv!6HKK
 
 
 (,,,--@$u++VVV	#4#4#46H6H6H"IJJ$$&&3
W---WWWWC,,..WWW77777$$&&3sN;;;
 
 
 
''))
 
 
 FEEEEGG#g~*F*FGGGGGGGG8c4[4,$?@@O]:S111 	B 	BZ((**FAsN30@AAA	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	B 	Bs   #>H..H25H2) r   r   r   rM   r   r   r   r   r  r  r   r
  r  r,  r.  r3  r:  rb   rC  rH  rS  ra  r   r   r   rr  r{  r}  r  r  r  r  r   r   r   r   r      s       [, , , [( ( ($ [# # # [; ; ; [[dd33i5IFTU;W 1 1  1  [U U U [< < < [* * * [       2 [f557777777788888888
	
 = = =% % %0" " ") ) )& [0001***,I,I,IJ	
 " " ", [	
 	
 	
 7 7 7 [TD#;//[Xc{335 5 43 0/5< [TD#;//[Xc{33
B 
B 43 0/
B% % %	% 	% 	%	% 	% 	%5 5 5 , , ,, , , B B B B 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                            d	g d
g dg dg          d                         Zej        j        d             Zej        j        ej                            dg dg dg dg          d                         Zej        j        ej                            di dddg          d                         Zej        j        e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                            d(g d)          d*             Zd+S ),TestDataFrameGroupByPlotsc                    ddl m} t          j                            d          }t          |                    d          dg          }t          |                    dddt          j	        	                    |d
<   |                    ddd          |d<   dgdz  |d<    ||j
        |j                  }t          |dd           d S )Nr   _grouped_histr"   r   rv  rd  r   r   r   rw  rj   rx  Xry  r   rl   rr   ) pandas.plotting._matplotlib.histr  rT   rU   rV   r   rW   r   r   r   rv  rx  r   r'   r  rsrZ   rv   s        r   test_grouped_hist_legacyz2TestDataFrameGroupByPlots.test_grouped_hist_legacy  s    BBBBBBY""2&&r))'22SEBBBKK""h	   
 
3 ++aB''3%"*3}RTbd+++$6::::::r   c                    t           j                            d          }t          |                    d          dg          }t          |                    dddt           j                            |d<   |                    d	d
d          |d<   dgdz  |d<   |                    |j	                  }t          |d
d           d S )Nr"   r   rv  rd  r   r   r   rw  r   rj   rx  r  ry  r   rl   rr   )rT   rU   rV   r   rW   r   r   r   r%   rx  r   r'   r  rZ   rv   s       r   *test_grouped_hist_legacy_axes_shape_no_colzDTestDataFrameGroupByPlots.test_grouped_hist_legacy_axes_shape_no_col  s    Y""2&&r))'22SEBBBKK""h	   
 
3 ++aB''3%"*3ww"$w$6::::::r   c                    t           j                            d          }t          |                    d          dg          }t          |                    dddt           j                            |d	<   |                    d
dd          |d<   dgdz  |d<   |                    dd          }t          |dd           t          |d           d S )NrF   r   rv  rd  r   r   r"   r   rw  r   rj   rx  r  ry  r   )r.   rotr5   r]   rr   rR  )rT   rU   rV   r   rW   r   r   r   r%   r   r   r  s       r   #test_grouped_hist_legacy_single_keyz=TestDataFrameGroupByPlots.test_grouped_hist_legacy_single_key  s    Y""1%%r))'22SEBBBKK""h	   
 
3 ++aB''3%"*3ww#2w&&$6::::4b))))))r   c                    ddl m ddlm} t          j                            d          }t          |                    d          dg          }t          |
                    dd	d
t          j                            |d<   |
                    ddd
          |d<   d\  }}d\  }} ||j        |j        dd||||d	  	        }|                                D ]Q}	fd|	                                D             }
|
d                                         }t#          j        |d           Rt'          |||||           d S )Nr   r  r  rF   r   rv  rd  r   r   r"   r   rw  rj   rx  r  r  T)r.   r  r)   r  r  r  r  r   c                 4    g | ]}t          |          |S r   r!  r#  s     r   r%  zZTestDataFrameGroupByPlots.test_grouped_hist_legacy_grouped_hist_kwargs.<locals>.<listcomp>  s(    NNN1Z95M5MNQNNNr   rg   r&  r  )r'  r  r  r  rT   rU   rV   r   rW   r   r   r   rv  rx  ravelr(  r*  r   r)  r   )r'   r  r  rZ   r  r  r  r  rv   r6   r+  r`   r  s               @r   ,test_grouped_hist_legacy_grouped_hist_kwargszFTestDataFrameGroupByPlots.test_grouped_hist_legacy_grouped_hist_kwargs  s}   000000BBBBBBY""1%%r))'22SEBBBKK""h	   
 
3 ++aB''3B
d}Dt

 

 

 **,, 	0 	0BNNNN 1 1NNNE2Y))++F"63////4BTbtTTTTTTr   c                    ddl m} t          j                            d          }t          |                    d          dg          }t          |                    ddd	t          j	        
                    |d<   |                    ddd	          |d<   dgd	z  |d<    ||j
        |j        d          }t          |d           d S )Nr   r  rF   r   rv  rd  r   r   r"   r   rw  rj   rx  r  ry  T)r.   r   r   r   )r  r  rT   rU   rV   r   rW   r   r   r   rv  rx  r   r  s        r   %test_grouped_hist_legacy_grouped_histz?TestDataFrameGroupByPlots.test_grouped_hist_legacy_grouped_hist  s    BBBBBBY""1%%r))'22SEBBBKK""h	   
 
3 ++aB''3%"*3}RTbd555U++++++r   c                    ddl m} t          j                            d          }t          |                    d          dg          }t          |                    ddd	t          j	        
                    |d<   |                    ddd	          |d<   dgd	z  |d<   t          j        t                    5   ||j        |j        d           d d d            d S # 1 swxY w Y   d S )Nr   r  rF   r   rv  rd  r   r   r"   r   rw  rj   rx  r  ry  r   )r.   r0  )r  r  rT   rU   rV   r   rW   r   r   r   r   r1  r2  rv  rx  )r'   r  r  rZ   s       r   %test_grouped_hist_legacy_external_errz?TestDataFrameGroupByPlots.test_grouped_hist_legacy_external_err  s<   BBBBBBY""1%%r))'22SEBBBKK""h	   
 
3 ++aB''3%"*3%n55 	4 	4M"$24U3333	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4 	4s   :C  C$'C$c                    t           j                            d          }t          |                    d          dg          }t          |                    dddt           j                            |d	<   |                    d
dd          |d<   dgdz  |d<   d}t          j	        t          |          5  |                    dd           d d d            d S # 1 swxY w Y   d S )NrF   r   rv  rd  r   r   r"   r   rw  r   rj   rx  r  ry  z$Specify figure size by tuple insteadrK   default)r.   r   )rT   rU   rV   r   rW   r   r   r   rM   rN   rO   r%   )r'   r  rZ   rP   s       r   $test_grouped_hist_legacy_figsize_errz>TestDataFrameGroupByPlots.test_grouped_hist_legacy_figsize_err  s.   Y""1%%r))'22SEBBBKK""h	   
 
3 ++aB''3%"*34]:S111 	/ 	/GGsIG...	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   8CC!$C!c                    d}t          t          j                            d                              dd|                    }t          t          j                            d                              dd|                    }t          j                            d                              ddg|          }t          |||d	          }|                    d
          }|                                }t          |          dk    sJ t          t          j                                                  dk    sJ d S )Nr"   rF      r  rc  <   r   r5   )r`   weightrc   rc   )r   rT   rU   rV   normalchoicer   groupbyr%   rX   r9   r:   r   )r'   nr  r`   
gender_intdf_intgbrv   s           r   test_grouped_hist_legacy2z3TestDataFrameGroupByPlots.test_grouped_hist_legacy2%  s   	--a0077Ra7HHII	--a0077BQ7GGHHY**1--44aV!4DD
f*UUVV^^H%%wwyy4yyA~~~~3:))++,,111111r   zmsg, plot_col, by_col, layout)z1Layout of 1x1 must be larger than required size 2r  rc   r]   )z1Layout of 1x3 must be larger than required size 4r`   rh   r\  )r?  r`   rh   r@  c                     |}t          j        t          |          5  |                    |t	          ||          |           d d d            d S # 1 swxY w Y   d S )NrK   rQ  r.   r_   )rM   rN   rO   r%   rt   )r'   ra   rP   plot_colby_colr_   rZ   s          r   test_grouped_hist_layout_errorz8TestDataFrameGroupByPlots.test_grouped_hist_layout_error0  s    2 ]:S111 	L 	LGG8F(;(;FGKKK	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	L 	Ls   'AAAc                     |}t          j        t          d          5  t          |j        d|j        d          }d d d            n# 1 swxY w Y   t          |dd           d S )NFr,   r`   rd   r  rF   rr   )r   r/   r0   r   r%   rc   r   r}   s       r    test_grouped_hist_layout_warningz:TestDataFrameGroupByPlots.test_grouped_hist_layout_warningM  s    'eLLL 	 	$RYv  D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$6::::::s   AAAzlayout, check_layout, figsize)ri   ri   N))rg   r5   ri   N)ry   ry   )rz   r!   c                 l    |}|                     d|j        ||          }t          |d||           d S )Nr`   )rQ  r.   r_   r   rj   r|   )r%   rh   r   )r'   ra   r_   check_layoutr   rZ   rv   s          r    test_grouped_hist_layout_figsizez:TestDataFrameGroupByPlots.test_grouped_hist_layout_figsizeV  sA     wwh2;vwwWW$<QQQQQQr   r   r`   rl   )rQ  r_   c                     |}t          j        t          d          5  t          |j        fddi|}d d d            n# 1 swxY w Y   t          |dd           d S )NFr,   r.   ro   rf   rl   rr   )r   r/   r0   r   r%   r   )r'   ra   r   rZ   rv   s        r   #test_grouped_hist_layout_by_warningz=TestDataFrameGroupByPlots.test_grouped_hist_layout_by_warning`  s     'eLLL 	H 	H$RWGGGGGD	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H$6::::::s   ?AAzkwargs, axes_num, layoutrc   )rf   r*   rq   rF   rQ  r`   r  rh   rf   c                 H    |} |j         di |}t          |||           d S )Nrr   r   )r%   r   )r'   ra   r   rs   r_   rZ   rv   s          r   test_grouped_hist_layout_axesz7TestDataFrameGroupByPlots.test_grouped_hist_layout_axesi  s;     rw    $&AAAAAAr   c                 
   |}t           j                            dd          \  }}|                    g d|d                   }t	          |dd           t          j        ||d                    |d         j        |u sJ d S )NrF   rf   r  r   rQ  r6   r\  rr   r9   r:   r;   r%   r   r   assert_numpy_array_equalr@   r'   ra   rZ   r=   rv   returneds         r   test_grouped_hist_multiple_axesz9TestDataFrameGroupByPlots.test_grouped_hist_multiple_axesv  s    J''1--	T77"B"B"BtAw7OO(Qv>>>>
#Hd1g666{!S((((((r   c                    |}t           j                            dd          \  }}|                    d|d                   }t	          |dd           t          j        ||d                    |d         j        |u sJ d S )	NrF   rf   ro   r5   )r.   r6   r\  rr   r   r  r  s         r   'test_grouped_hist_multiple_axes_no_colszATestDataFrameGroupByPlots.test_grouped_hist_multiple_axes_no_cols  s    J''1--	T77kd1g766(Qv>>>>
#Hd1g666{!S((((((r   c                     |}t           j                            dd          \  }}d}t          j        t
          |          5  |                    d|          }d d d            d S # 1 swxY w Y   d S )NrF   rf   z@The number of passed axes must be 1, the same as the output plotrK   r`   r  )r9   r:   r;   rM   rN   rO   r%   )r'   ra   rZ   r=   rv   rP   s         r   %test_grouped_hist_multiple_axes_errorz?TestDataFrameGroupByPlots.test_grouped_hist_multiple_axes_error  s    J''1--	TP]:S111 	5 	577(t744D	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5 	5s   A((A,/A,c                 r   |}|                     d|j        d          \  }}t          |                              ||          sJ t          |                              ||          sJ t	          |                              ||          rJ t	          |                              ||          rJ d S )Nr`   T)rQ  r.   r  r%   rc   r   joinedr   r'   ra   rZ   rG   rH   s        r   test_axis_share_xz+TestDataFrameGroupByPlots.test_axis_share_x  s    77(ry7FFS #%%c3/////#%%c3///// c??))#s33333c??))#s3333333r   c                 r   |}|                     d|j        d          \  }}t          |                              ||          sJ t          |                              ||          sJ t	          |                              ||          rJ t	          |                              ||          rJ d S )Nr`   T)rQ  r.   r  )r%   rc   r   r  r   r  s        r   test_axis_share_yz+TestDataFrameGroupByPlots.test_axis_share_y  s    77(ry7FFS #%%c3/////#%%c3///// c??))#s33333c??))#s3333333r   c                 t   |}|                     d|j        dd          \  }}t          |                              ||          sJ t          |                              ||          sJ t	          |                              ||          sJ t	          |                              ||          sJ d S )Nr`   T)rQ  r.   r  r  r  r  s        r   test_axis_share_xyz,TestDataFrameGroupByPlots.test_axis_share_xy  s    77(ryd7SSS #%%c3/////#%%c3/////#%%c3/////#%%c3///////r   r   r   c                     t          t          j                            d                              ddd          ddg          }|                    d|	          }t          ||
           d S )NrF   r5   r"   rS   rc  r   r   rd  )r.   r   r   rf  rg  s        r   r   z0TestDataFrameGroupByPlots.test_histtype_argument  sw     I!!!$$--a'-BBSRUJ
 
 
 WWhW//!"X666666r   N)r   r   r   r  r  r  r  r  r  r  r  rM   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r   r   r   r   r  r    s       ; ; ;&; ; ; * * *$$U $U $UL, , ,&4 4 4&/ / /"	2 	2 	2 [['      	
 .L L/  0L
 [; ; ; [['			!8!8!8:S:S:ST R R	  
R
 [[Xx6,R,R'STT; ; UT ; [["//F;88891fE	
 B B  B
) ) )) ) )5 5 54 4 4
4 
4 
4	0 	0 	0 [	
 	
 	
 7 7 7 7 7r   r  )__doc__rA  numpyrT   rM   pandasr   r   r   r   pandas._testing_testingr   pandas.tests.plotting.commonr   r   r	   r
   r   r   r   r   r   r   r   r9   fixturer   r   r   r  r   r   r   <module>r     s   # # 				                                              f,'' ( ( (U$ U$ U$ U$ U$ U$ U$ U$pTB TB TB TB TB TB TB TBnt7 t7 t7 t7 t7 t7 t7 t7 t7 t7r   