
    cMhG                       d dl mZ d dlmZmZmZ d dlZd dlZd dl	m
Z
 d dlZd dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlZd dlmc mZ d dlm Z  d dl!m"Z" d dl#m$Z$m%Z% d dl&m'Z' d dl(m)Z) d dl*m+Z+m,Z,m-Z- erd dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 d3dZ8 G d d e$          Z9d4d!Z:	 	 	 	 	 	 	 	 d5d6d(Z;	 	 	 	 	 	 	 	 	 d7d8d-Z<	 	 	 	 	 	 	 	 	 d7d8d.Z=	 	 	 	 	 	 	 	 	 	 d9d:d2Z>dS );    )annotations)TYPE_CHECKINGLiteral
NamedTupleN)setp)lib)cache_readonly)find_stack_level)is_dict_like)	ABCSeriesremove_na_arraylike)Versionpprint_thing)LinePlotMPLPlot)create_iter_data_given_by)get_standard_colors)create_subplotsflatten_axesmaybe_adjust_figure)
Collection)Axes)Figure)Line2D)MatplotlibColoraxr   labels	list[str]is_verticalboolreturnNonec                   |r|                                  n|                                 }t          |          t          |          k    rlt          t          |          t          |                    \  }}t	          t
          j                  t	          d          k     r|dk    s
J |            ||z  }|r | j        |fi | dS  | j        |fi | dS )zSet the tick labels of a given axis.

    Due to https://github.com/matplotlib/matplotlib/pull/17266, we need to handle the
    case of repeated ticks (due to `FixedLocator`) and thus we duplicate the number of
    labels.
    z3.10r   N)	
get_xticks
get_ytickslendivmodr   mpl__version__set_xticklabelsset_yticklabels)r   r   r!   kwargsticksi	remainders          c/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/pandas/plotting/_matplotlib/boxplot.py_set_ticklabelsr3   1   s      +?BMMOOOE
5zzS[[  c%jj#f++6693?##gfoo55>>>9>>>! -6,,V,,,,,6,,V,,,,,    c                  J    e Zd Zed&d            ZdZdZ G d de          Zd'd(dZ	e
	 d)d*d            Zd Zed             Zed             Zed             Zed             Zed             Z	 	 d+d,dZd-dZd.d Zd-d!Zd/d"Zed0d$            Ze fd%            Z xZS )1BoxPlotr#   Literal['box']c                    dS )Nbox selfs    r2   _kindzBoxPlot._kindE   s    ur4   
horizontal)Naxesdictbothc                  $    e Zd ZU ded<   ded<   dS )
BoxPlot.BPr   r   zdict[str, list[Line2D]]linesN)__name__
__module____qualname____annotations__r:   r4   r2   BPrC   M   s'         &&&&&&r4   rI   r?   return_typestrr$   c                    || j         vrt          d          || _        t          j        | |fi | | j        r| j        dk    r	d| _        d S d| _        d S d S )Nz2return_type must be {None, 'axes', 'dict', 'both'}verticalF)	_valid_return_types
ValueErrorrJ   r   __init__subplotsorientationsharexsharey)r<   datarJ   r.   s       r2   rP   zBoxPlot.__init__R   s|    d666QRRR&t..v...= 	$ :--##	$ 	$r4   Nr   r   y
np.ndarrayc                    |j         dk    rd |D             }d |D             }nt          |          } |j        |fi |}|dk    r||fS |dk    r|                     ||          |fS ||fS )N   c                ,    g | ]}t          |          S r:   r   .0vs     r2   
<listcomp>z!BoxPlot._plot.<locals>.<listcomp>i   s!    444Q%a((444r4   c                f    g | ].}|j         d k    r|nt          j        t          j        g          /S )r   )sizenparraynanr[   s     r2   r^   z!BoxPlot._plot.<locals>.<listcomp>m   s4    FFFaqvzz!!rx'9'9FFFr4   r@   rA   r   rD   )ndimr   boxplotrI   )clsr   rV   
column_numrJ   kwdsysbps           r2   _plotzBoxPlot._plotc   s    
 6Q;;44!444B GF2FFFBB$Q''BRZ##d##&  r6MF""66Rr6**B..r6Mr4   c                    |t           j        u rd S |"t          j        dt	                                 t          |t                    r"g d}|D ]}||vrt          d| d|           |S )NzC'color' and 'colormap' cannot be used simultaneously. Using 'color')
stacklevelboxeswhiskersmedianscaps!color dict contains invalid key ''. The key must be either )r   
no_defaultwarningswarnr
   
