
    4iA                    F   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(  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r0               S                   SS jjr1          S             SS jjr2              S                  S!S jjr3g)"    )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)BarContainer)Figure)Polygon)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)HistPlot8   c                    g)Nhist selfs    b/var/www/html/dynamic-report/venv/lib/python3.13/site-packages/pandas/plotting/_matplotlib/hist.py_kindHistPlot._kind9   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&   datar7   r2   r+   r,   kwargss          r'   r5   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   r8   groupbycolumns_calculate_bins)r&   r7   by_modifiedgroupedkeygroups         r'   r6   HistPlot._adjust_binsU   s    dww"4TWW=))++K8FLSTGjc,,U9GT  ++DIIt< Us    B c                    UR                  5       R                  5       nUR                  nUR                  S:X  a  UR	                  S5      nU[        U5      )    n[        R                  " XBU R                  S9$ )zCalculate bins given data   )r7   r+   )	infer_objects_get_numeric_datavaluesndimreshaper   r0   histogram_bin_edgesr3   )r&   r8   r7   	nd_valuesrK   s        r'   r@   HistPlot._calculate_bins_   se    &&(::<	!!>>Q^^B'Ff&%%ftOOr*   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)r7   r2   )_initialize_stackerlenr0   zeros_get_stacked_valuesr#   _update_stacker)clsaxystyler2   
column_numstacking_idr7   kwdsbasenpatchess               r'   _plotHistPlot._plotj   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)r8   color)indexrS   r\   r7   r,   )r]   r^   r   )_get_colors_get_stacking_idr=   r   r8   r(   	enumerate
_iter_data_get_axr_   copyrf   r   _mark_right_label_apply_style_colors_make_plot_keywordsr?   popr,   type_get_column_weightsr   rc   	set_title_append_legend_handles_labels)r&   figcolorsr^   r8   irS   r[   rZ   r_   r\   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AI Cr*   c                @    U R                   US'   U R                  US'   g)z/merge BoxPlot/KdePlot properties to passed kwdsr2   r7   N)r2   r7   r&   r_   r[   s      r'   rp   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)NrR   rH   z?weights must have the same shape as data, or be a single column)r0   rL   shape
IndexError
ValueErrorr   )r,   rx   r[   errs       r'   rs   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&   rZ   r8   s      r'   _post_plot_logicHistPlot._post_plot_logic   sp    |+ MM#{{2 MM$++&MM$++&MM#{{2r*   c                F    U R                   R                  SS 5      S:X  a  gg)Nr   r   vertical)r_   r4   r%   s    r'   r   HistPlot.orientation   s    99==-=r*   )r3   r7   r2   r,   r.   r/   )returnzLiteral['hist', 'kde'])
   r   )r7   #int | np.ndarray | list[np.ndarray]r2   int | np.ndarrayr   None)r7   r   )r8   Series | DataFramer   
