
    bMh                        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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
date_rangeto_datetime)
_check_ax_scales_check_axes_shape_check_colors_check_legend_labels_check_patches_all_filled_check_plot_works_check_text_labels_check_ticks_props
get_x_axis
get_y_axis
matplotlibc                      t          t          j        dt          j                  t	          ddd          d          S )N   dtypez
2020-01-01B)periodsfreqtsindexname)r   nparangefloat64r        f/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/tests/plotting/test_hist_method.pyr   r      sB    
	"BJ'''r<<<   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)tmassert_produces_warningUserWarningr   r.   r   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.   r0   r   figr?   s       r#   test_hist_legacy_axz#TestSeriesPlots.test_hist_legacy_ax3   s:    *%%a++R"'bt<<<<<<r"   c                 |    t           j                            dd          \  }}t          |j        ||d           d S )Nr>   T)r?   figurer@   rA   rE   s       r#   test_hist_legacy_ax_and_figz+TestSeriesPlots.test_hist_legacy_ax_and_fig7   s<    *%%a++R"'b4HHHHHHr"   c                 z    t           j                            dd          \  }}t          |j        |d           d S )Nr>   T)rI   r@   rA   )r0   r   rF   _s       r#   test_hist_legacy_figz$TestSeriesPlots.test_hist_legacy_fig;   s:    $$Q**Q"'#DAAAAAAr"   c                     t           j                            dd          \  }\  }}t          |j        ||d           t          |j        ||d           d S )Nr>      T)rI   r?   r@   rA   )r0   r   rF   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 )Nr>   z`Cannot pass 'figure' when using the 'by' argument, since a new 'Figure' instance will be createdmatch)r7   rI   )rB   rC   rD   pytestraises