isinstancer@   rO   )r<   colorcolormap
valid_keyskeys        r2   _validate_color_argszBoxPlot._validate_color_argsy   s    CN""4M0+--    eT"" 	AAAJ  j(($?C ? ?2<? ?   )
 r4   c                0    t          d| j        d           S )N   )
num_colorsr{   rz   )r   r{   r;   s    r2   _color_attrszBoxPlot._color_attrs   s     #a$-tTTTTr4   c                    | j         d         S Nr   r   r;   s    r2   _boxes_czBoxPlot._boxes_c        ##r4   c                    | j         d         S r   r   r;   s    r2   _whiskers_czBoxPlot._whiskers_c   r   r4   c                    | j         d         S )NrY   r   r;   s    r2   
_medians_czBoxPlot._medians_c   r   r4   c                    | j         d         S r   r   r;   s    r2   _caps_czBoxPlot._caps_c   r   r4   rz   
color_kwdsQdict[str, MatplotlibColor] | MatplotlibColor | Collection[MatplotlibColor] | Nonec                    d S Nr:   )r<   r   r   s      r2   _get_colorszBoxPlot._get_colors   s	     	r4   c                   t          | j        t                    r| j                            d| j                  }| j                            d| j                  }| j                            d| j                  }| j                            d| j                  }n8| j        p| j        }| j        p| j        }| j        p| j        }| j        p| j        }||||f}t          |fd|i| j	         d S )Nrp   rq   rr   rs   	color_tup)
ry   rz   r@   getr   r   r   r   maybe_color_bpri   )r<   rk   rp   rq   rr   rs   r   s          r2   r   zBoxPlot.maybe_color_bp   s    dj$'' 	.JNN7DM::Ez~~j$2BCCHjnnY@@G:>>&$,77DD J/$-Ez5T%5Hj3DOG:-DHgt4	r<<Y<$)<<<<<r4   figr   c                r   | j         r[t          j        t                    | _        | j        t          | j        | j                  n| j        }t          | 
                    |                    D ]\  }\  }}|                     |          }| j                                        }| j        M|j        }|                    t!          |                     | j        j        j        }d |d         D             }	nt!          |          g}	 | j        ||f|| j        d|\  }
}|                     |           |
| j        |<   t-          ||	| j        dk               d S | j        j        j        }|                     d          }| j                                        } | j        ||fd| j        d|\  }
}|                     |           |
| _        d | j        j        D             }| j        s&d	 t5          t7          |                    D             }t-          ||| j        dk               d S )
Ndtype)rU   c                ,    g | ]}t          |          S r:   r   )r\   cols     r2   r^   z&BoxPlot._make_plot.<locals>.<listcomp>   s     !I!I!I,s"3"3!I!I!Ir4   r   )rh   rJ   rM   )r   r   r!   c                ,    g | ]}t          |          S r:   r   )r\   lefts     r2   r^   z&BoxPlot._make_plot.<locals>.<listcomp>   s     GGGTl4((GGGr4   c                ,    g | ]}t          |          S r:   r   )r\   r}   s     r2   r^   z&BoxPlot._make_plot.<locals>.<listcomp>   s     JJJ,s++JJJr4   )rQ   pdSeriesobject_return_objbyr   rU   r=   	enumerate
_iter_data_get_axri   copyT	set_titler   columnslevelsrl   rJ   r   r3   rR   values	use_indexranger(   )r<   r   rU   r0   labelrV   r   ri   r   
ticklabelsretrk   r   s                r2   
_make_plotzBoxPlot._make_plot   s   = 7	!yv666D
 7& *$)TZ@@@Y  "+4???+E+E!F!F  :E1\\!__y~~'' 7&ALLe!4!4555
 "Y.5F!I!Ivay!I!I!IJJ".u"5"5!6J$$*&'T5E IM R ##B'''*- '*$:Jj:X    / 6 	 "AaB9>>##D djA"#1A EI GC ###"DGGTY5FGGGF> KJJuS[[7I7IJJJf$2Bj2P     r4   c                    d S r   r:   r;   s    r2   _make_legendzBoxPlot._make_legend   s    r4   c                    | j         r'|                    t          | j                              | j        r)|                    t          | j                             d S d S r   )xlabel
