
    MhA                    .   S SK Jr  S SKJrJrJrJr  S SKrS SK	J
r
Jr  S SKJrJr  S SKJrJr  S SKJr  S SKJrJr  S S	KJrJr  S S
KJr  S SKJrJrJrJ r   \(       a  S SK!J"r"  S SK#J$r$  S SK%J&r&  S SK'J(r(J)r)   " S S\5      r* " S S\*5      r+         S           SS jjr,               S                   SS jjr-          S             SS jjr.              S                 SS jjr/g)     )annotations)TYPE_CHECKINGAnyLiteralfinalN)
is_integeris_list_like)ABCDataFrameABCIndex)isnaremove_na_arraylike)pprint_thing)LinePlotMPLPlot)create_iter_data_given_byreformat_hist_y_given_by)unpack_single_str_list)create_subplotsflatten_axesmaybe_adjust_figureset_ticks_props)Axes)Figure)PlottingOrientation)	DataFrameSeriesc                      \ rS rSr\SS j5       r  SSSS.     SS jjjrSS jrSS jr\	    S       SS jj5       r
SS	 jrSS
 jr\\SS j5       5       rSS jr\SS j5       rSrg)HistPlot6   c                    g)Nhist selfs    R/var/www/html/env/lib/python3.13/site-packages/pandas/plotting/_matplotlib/hist.py_kindHistPlot._kind7   s        N)rangeweightsc               &   [        U5      (       a  [        R                  " U5      nX0l        X@l        XPl        UR                  S5      U l        UR                  S5      U l        [        R                  " X40 UD6  U R                  U5      U l        g )Nxlabelylabel)r	   nparraybottom
_bin_ranger*   getr,   r-   r   __init___adjust_binsbins)r$   datar5   r0   r)   r*   kwargss          r%   r3   HistPlot.__init__;   sq     XXf%Fjj*jj*.v.%%d+	r(   c                L   [        U5      (       a  U R                  bd  [        U R                  5      nU R                  R	                  U5      U R
                     nU VVs/ s H  u  pEU R                  XQ5      PM     nnnU$ U R                  U R                  U5      nU$ s  snnf N)r   byr   r6   groupbycolumns_calculate_bins)r$   r5   by_modifiedgroupedkeygroups         r%   r4   HistPlot._adjust_binsS   s    dww"4TWW=))++K8FLSTGjc,,U9GT  ++DIIt< Us    B c                    UR                  SS9R                  5       n[        R                  " U5      nU[	        U5      )    n[        R
                  " XBU R                  S9u  pRU$ )zCalculate bins given dataF)copy)r5   r)   )infer_objects_get_numeric_datar.   ravelr   	histogramr1   )r$   r6   r5   	nd_valuesvaluesr!   s         r%   r>   HistPlot._calculate_bins]   sW    &&E&2DDF	)$f&\\&4??K
r(   c                  US:X  a  U R                  X[        U5      S-
  5        [        R                  " [        U5      S-
  5      n	X@R	                  XXS   5      -   nUR
                  " U4XtS.UD6u  pnU R                  XU
5        U$ )Nr      label)r5   r0   )_initialize_stackerlenr.   zeros_get_stacked_valuesr!   _update_stacker)clsaxystyler0   
column_numstacking_idr5   kwdsbasenpatchess               r%   _plotHistPlot._plotg   s     ?##BSY]CxxD	A&11"4gWW771G4G$GBQ/r(   c                   U R                  5       nU R                  5       nU R                  b   [        U R                  U R
                  5      OU R                  n[        U R                  US95       GHm  u  nu  pgU R                  U5      nU R                  R                  5       n	U R                  b  U R                  U	S'   [        U5      nU R                  XeS9nXiS'   U R                  X)XV5      u  pU
b  XS'   U R                  X5        U R                  b+  U	S   U   U	S'   U R                   U	S'   U	R#                  S5        U R$                  b(  ['        U 5      R)                  U R$                  XW5      U	S'   [+        XpR                  5      nU R,                  " X4XSS.U	D6nU R                  b  UR/                  [        U5      5        U R1                  US	   U5        GMp     g )
N)r6   color)indexrO   rX   r5   r*   )rY   rZ   r   )_get_colors_get_stacking_idr;   r   r6   r&   	enumerate
_iter_data_get_axr[   rE   rb   r   _mark_right_label_apply_style_colors_make_plot_keywordsr=   popr*   type_get_column_weightsr   r_   	set_title_append_legend_handles_labels)r$   figcolorsrZ   r6   irO   rW   rV   r[   rX   artistss               r%   
_make_plotHistPlot._make_plot~   s   !!#++-
 ww" &dii< 	 'tD'ABMAzaB99>>#Dzz% $

W 'E**5*:E!M226JKE  %W$$T- ww"#F|AV $W!||'"&t*"@"@q"TY(GG4AjjV1VQUVG ww"\%01..wqz5AG Cr(   c                @    U R                   US'   U R                  US'   g)z/merge BoxPlot/KdePlot properties to passed kwdsr0   r5   N)r0   r5   r$   r[   rW   s      r%   rk   HistPlot._make_plot_keywords   s     XyyVr(   c                    U bP  [         R                  " U 5      S:w  a'  [         R                  " U 5      S   S:w  a
   U S S 2U4   n U [        U5      )    n U $ ! [         a  n[	        S5      UeS nAff = f)NrN   z?weights must have the same shape as data, or be a single column)r.   ndimshape
IndexError
ValueErrorr   )r*   rs   rW   errs       r%   rn   HistPlot._get_column_weights   s     www1$'):2)>!)C%admG tAwh'G " $0 s   	A 
A1 A,,A1c                :   U R                   S:X  aF  UR                  U R                  c  SOU R                  5        UR                  U R                  5        g UR                  U R                  5        UR                  U R                  c  SOU R                  5        g )N
horizontal	Frequency)orientation
set_xlabelr,   
set_ylabelr-   r$   rV   r6   s      r%   _post_plot_logicHistPlot._post_plot_logic   sx    |+ MM;;& [[
 MM$++&MM$++&MM;;& [[r(   c                F    U R                   R                  SS 5      S:X  a  gg)Nr   r   vertical)r[   r2   r#   s    r%   r   HistPlot.orientation   s    99==-=r(   )r1   r5   r0   r*   r,   r-   )returnzLiteral['hist', 'kde'])
   r   )r5   #int | np.ndarray | list[np.ndarray]r0   int | np.ndarrayr   None)r5   r   )r6   Series | DataFramer   
np.ndarray)Nr   r   N)rV   r   rW   r   r0   r   rY   int)rq   r   r   r   r[   zdict[str, Any]rW   r   r   r   )rs   r   rV   r   r   r   )r   r   )__name__
__module____qualname____firstlineno__propertyr&   r3   r4   r>   classmethodr_   ru   rk   r   staticmethodrn   r   r   __static_attributes__r"   r(   r%   r   r   6   s      57#$	, , 2, !	, 
,0 
 #$ 
 !  ,0Bd!    $  r(   r   c                      \ rS rSr\SS j5       r\SS j5       r SSS. SS jjjr\SS j5       r	\
     S     SS jj5       rSS	 jrSS
 jrSrg)KdePlot   c                    g)Nkder"   r#   s    r%   r&   KdePlot._kind   s    r(   c                    g)Nr   r"   r#   s    r%   r   KdePlot.orientation   s    r(   N)r*   c               V    [         R                  " X40 UD6  X l        X0l        X@l        g r:   )r   r3   	bw_methodindr*   )r$   r6   r   r   r*   r7   s         r%   r3   KdePlot.__init__   s&     	.v."r(   c                   Uc{  [         R                  " U 5      [         R                  " U 5      -
  n[         R                  " [         R                  " U 5      SU-  -
  [         R                  " U 5      SU-  -   S5      nU$ [	        U5      (       ay  [         R                  " U 5      [         R                  " U 5      -
  n[         R                  " [         R                  " U 5      SU-  -
  [         R                  " U 5      SU-  -   U5      nU$ )N      ?i  )r.   nanmaxnanminlinspacer   )rW   r   sample_ranges      r%   _get_indKdePlot._get_ind   s    ;99Q<"))A,6L++		!s\11		!s\11C 
 __99Q<"))A,6L++		!s\11		!s\11C
 
r(   c                    SSK Jn	  [        U5      nU	" X$S9n
U
R                  U5      n[        R
                  " XU4SU0UD6nU$ )Nr   )gaussian_kde)r   rX   )scipy.statsr   r   evaluater   r_   )rU   rV   rW   rX   r   r   rY   rZ   r[   r   gkdeliness               r%   r_   KdePlot._plot  sH     	-"A3MM#bq>>>r(   c                l    U R                   US'   [        U 5      R                  X R                  S9US'   g )Nr   )r   r   )r   rm   r   r   rx   s      r%   rk   KdePlot._make_plot_keywords  s/     NN[4j))!):Ur(   c                &    UR                  S5        g )NDensity)r   r   s      r%   r   KdePlot._post_plot_logic!  s    
i r(   )r   r   r*   )r   zLiteral['kde'])r   zLiteral['vertical'])NNr   r   )rW   r   )NNNNN)rV   r   rW   r   rZ   
int | Noner   r   )r   r   r   r   r   r&   r   r3   r   r   r   r_   rk   r   r   r"   r(   r%   r   r      s        )-9=	  $  "&    (;!r(   r   c           	     z   US:X  a  [        S5      eUR                  U5      nUb  X   n[        U5      n[        XXgXS9u  p[	        U5      n[        U5       H^  u  nu  nnUU   n
U(       a%  [        U[        5      (       a  UR                  5       nU " UU
40 UD6  U
R                  [        U5      5        M`     X4$ )NdefaultzNfigsize='default' is no longer supported. Specify figure size by tuple instead)naxesfigsizesharexshareyrV   layout)r   r<   rQ   r   r   rf   
isinstancer
   rG   ro   r   )plotfr6   columnr;   numeric_onlyr   r   r   r   rotrV   r7   r@   r   rq   axes_axesrs   rA   rB   s                       r%   _grouped_plotr   %  s      )3
 	

 ll2G/LEVrIC E$W-<C1XJul;;++-EeR"6"
\#&' . 9r(   c                  ^^^ T(       a@  ST;  d   eU R                   S:X  a  U R                  TS'   OUc  U R                  TS'   OUTS'   SUUU4S jjnUc  U	n[        UU UUUUUUUU	S9
u  nn[	        UXXS9  [        USSSSS	S
S9  U$ )a  
Grouped histogram

Parameters
----------
data : Series/DataFrame
column : object, optional
by : object, optional
ax : axes, optional
bins : int, default 50
figsize : tuple, optional
layout : optional
sharex : bool, default False
sharey : bool, default False
rot : float, default 90
grid : bool, default True
legend: : bool, default False
kwargs : dict, keyword arguments passed to matplotlib.Axes.hist

Returns
-------
collection of Matplotlib Axes
rO   rN   c                   > UR                   " U R                  5       R                  4ST0TD6  T(       a  UR                  5         g g )Nr5   )r!   dropnarK   legend)rB   rV   r5   r7   r   s     r%   
plot_group!_grouped_hist.<locals>.plot_group  s6    
%%;D;F;IIK r(   )r   r;   r   r   rV   r   r   r   
xlabelsizexrot
ylabelsizeyrotg333333?g?g?r   333333?)r0   topleftrighthspacewspacer   )r|   namer=   r   r   r   )r6   r   r;   rV   r5   r   r   r   r   r   gridr   r   r   r   r   r7   r   rq   r   s       `          ``   r%   _grouped_histr   Q  s    T f$$$99>"iiF7O^"llF7O$F7O 
 |IC : Dc3s3 Kr(   c                   SS K Jn  U
(       a  SU;   a  [        S5      eUGcb  UR                  SS 5      b  [        S5      eUR	                  SUR                  5       (       a  UR                  5       OUR                  US95      nUb8  [        U5      [        UR                  5       5      :w  a  UR                  " USS	06  Uc  UR                  5       nOUR                  5       U:w  a  [        S
5      eU R                  5       R                  nU
(       a  U R                   US'   UR"                  " U4SU	0UD6  U
(       a  UR%                  5         UR'                  U5        [(        R*                  " U/5      n[-        UUUUUS9  O(SU;   a  [        S5      e[/        U 4UUUUU	UUUUU
S.
UD6n[1        US5      (       a$  UR2                  S:X  a  [5        U5      S:X  a  US   $ U$ )Nr   rO    Cannot use both legend and labelr   z7The 'layout' keyword is not supported when 'by' is Nonefigure)r   forwardTz&passed axis not bound to passed figurer5   r   z`Cannot pass 'figure' when using the 'by' argument, since a new 'Figure' instance will be created)
r;   rV   r   r   r5   r   r   r   r   r   r|   rN   )matplotlib.pyplotpyplotr   r2   rl   get_fignumsgcfr   tupleget_size_inchesset_size_inchesgca
get_figureAssertionErrorr   rK   r   r!   r   r   r.   r/   r   r   hasattrr|   rQ   )r$   r;   rV   r   r   r   r   r   r   r5   r   r[   pltrq   rK   r   s                   r%   hist_seriesr     s    $'T/;<<	z88Hd#/VWWhh3??#4#4cggi#**W*:U
 5>U3;N;N;P5Q#Q7$7:B]]_# !IJJ%% IIDM
*T*T*IIK
xx~ 	!!	
 tO  
!!
 
 tV99>c$i1n7NKr(   c                    U(       a  SU;   a  [        S5      eUb  [        U 4UUUUUU	U
UUUUUUUS.UD6nU$ Ub1  [        U[        [        R
                  [        45      (       d  U/nX   n U R                  [        R                  SS4SS9n [        U R                  5      nUS:X  a  [        S	5      e[        UUS
U	U
UUS9u  nn[        U5      nSU;  n[        U R                  5       H  u  nnUU   nU(       a  U(       a  UUS'   UR                  " U U   R                  5       R                   4SU0UD6  UR#                  U5        UR%                  U5        U(       d  My  UR'                  5         M     [)        UXEXgS9  [+        USSS9  U$ )NrO   r   )r   r;   rV   r   r   r   r   r   r5   r   r   r   r   r   
datetime64
datetimetz	timedelta)includeexcluder   zDhist method requires numerical or datetime columns, nothing to plot.F)r   rV   squeezer   r   r   r   r5   r   r   )r   r   )r   r   r   listr.   ndarrayr   select_dtypesnumberrQ   r=   r   r   rf   r!   r   rK   ro   r   r   r   r   )r6   r   r;   r   r   r   r   r   rV   r   r   r   r   r5   r   r[   r   r   rq   r   can_set_labelrs   cols                          r%   
hist_framer    s   $ 'T/;<<	~
!!
  !
$ &4X">??XF|L,7  D EzR
 	
  IC E4'MDLL)31XmDM
S	  "))===
S
6IIK * : C4Kr(   )	NNTNTTNr   N)r6   r   r   boolr   tuple[float, float] | Noner   r  r   r  r   float)NNN2   NNFFZ   TNNNNF)r6   r   r5   r   r   r  r   r  r   r  r   r  r   r  r   r   r   r   r   r  )
NNTNNNNNr   F)r$   r   r   r  r   r   r   r   r   r  r5   r   r   r  )NNTNNNNNFFNNr   F)r6   r   r   r  r   r   r   r   r   r  r   r  r   r  r5   r   r   r  )0
__future__r   typingr   r   r   r   numpyr.   pandas.core.dtypes.commonr   r	   pandas.core.dtypes.genericr
   r   pandas.core.dtypes.missingr   r   pandas.io.formats.printingr    pandas.plotting._matplotlib.corer   r   #pandas.plotting._matplotlib.groupbyr   r    pandas.plotting._matplotlib.miscr   !pandas.plotting._matplotlib.toolsr   r   r   r   matplotlib.axesr   matplotlib.figurer   pandas._typingr   pandasr   r   r   r   r   r   r   r  r"   r(   r%   <module>r     sz   "  
 4 D  $(2ix iX@!h @!L *.)
)
 ) () ) ) 
)\ *.!	!	!O
O
 O (O O O 
O O O O  !Oh !	!	*.K
K 	K
 K K (K K K` !	!	*.T
T 	T
 T T T T (T T Tr(   