ValueErrorr.   r   )r0   r   rF   rL   msgs        r#   test_hist_legacy_by_fig_errorz-TestSeriesPlots.test_hist_legacy_by_fig_errorD   s    $$Q**Q' 	 ]:S1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 )NrO   r+   rO   )r2   r   )r   r   randomdefault_rngstandard_normalr.   lenpatches)r0   dfr?   s      r#   test_hist_bins_legacyz%TestSeriesPlots.test_hist_bins_legacyM   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 NonerT   r>   r>   layoutr>   )rV   rW   rX   heightr.   )r0   hist_dfrb   rY   s       r#   test_hist_layoutz TestSeriesPlots.test_hist_layoutR   s!   G]:S1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rO   r>   rO   rl   )rk      rO   )rn   r>   )category   r>   rr   rq   )rp   rO   ro   rr   rO   rO   )rp   rm   rr   )rn   rO   )rp   ro   rr   rr   r>   rr   )	classroomrt   rn   rt   c                     |}t          j        t          d          5  t          |j        j        t          ||          |          }d d d            n# 1 swxY w Y   t          |||           d S )NFr5   r7   rg   axes_numrg   )r8   r9   r:   r   rh   r.   getattrr	   )r0   ri   r7   rg   r{   
res_layoutrb   axess           r#   test_hist_layout_with_byz(TestSeriesPlots.test_hist_layout_with_by[   s     
 'eL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rr   rO   )      )r7   rg   r(   rr   r{   rg   r(   )rh   r.   rp   r	   r0   ri   rb   r~   s       r#   test_hist_layout_with_by_shapez.TestSeriesPlots.test_hist_layout_with_by_shaper   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subplotrO   y   z   )matplotlib.pyplotr   r   r   r   r]   r^   r_   r.   r~   r`   )r0   r   r   xyrF   r~   s          r#   test_hist_no_overlapz$TestSeriesPlots.test_hist_no_overlapx   s    	
 	
 	
 	
 	
 	
 	
 	

 29((++;;A>>??29((++;;A>>??		ceex4yyA~~~~~~r"   c                     |}|j                             |j                   t          t          j                                                  dk    sJ d S )Nr7   r>   )rh   r.   rk   r`   rB   rC   get_fignums)r0   ri   rb   s      r#   test_hist_by_no_extra_plotsz+TestSeriesPlots.test_hist_by_no_extra_plots   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   )rI   o   z&passed axis not bound to passed figurerT   )r?   rI   )pylabrI   add_subplotrV   rW   AssertionErrorr.   )r0   r   rI   fig1fig2rP   rY   s          r#   +test_plot_fails_when_ax_differs_from_figurez;TestSeriesPlots.test_plot_fails_when_ax_differs_from_figure   s          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 )NrO   r>   r+   histtypefilled)r   r   r]   r^   integersr.   r   )r0   r   expectedserr?   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)Nr>   re   )brO   )r>   rO   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2rO   r   ar   r   T)r@   legendr7   rz   )r   r   r]   r^   r_   r   r   r   r.   r	   r   )r0   r7   expected_axes_numexpected_layoutr   sr~   s          r#   test_hist_with_legendz%TestSeriesPlots.test_hist_with_legend   s    
 cU
R3%Z'29((++;;B??uSVWWW !d4BOOO$):?SSSST3'''''r"   r7   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   rO   r   r   r   r    Cannot use both legend and labelrT   Tc)r   r7   label)r   r   r]   r^   r_   r   r   rV   rW   rX   r.   )r0   r7   r   r   s       r#   test_hist_with_legend_raisesz,TestSeriesPlots.test_hist_with_legend_raises   s     cU
R3%Z'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 )Nr3   r2   r?   	Frequency)
rB   rC   rD   plotr.   r`   ra   r   yaxis	get_labelr0   r   rL   r?   s       r#   test_hist_kwargsz TestSeriesPlots.test_hist_kwargs   sm    
##%%2W\\qR\((2:!####28--//=====r"   c                    t           j                                        \  }}|j                            d|          }|j                            d|          }t          |j                                        d           d S )Nr3   r   
horizontal)orientationr?   r   )rB   rC   rD   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 )Nr3   r   leftT)alignstackedr?   )rB   rC   rD   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)logyr?   logr    )rV   importorskiprB   rC   rD   r   r.   r   get_xticklabelsr   r`   get_yticklabelsr0   r   rL   r?   xlabelsylabelss         r#   test_hist_kdezTestSeriesPlots.test_hist_kde   s    G$$$
##%%2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   )rV   r   r   r   kder0   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   )rV   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   )rV   r   rB   rC   rD   r   r   r   r   r   r`   r   r   s         r#   test_hist_kde_logyz"TestSeriesPlots.test_hist_kde_logy   s    G$$$
##%%2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   r2   colorr?   r   r   )
facecolors)rV   r   rB   rC   rD   r   r.   r   r`   ra   r
   r   s       r#   test_hist_kde_color_binsz(TestSeriesPlots.test_hist_kde_color_bins   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   r?   r   r   r>   )rV   r   rB   rC   rD   r   r   r   	get_linesr`   r
   )r0   r   rL   r?   liness        r#   test_hist_kde_colorz#TestSeriesPlots.test_hist_kde_color   s    G$$$
##%%2W[[d#"[555))))5zzQecU#####r"   )"__name__
__module____qualname__rV   markparametrizer1   r<   rG   rJ   rM   rR   rZ   rc   rj   slowr   r   r   r   r   r   r   r   r   r   r   xfailr   r   r   r   r   r   r!   r"   r#   r%   r%   (   s?       [XVUOi=Q'RS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 )NFr5   )r8   r9   r:   r   r.   )r0   ri   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 )NrO   r\        j+2Z     ReZr+   sizer   Fr5   )r'   rn   rt   rz   re   )r   r   r]   r^   r_   r   r   int64r8   r9   r:   r   r.   r	   get_visibler0   rb   r~   s      r#   test_hist_df_legacy_layoutz-TestDataFramePlots.test_hist_df_legacy_layout  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 )NrO   r+   r>   )r   r   r]   r^   r_   r   r.   r0   rb   s     r#   test_hist_df_legacy_layout2z.TestDataFramePlots.test_hist_df_legacy_layout2  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 )NrO   r+   r3   r   r   r+   r   r3   Fr5   r   rf      rz   )r   r   r]   r^   r_   r   r   r   r8   r9   r:   r   r.   r	   r  s      r#   test_hist_df_legacy_layout3z.TestDataFramePlots.test_hist_df_legacy_layout3  s    ry,,Q//??HHIII!!!$$--""h	 .  
 
1 'eLLL 	= 	=$RWV<<<D	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	= 	=$6::::::r  r&   T)sharexshareyr(   r)   r2   r3   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 )
NrO   r	  r   r   r+   r   r3   Fr5   )r   r   r]   r^   r_   r   r   r   r8   r9   r:   r   r.   )r0   r&   rb   s      r#   !test_hist_df_legacy_layout_kwargsz4TestDataFramePlots.test_hist_df_legacy_layout_kwargs.  s   
 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   )r0   frame_or_seriesobjxfyfr  r  r~   s           r#   (test_hist_df_legacy_layout_labelsize_rotz;TestDataFramePlots.test_hist_df_legacy_layout_labelsize_rotB  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+   Trr   )
cumulativer2   r   c                 4    g | ]}t          |          |S r!   
isinstance.0r   r#  s     r#   
<listcomp>zETestDataFramePlots.test_hist_df_legacy_rectangles.<locals>.<listcomp>R  s(    JJJqAy1I1IJJJJr"   ro         ?)	matplotlib.patchesr#  r   r  r.   get_childrenr8   assert_almost_equal
get_height)r0   r   r?   rectsr#  s       @r#   test_hist_df_legacy_rectanglesz1TestDataFramePlots.test_hist_df_legacy_rectanglesK  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   )r0   r   r?   s      r#   test_hist_df_legacy_scalez,TestDataFramePlots.test_hist_df_legacy_scaleU  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  r8   external_error_raisedAttributeErrorr.   )r0   r   s     r#   "test_hist_df_legacy_external_errorz5TestDataFramePlots.test_hist_df_legacy_external_error\  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 )NrO   r+   r   l     p/ l    @spc/ r   T)utc)r   r   r   dzDhist method requires numerical or datetime columns, nothing to plot.rT   )r   r   r]   r^   r   r   r   astypeobjectrV   rW   rX   r.   )r0   rb   df_orY   s       r#   *test_hist_non_numerical_or_datetime_raisesz=TestDataFramePlots.test_hist_non_numerical_or_datetime_raisesc  s   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_testNrt   )rg   expected_sizerq   rv   )rn   rn   ru   )rr   ro   )ro   rO   rs   c                    t          t          j                            d                              d                    }t          t          j                            d                              dddt          j                            |d<   |                    |d                   }|d	         }t          |d
|           d S )NrO   r\   r   r   r+   r   rg   rf   rA  rn   rz   )
r   r   r]   r^   r_   r   r   r   r.   r	   )r0   r@  rb   r~   r   s        r#   rj   z#TestDataFramePlots.test_hist_layout|  s     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 )NrO   r\   r   r   r+   r   z1Layout of 1x1 must be larger than required size 3rT   re   rf   z)Layout must be a tuple of (rows, columns))r>   1At least one dimension of layout must be positivero   ro   )r   r   r]   r^   r_   r   r   r   rV   rW   rX   r.   reescape)r0   rb   rY   s      r#   test_hist_layout_errorz)TestDataFramePlots.test_hist_layout_error  s   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 )	NrO   d   rO   r   r   rK  r   T)r@   )r   r   r]   r^   r_   r   r   r   r   r.   rB   rC   tight_layoutr  s     r#   test_tight_layoutz$TestDataFramePlots.test_tight_layout  s    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??rn   )pigrabbitrR  rR  rS  )lengthanimalTrT  rU  r3   r   )r@   columnr7   r2   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widthrT  rh   )rT  rZ  rh   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?r]  g?rO  )rn   rP  g333333@rO   r>   rY  )rR  rS  duckchickenhorse)r   Tr>   rn   )r@   rV  rg   c                 H    g | ]}d |f                                          S )r   )	get_title)r)  ir~   s     r#   r*  zGTestDataFramePlots.test_hist_column_order_unchanged.<locals>.<listcomp>  s-    ;;;Q$q!t*&&((;;;r"   rn   )r   r   r.   r  )r0   rV  r   rb   resultr~   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 )NrO   r>   r+   rJ  r   r   r   columnsr   r   r   r   r]   r^   r   r.   r   r0   r   r   rb   r?   s        r#   r   z)TestDataFramePlots.test_histtype_argument  su     I!!!$$--a(-CCcSVZ
 
 
 WWhW''!"X666666r"   r7   r   rV  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 )Nr>   rO   r   r   r   r   r   r   r   r   rO   r   rj  T)r@   r   r7   rV  rz   r   )r   r   r   r]   r^   r_   r   r.   r	   zipr   )r0   r7   rV  r   r   expected_labelsr   rb   r~   expected_labelr?   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   rn  rO   ro  r   r   rp  r   rT   Tr;  )r   r7   rV  r   )
r   r   r   r]   r^   r_   rV   rW   rX   r.   )r0   r7   rV  r   rb   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 )NrO   r\   r3   r   r+   r   r   r]   r^   r_   rB   rC   rD   r   r.   r`   ra   r0   rb   rL   r?   s       r#   test_hist_df_kwargsz&TestDataFramePlots.test_hist_df_kwargs-  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 )NrO   r+   rr   Ar   CDri  r   r   r3   Er   r  rv  rw  s       r#   test_hist_df_with_nonnumericsz0TestDataFramePlots.test_hist_df_with_nonnumerics3  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 )NrO   rz  r{  ri  r   r   r3   r  )r?   r  rv  rw  s       r#   %test_hist_df_with_nonnumerics_no_binsz8TestDataFramePlots.test_hist_df_with_nonnumerics_no_bins>  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 )NrO   r   rr   abcdri  r   T)r   r?   r   r?   r   secondary_y	b (right)labels)r   r   r]   r^   r_   listrB   rC   rD   r   r.   r   	get_yaxisr   right_axrw  s       r#   test_hist_secondary_legendz-TestDataFramePlots.test_hist_secondary_legendI  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 )NrO   r  r  ri  r   Tr   r  r?   r   r  	a (right)r  r  r   r   r]   r^   r_   r  rB   rC   rD   r   r.   r   left_axr  r   rw  s       r#   test_hist_secondary_secondaryz0TestDataFramePlots.test_hist_secondary_secondaryY  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 )NrO   r  r  ri  r   Tr  r   )r?   r   r  r  r  rw  s       r#   test_hist_secondary_primaryz.TestDataFramePlots.test_hist_secondary_primaryh  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.patchesr]  333333?皙?)r\  g?rQ  abcri  )      ?r  ?)r  r]  r  )r  r  r  )r  r  r  )r?   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 columnrT   )rV   r   r   r   nanr  arrayrB   rC   rD   r   r.   r-  allrq  rW   rX   )r0   rb   r  	no_nan_dfno_nan_weightsrL   ax0r0  heightsrP   no_nan_rectsno_nan_heightsidxerror_weightsrY   rQ   r  s                  @r#   test_hist_with_nans_and_weightsz2TestDataFramePlots.test_hist_with_nans_and_weightsx  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   rV   r   r   r   r  r  r  r   r  r   r1  r3  r8  r?  rj   rH  rM  rX  rf  r   r   r   rx  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  r|  ri  r   r   r   r   rr   r}  Xr~  r   rt   rz   ) pandas.plotting._matplotlib.histr  r   r]   r^   r   r_   r   r   r   r|  r}  r	   r0   r  rsrb   r~   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  r|  ri  r   r   r   r   r   rr   r}  r  r~  r   rt   rz   )r   r]   r^   r   r_   r   r   r   r.   r}  r	   r0   r  rb   r~   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 )NrO   r  r|  ri  r   r   r+   r   r   r   rr   r}  r  r~  r   )r7   rotr>   re   rz   rW  )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    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  rO   r  r|  ri  r   r   r+   r   r   rr   r}  r  r  T)r7   r$  r2   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"   ro   r+  r  )r,  r#  r  r  r   r]   r^   r   r_   r   r   r   r|  r}  ravelr-  r/  r8   r.  r   )r0   r  r  rb   r  r  r  r  r~   r?   r0  rh   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  rO   r  r|  ri  r   r   r+   r   r   rr   r}  r  r~  T)r7   r   r   r   )r  r  r   r]   r^   r   r_   r   r   r   r|  r}  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  rO   r  r|  ri  r   r   r+   r   r   rr   r}  r  r~  r   )r7   r5  )r  r  r   r]   r^   r   r_   r   r   r   r8   r6  r7  r|  r}  )r0   r  r  rb   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 )NrO   r  r|  ri  r   r   r+   r   r   r   rr   r}  r  r~  z$Specify figure size by tuple insteadrT   default)r7   r(   )r   r]   r^   r   r_   r   r   r   rV   rW   rX   r.   )r0   r  rb   rY   s       r#   $test_grouped_hist_legacy_figsize_errz>TestDataFrameGroupByPlots.test_grouped_hist_legacy_figsize_err  s.   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+   rO      r  rh  <   r   r>   )rh   weightrk   rk   )r   r   r]   r^   normalchoicer   groupbyr.   r`   rB   rC   r   )r0   nr  rh   
gender_intdf_intgbr~   s           r#   test_grouped_hist_legacy2z3TestDataFrameGroupByPlots.test_grouped_hist_legacy2*  s   	--a0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  rk   re   )z1Layout of 1x3 must be larger than required size 4rh   rp   ra  )rD  rh   rp   rE  c                     |}t          j        t          |          5  |                    |t	          ||          |           d d d            d S # 1 swxY w Y   d S )NrT   rV  r7   rg   )rV   rW   rX   r.   r|   )r0   ri   rY   plot_colby_colrg   rb   s          r#   test_grouped_hist_layout_errorz8TestDataFrameGroupByPlots.test_grouped_hist_layout_error5  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 )NFr5   rh   rl   r  rO   rz   )r8   r9   r:   r   r.   rk   r	   r   s       r#    test_grouped_hist_layout_warningz:TestDataFrameGroupByPlots.test_grouped_hist_layout_warningR  s    'eLLL 	 	$RYv  D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	$6::::::s   AAAzlayout, check_layout, figsize)rq   rq   N))ro   r>   rq   N)r   r   )r   r*   c                 l    |}|                     d|j        ||          }t          |d||           d S )Nrh   )rV  r7   rg   r(   rr   r   )r.   rp   r	   )r0   ri   rg   check_layoutr(   rb   r~   s          r#    test_grouped_hist_layout_figsizez:TestDataFrameGroupByPlots.test_grouped_hist_layout_figsize[  sA     wwh2;vwwWW$<QQQQQQr"   r&   rh   rt   )rV  rg   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 )NFr5   r7   rw   rn   rt   rz   )r8   r9   r:   r   r.   r	   )r0   ri   r&   rb   r~   s        r#   #test_grouped_hist_layout_by_warningz=TestDataFrameGroupByPlots.test_grouped_hist_layout_by_warninge  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, layoutrk   )rn   r3   ry   rO   rV  rh   r  rp   rn   c                 H    |} |j         di |}t          |||           d S )Nrz   r!   )r.   r	   )r0   ri   r&   r{   rg   rb   r~   s          r#   test_grouped_hist_layout_axesz7TestDataFrameGroupByPlots.test_grouped_hist_layout_axesn  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 )NrO   rn   r  r   rV  r?   ra  rz   rB   rC   rD   r.   r	   r8   assert_numpy_array_equalrI   r0   ri   rb   rF   r~   returneds         r#   test_grouped_hist_multiple_axesz9TestDataFrameGroupByPlots.test_grouped_hist_multiple_axes{  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 )	NrO   rn   rw   r>   )r7   r?   ra  rz   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 )NrO   rn   z@The number of passed axes must be 1, the same as the output plotrT   rh   r  )rB   rC   rD   rV   rW   rX   r.   )r0   ri   rb   rF   r~   rY   s         r#   %test_grouped_hist_multiple_axes_errorz?TestDataFrameGroupByPlots.test_grouped_hist_multiple_axes_error  s    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 )Nrh   T)rV  r7   r  r.   rk   r   joinedr   r0   ri   rb   rP   rQ   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 )Nrh   T)rV  r7   r  )r.   rk   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 )Nrh   T)rV  r7   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 )NrO   r>   r+   r\   rh  r   r   ri  )r7   r   r   rk  rl  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  rV   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__rF  numpyr   rV   pandasr   r   r   r   r   pandas._testing_testingr8   pandas.tests.plotting.commonr   r	   r
   r   r   r   r   r   r   r   r   rB   fixturer   r%   r   r  r!   r"   r#   <module>r	     s   # # 				                                                f,''   U$ U$ 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"   