set_xlabelr   ylabel
set_ylabel)r<   r   rU   s      r2   _post_plot_logiczBoxPlot._post_plot_logic   s^    ; 	5MM,t{33444; 	5MM,t{3344444	5 	5r4   !Literal['horizontal', 'vertical']c                @    | j                             dd          rdS dS )NvertTrM   r>   )ri   r   r;   s    r2   rR   zBoxPlot.orientation  s$    9==&& 	 :<r4   c                F    | j         t                      j        S | j        S r   )rJ   superresultr   )r<   	__class__s    r2   r   zBoxPlot.result  s!    #77>!##r4   )r#   r7   )r?   )rJ   rK   r#   r$   )Nr?   )r   r   rV   rW   rJ   rK   )Nrz   )r   r   r#   r$   r#   r$   )r   r   r#   r$   )r   r   r#   r$   )r#   r   )rE   rF   rG   propertyr=   _layout_typerN   r   rI   rP   classmethodrl   r~   r	   r   r   r   r   r   r   r   r   r   r   rR   r   __classcell__)r   s   @r2   r6   r6   D   s          X  L8' ' ' ' 'Z ' ' '
$ $ $ $ $" JP    [*  * U U ^U $ $ ^$ $ $ ^$ $ $ ^$ $ $ ^$
      = = = ="8 8 8 8t   5 5 5 5       X  $ $ $ $ X$ $ $ $ $r4   r6   c                   |                     d          st          | d         |d         d           |                     d          st          | d         |d         d           |                     d          st          | d	         |d
         d           |                     d          s t          | d         |d         d           d S d S )Nboxpropsrp   r      )rz   alphawhiskerpropsrq   medianpropsrr   rY   cappropsrs   r   )r   r   )rk   r   ri   s      r2   r   r     s     88J 7R[	!A666688N## :R
^9Q<q999988M"" 9R	])A,a888888J 6RZy|15555556 6r4   TFnumeric_onlygridfigsizetuple[float, float] | Nonec
                   |                     |d          }|Kt          |t          t          f          s|g}|                                j                            |          }t          |          }t          ||
	                    dd          |
	                    dd          |||          \  }}t          |          }|
	                    dd           |
	                    dd           }}|
                    d	d          r|p|}n|p|}g }t          |          D ]n\  }}||         }||         }t          | \  }} | |||f||d