np.ndarray)Nr   r   N)
rZ   r   r[   r   r2   r   r]   intr   z5BarContainer | Polygon | list[BarContainer | Polygon])rv   r   r   r   r_   zdict[str, Any]r[   r   r   r   )rx   r   rZ   r   r   r   )r   r   )__name__
__module____qualname____firstlineno__propertyr(   r5   r6   r@   classmethodrc   rz   rp   r   staticmethodrs   r   r   __static_attributes__r$   r*   r'   r    r    8   s      57#$	, , 2, !	, 
,0P 
 #$ 
 !  
? ..B`!      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   r5   	bw_methodindr,   )r&   r8   r   r   r,   r9   s         r'   r5   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  )r0   nanmaxnanminlinspacer   )r[   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$US9nUc   eUR                  U5      n[        R
                  " XU4SU0U	D6nU$ )Nr   )gaussian_kde)r   r,   r\   )scipy.statsr   r   evaluater   rc   )rY   rZ   r[   r\   r   r,   r   r]   r^   r_   r   gkdeliness                r'   rc   KdePlot._plot  sV     	-"AGD MM#bq>>>r*   c                l    U R                   US'   [        U 5      R                  X R                  S9US'   g )Nr   )r   r   )r   rr   r   r   r}   s      r'   rp   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   )r[   r   )NNNNNN)rZ   r   r[   r   r^   
int | Noner   r   )r   r   r   r   r   r(   r   r5   r   r   r   rc   rp   r   r   r$   r*   r'   r   r      s        )-9=	  $  "&    .;!r*   r   c           	     l   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      USS9 HY  u  n
u  n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shareyrZ   layoutFstrict)r   r>   rU   r   zipr   
isinstancer
   rJ   rt   r   )plotfr8   columnr=   numeric_onlyr   r   r   r   rotrZ   r9   rB   r   rv   axesrC   rD   s                     r'   _grouped_plotr   &  s      )3
 	

 ll2G/LEVrIC  T 2GEJLS%Jul;;++-EeR"6"
\#&'	 K 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
rS   rR   c                   > UR                   " U R                  5       R                  4ST0TD6  T(       a  UR                  5         g g )Nr7   )r#   dropnarK   legend)rD   rZ   r7   r9   r   s     r'   
plot_group!_grouped_hist.<locals>.plot_group  s6    
%%;D;F;IIK r*   )r   r=   r   r   rZ   r   r   r   
xlabelsizexrot
ylabelsizeyrotg333333?g?g?r   333333?)r2   topleftrighthspacewspacer   )rL   namer?   r   r   r   )r8   r   r=   rZ   r7   r   r   r   r   r   gridr   r   r   r   r   r9   r   rv   r   s       `          ``   r'   _grouped_histr   O  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   rS    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 figurer7   r   z`Cannot pass 'figure' when using the 'by' argument, since a new 'Figure' instance will be created)
r=   rZ   r   r   r7   r   r   r   r   r   rL   rR   )matplotlib.pyplotpyplotr   r4   rq   get_fignumsgcfr   tupleget_size_inchesset_size_inchesgca
get_figureAssertionErrorr   rK   r   r#   r   r   r0   r1   r   r   hasattrrL   rU   )r&   r=   rZ   r   r   r   r   r   r   r7   r   r_   pltrv   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SU;  n[        [        U5      U R                  S
S9 H  u  n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  Mt  UR'                  5         M     [)        UXEXgS9  [+        USSS9  U$ )NrS   r   )r   r=   rZ   r   r   r   r   r   r7   r   r   r   r   r   
datetime64
datetimetz	timedelta)includeexcluder   zDhist method requires numerical or datetime columns, nothing to plot.F)r   rZ   squeezer   r   r   r   r   r7   r   r   )r   r   )r   r   r   listr0   ndarrayr   select_dtypesnumberrU   r?   r   r   r   r#   r   rK   rt   r   r   r   r   )r8   r   r=   r   r   r   r   r   rZ   r   r   r   r   r7   r   r_   r   r   rv   can_set_labelcols                        r'   
hist_framer    s   $ 'T/;<<	~
!!
  !
$ &4X">??XF|L,7  D EzR
 	
  IC 4'M|D)4<<FCmDM
S	  "))===
S
6IIK G : C4Kr*   )	NNTNTTNr   N)r8   r   r   boolr   tuple[float, float] | Noner   r	  r   r	  r   float)NNN2   NNFFZ   TNNNNF)r8   r   r7   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
  r7   r   r   r	  )NNTNNNNNFFNNr   F)r8   r   r   r	  r   r   r   r   r   r	  r   r	  r   r
  r7   r   r   r	  )4
__future__r   typingr   r   r   r   numpyr0   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.containerr   matplotlib.figurer   matplotlib.patchesr   pandas._typingr   pandasr   r   r    r   r   r   r   r  r$   r*   r'   <module>r     s   "  
 4 D  $1(*2ex ePC!h C!R *.&
&
 & (& & & 
&V *.!	!	!O
O
 O (O O O 
O O O O  !Oh !	!	*.I
I 	I
 I I (I I I\ !	!	*.Q
Q 	Q
 Q Q Q Q (Q Q Qr*   