|
}|                    |           |                    |           |                    |           ot#          j        ||d          }|	|}t          |          dk    r|d         n|}|                    d|            t)          |ddddd           |S )NF)observedrS   TrT   )naxesrS   rT   r   r   layoutr   r   r   )r   r   )indexr   r   r   zBoxplot grouped by 333333??皙?皙?bottomtopr   rightwspace)groupbyry   listtuple_get_numeric_datar   
differencer(   r   popr   r   r   zipr   appendr   r   r   suptitler   )plotfrU   r   r   r   r   r   r   r   rJ   r.   groupedr   r   r?   _axesr   r   	ax_valuesr0   r   gp_colkeysr   re_plotfr   bylines                              r2   _grouped_plot_by_columnr   !  s    ll2l..G"tUm,, 	B((**2==bAALLEzz(D))zz(D))  IC E ZZ$//Hd1K1KFFzz&$ 22IG$$  31XF|f5vrR&RR6RR
S"""
Yye<<<F "ggllRUUFLL/v//000Dc3sSSSSMr4   fontsize
int | Nonerotintc
                  	
 dd l m} 	t          j        vrt	          d          t          | t                    r|                     d          } d}
fd}d	fd} |            |d }n"t          |t          t          f          r|}n|g}|t          || f||||||	d
}nى	d		|t	          d
          |I|d|ini }|                    |          5  |                                }d d d            n# 1 swxY w Y   |                                 } t          | j                  }|dk    rt	          d          || j        }n| |         }  ||| j        j        |fi 
}|                    |           |S )Nr   z,return_type must be {'axes', 'dict', 'both'}xc                    t          d          } t          j        | g d          } t          j        | d          }                     dd           }|rt          |          rmg d}t          t          |t          d                              }|	                                D ])\  }}||v r|| ||         <   t          d| d	|           n|                     |           | S )
Nr   )r   )r   r   rY   krz   ro      rt   ru   )r   ra   taker   r   r   r@   r   r   itemsrO   fill)r   colorsr|   key_to_indexr}   valueri   s         r2   r   zboxplot.<locals>._get_colorsu  s    %222++63'''4(( 	$F## $ FEE
#C
E!HH$=$=>>"(,,..  JCj((49|C011(C C C6@C C  	 F###r4   r   r   c                .   |                     dd           |                     dd           }}|r"|                    t          |                     |r"|                    t          |                     d | D             } d |D             } |j        |fi |}|                    d           t          || |                    dd          
	           t          |fd
i| 	dk    r|S 	dk    rt          
                    ||          S |S )Nr   r   c                ,    g | ]}t          |          S r:   r   )r\   r   s     r2   r^   z/boxplot.<locals>.plot_group.<locals>.<listcomp>  s    ...AQ...r4   c                ^    g | ]*}t          j        t          |          t                     +S )r   )ra   asarrayr   r   r[   s     r2   r^   z/boxplot.<locals>.plot_group.<locals>.<listcomp>  s0    SSSq"*0336BBBSSSr4   rA   )axis	labelsizer   T)r   r   r!   rotationr   r@   rd   )r   r   r   r   rf   tick_paramsr3   r   r   r6   rI   )r   r   r   ri   r   r   rk   r   r   rJ   r   s          r2   
plot_groupzboxplot.<locals>.plot_group  sL   (D11488Hd3K3K 	0MM,v../// 	0MM,v..///.....SSFSSSRZ''$''NN(N;;; 	$DHHVT,B,BS	
 	
 	
 	
 	r44V4t444 &  IF""::2:...Ir4   )r   r   r   r   r   r   rJ   r?   z7The 'layout' keyword is not supported when 'by' is Nonezfigure.figsizez;boxplot method requires numerical columns, nothing to plot.)r   r   )matplotlib.pyplotpyplotr6   rN   rO   ry   r   to_framer   r   r   
rc_contextgcar   r(   r   r   r   r   )rU   columnr   r   r   r   r   r   r   rJ   ri   pltr   r
  r   r   rcr   r   s       ``   ``       @r2   rf   rf   ^  sh    $##### '555GHHH$	"" }}S!!    :        8 []]F~	FT5M	*	* (	~ )
 #
 
 
 
  KVWWW:070C"G,,B##  WWYY              %%''DL!!A::M   ?lGG=DGT[]B??$??
Ms   !DD	Dc
                h    dd l m} t          | f|||||||||	d	|
}|                                 |S )Nr   )	r  r   r   r   r   r   r   r   rJ   )r  r  rf   draw_if_interactive)r<   r  r   r   r   r   r   r   r   rJ   ri   r  s               r2   boxplot_framer    sp     $#####	

 
 
 
B Ir4   rQ   rS   rT   c                (   |du rt          |           }t          |d||	|
||          \  }}t          |          }t          j        t
                    }t          | |          D ]G\  \  }}} |j        d|||||d|}|                    t          |                     ||j
        |<   Ht          |ddddd	
           nt          |  \  }}| j        dk    rt          j        ||d          }n?t          |          dk    r$|d                             |dd                    }n|d         }|It          j        |          }t          j                            ||g          }t'          |j                  } |j        d|||||||d|}|S )NTF)r   squeezer   rS   rT   r   r   r   )r   r  r   r   r   r   r   r   r   r   r   r   )r   r  )r  r   r   r   r   r   r   r:   )r(   r   r   r   r   r   r   rf   r   r   locr   r  concatjoincomconvert_to_list_like
MultiIndexfrom_productr   r   )r   rQ   r  r   r   r   r   r   r   rS   rT   ri   r   r   r?   r   r}   groupdr   framesdf	multi_keys                          r2   boxplot_frame_groupbyr$     s    4G#
 
 
	T D!!if%%% #GT 2 2 	 	LS%" fxSt OS A LLc**+++CGCLLC#CsSVWWWWWG}f<161555BB[[1__qss,,BBB -f55F22D&>BBI)*++Fbj 	
	
 	
 	
 	
 Jr4   )r   r   r   r    r!   r"   r#   r$   r   )NNTFNNNN)r   r"   r   r"   r   r   )	NNNNr   TNNN)r   r   r   r   r   r"   r   r   )
TNNr   TNNNFT)rQ   r"   r   r   r   r   r   r"   r   r   rS   r"   rT   r"   )?
__future__r   typingr   r   r   rw   
matplotlibr*   matplotlib.artistr   numpyra   pandas._libsr   pandas.util._decoratorsr	   pandas.util._exceptionsr
   pandas.core.dtypes.commonr   pandas.core.dtypes.genericr   pandas.core.dtypes.missingr   pandasr   pandas.core.commoncorecommonr  pandas.util.versionr   pandas.io.formats.printingr    pandas.plotting._matplotlib.corer   r   #pandas.plotting._matplotlib.groupbyr   !pandas.plotting._matplotlib.styler   !pandas.plotting._matplotlib.toolsr   r   r   collections.abcr   matplotlib.axesr   matplotlib.figurer   matplotlib.linesr   pandas._typingr   r3   r6   r   r   rf   r  r$  r:   r4   r2   <module>r?     s_   " " " " " "         
      " " " " " "           2 2 2 2 2 2 4 4 4 4 4 4 2 2 2 2 2 2 0 0 0 0 0 0 : : : : : :                       ' ' ' ' ' ' 3 3 3 3 3 3        J I I I I I A A A A A A           /******$$$$$$((((((''''''......- - - -&M$ M$ M$ M$ M$h M$ M$ M$`
6 
6 
6 
6  *.: : : : :~ *.    H *.    D *.? ? ? ? ? ? ?r4   