o
    vhG                     @  s  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  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rd dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5 d dl6m7Z7 d9ddZ8G d d! d!e$Z9d:d"d#Z:			$	%				d;d<d*d+Z;					 	$			d=d>d0d1Z<					 	$			d=d>d2d3Z=	$			 	$				%	$d?d@d7d8Z>dS )A    )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                 K  s   |r|   n|  }t|t|kr2tt|t|\}}ttjtdk r.|dks.J |||9 }|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	remainder r0   a/var/www/html/hyperkenya/venv/lib/python3.10/site-packages/pandas/plotting/_matplotlib/boxplot.py_set_ticklabels1   s   r2   c                      s   e Zd Zed6ddZdZdZG dd deZd7d8ddZ	e
		d9d:ddZdd Zedd Zedd Zedd Zedd Zed d! Z		"d;d<d%d&Zd=d'd(Zd>d+d,Zd=d-d.Zd?d/d0Zed@d2d3Ze fd4d5Z  ZS )ABoxPlotr"   Literal['box']c                 C  s   dS )Nboxr0   selfr0   r0   r1   _kindE   s   zBoxPlot._kind
horizontal)Naxesdictbothc                   @  s   e Zd ZU ded< ded< dS )z
BoxPlot.BPr   r   zdict[str, list[Line2D]]linesN)__name__
__module____qualname____annotations__r0   r0   r0   r1   BPM   s   
 rB   r:   return_typestrr#   c                 K  sT   || 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
ValueErrorrC   r   __init__subplotsorientationsharexsharey)r7   datarC   r,   r0   r0   r1   rH   R   s   



zBoxPlot.__init__Nr   r   y
np.ndarrayc                 K  st   |j dkrdd |D }dd |D }nt|}|j|fi |}|dkr)||fS |dkr6| j||d|fS ||fS )N   c                 S     g | ]}t |qS r0   r   .0vr0   r0   r1   
<listcomp>i       z!BoxPlot._plot.<locals>.<listcomp>c                 S  s(   g | ]}|j d kr|nttjgqS )r   )sizenparraynanrR   r0   r0   r1   rU   m   s   ( r;   r<   r   r=   )ndimr   boxplotrB   )clsr   rN   
column_numrC   kwdsysbpr0   r0   r1   _plotc   s   
zBoxPlot._plotc                 C  sb   |t ju rd S |d urtjdt d t|tr/g d}|D ]}||vr.td| d| q|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;   rG   )r7   colorcolormap
valid_keyskeyr0   r0   r1   _validate_color_argsy   s$   

zBoxPlot._validate_color_argsc                 C  s   t d| jd dS )N   )
num_colorsrq   rp   )r   rq   r6   r0   r0   r1   _color_attrs   s   zBoxPlot._color_attrsc                 C  
   | j d S Nr   rw   r6   r0   r0   r1   _boxes_c      
zBoxPlot._boxes_cc                 C  rx   ry   rz   r6   r0   r0   r1   _whiskers_c   r|   zBoxPlot._whiskers_cc                 C  rx   )NrP   rz   r6   r0   r0   r1   
_medians_c   r|   zBoxPlot._medians_cc                 C  rx   ry   rz   r6   r0   r0   r1   _caps_c   r|   zBoxPlot._caps_crp   
color_kwdsQdict[str, MatplotlibColor] | MatplotlibColor | Collection[MatplotlibColor] | Nonec                 C     d S Nr0   )r7   rv   r   r0   r0   r1   _get_colors   s   zBoxPlot._get_colorsc                 C  s   t | jtr'| jd| j}| jd| j}| jd| j}| jd| j}n| jp,| j}| jp2| j}| jp8| j}| jp>| j}||||f}t|fd|i| j	 d S )Nrf   rg   rh   ri   	color_tup)
ro   rp   r;   getr{   r}   r~   r   maybe_color_bpr`   )r7   rb   rf   rg   rh   ri   r   r0   r0   r1   r      s   zBoxPlot.maybe_color_bpfigr   c                 C  s  | j r{tjtd| _| jd urt| j| jn| j}t	| j
|dD ]W\}\}}| |}| j }| jd urO|j}|t| | jjj}dd |d D }	nt|g}	| j||f|| jd|\}
}| | |
| j|< t||	| jdkd q!d S | jjj}| d}| j }| j||fd| jd|\}
}| | |
| _d	d | jjD }| jsd
d tt|D }t||| jdkd d S )Ndtype)rM   c                 S  rQ   r0   r   )rS   colr0   r0   r1   rU      rV   z&BoxPlot._make_plot.<locals>.<listcomp>r   )r_   rC   rE   )r   r   r    c                 S  rQ   r0   r   )rS   leftr0   r0   r1   rU      rV   c                 S  rQ   r0   r   )rS   rs   r0   r0   r1   rU      rV   )rI   pdSeriesobject_return_objbyr   rM   r8   	enumerate
_iter_data_get_axr`   copyT	set_titler   columnslevelsrc   rC   r   r2   rJ   values	use_indexranger&   )r7   r   rM   r.   labelrN   r   r`   r   
ticklabelsretrb   r   r0   r0   r1   
_make_plot   s\   
	













zBoxPlot._make_plotc                 C  r   r   r0   r6   r0   r0   r1   _make_legend   s   zBoxPlot._make_legendc                 C  s4   | j r|t| j  | jr|t| j d S d S r   )xlabel
set_xlabelr   ylabel
set_ylabel)r7   r   rM   r0   r0   r1   _post_plot_logic   s
   zBoxPlot._post_plot_logic!Literal['horizontal', 'vertical']c                 C  s   | j ddr	dS dS )NvertTrE   r9   )r`   r   r6   r0   r0   r1   rJ     s   zBoxPlot.orientationc                   s   | j d u r	t jS | jS r   )rC   superresultr   r6   	__class__r0   r1   r     s   
zBoxPlot.result)r"   r4   )r:   )rC   rD   r"   r#   )Nr:   )r   r   rN   rO   rC   rD   )Nrp   )r   r   r"   r#   r"   r#   )r   r   r"   r#   )r   r   r"   r#   )r"   r   )r>   r?   r@   propertyr8   _layout_typerF   r   rB   rH   classmethodrc   rt   r   rw   r{   r}   r~   r   r   r   r   r   r   rJ   r   __classcell__r0   r0   r   r1   r3   D   s@    








:
r3   c                 K  s   | dst| d |d dd | ds t| d |d dd | ds0t| d	 |d
 dd | dsBt| d |d dd d S d S )Nboxpropsrf   r      )rp   alphawhiskerpropsrg   medianpropsrh   rP   cappropsri   ru   )r   r   )rb   r   r`   r0   r0   r1   r     s   



r   TFnumeric_onlygridfigsizetuple[float, float] | Nonec
                 K  sp  |j |dd}|d u rt|ttfs|g}| j|}t|}t||
	dd|
	dd|||d\}}t
|}|
	dd |
	dd }}|
d	drQ|pO|}n|pT|}g }t|D ].\}}|| }|| }t| \}}| |||f||d
|
}|| || || q[tj||dd}|	d u r|}t|dkr|d n|}|d|  t|dddddd |S )NF)observedrK   TrL   )naxesrK   rL   r   r   layoutr   r   r   )r   r   )indexr   r   r   zBoxplot grouped by 333333??皙?皙?bottomtopr   rightwspace)groupbyro   listtuple_get_numeric_datar   
differencer&   r   popr   r   r   zipr   appendr   r   r   suptitler   )plotfrM   r   r   r   r   r   r   r   rC   r,   groupedr   r   r:   _axesr   r   	ax_valuesr.   r   gp_colkeysr   re_plotfr   byliner0   r0   r1   _grouped_plot_by_column!  sF   


	


r   fontsize
int | Nonerotintc
              
     s|  dd l m} tjvrtdt| tr| d} d}fdd}d fdd	}|  |d u r5d }nt|tt	fr?|}n|g}|d urYt
|| f||||||d
}|S d u r_d|d urgtd|d u r|d ursd|ini }|| | }W d    n1 sw   Y  |  } t| j}|dkrtd|d u r| j}n| | } ||| jj|fi }|| |S )Nr   z,return_type must be {'axes', 'dict', 'both'}xc                    s   t dd} t| g d} t| d}  dd }|rPt|rKg d}tt|td}|	 D ]\}}||v r?|| || < q0t
d| d	| | S | | | S )
Nru   )rv   )r   r   rP   krp   re      rj   rk   )r   rX   taker   r   r
   r;   r   r   itemsrG   fill)r   colorsrr   key_to_indexrs   value)r`   r0   r1   r   u  s&   

zboxplot.<locals>._get_colorsr   r   c                   s   | dd | dd }}|r|t| |r|t| dd | D } dd |D }|j|fi |}d urA|jdd t|| |dd	d
 t|fd i| dkr]|S dkrht	j
||dS |S )Nr   r   c                 S  rQ   r0   r   )rS   r   r0   r0   r1   rU     rV   z/boxplot.<locals>.plot_group.<locals>.<listcomp>c                 S  s   g | ]}t jt|td qS )r   )rX   asarrayr   r   rR   r0   r0   r1   rU     s    r<   )axis	labelsizer   T)r   r   r    rotationr   r;   r[   )r   r   r   r   r]   tick_paramsr2   r   r   r3   rB   )r   r   r   r`   r   r   rb   )r   r   rC   r   r0   r1   
plot_group  s&   zboxplot.<locals>.plot_group)r   r   r   r   r   r   rC   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pyplotr3   rF   rG   ro   r   to_framer   r   r   
rc_contextgcar   r&   r   r   r   r   )rM   columnr   r   r   r   r   r   r   rC   r`   pltr   r   r   r   rcr   r0   )r   r   r`   rC   r   r1   r]   ^  sf   



$


r]   c
                 K  s<   dd l m} t| f|||||||||	d	|
}|  |S )Nr   )	r   r   r   r   r   r   r   r   rC   )r   r   r]   draw_if_interactive)r7   r   r   r   r   r   r   r   r   rC   r`   r   r0   r0   r1   boxplot_frame  s$   r   rI   rK   rL   c              
   K  sF  |du rQt | }t|d||	|
||d\}}t|}tjtd}t| |D ] \\}}}|jd|||||d|}|t	| ||j
|< q$t|ddddd	d
 |S t|  \}}| jdkretj||dd}nt |dkrw|d |dd  }n|d }|d urt|}tj||g}t|j}|jd|||||||d|}|S )NTF)r   squeezer   rK   rL   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )r   r   )r   r   r   r   r   r   r   r0   )r&   r   r   r   r   r   r   r]   r   r   locr   r   concatjoincomconvert_to_list_like
MultiIndexfrom_productr   r   )r   rI   r   r   r   r   r   r   r   rK   rL   r`   r   r   r:   r   rs   groupdr   framesdf	multi_keyr0   r0   r1   boxplot_frame_groupby   sZ   
	




r  )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)rI   r!   r   r   r   r   r   r!   r   r   rK   r!   rL   r!   )?
__future__r   typingr   r   r   rm   
matplotlibr(   matplotlib.artistr   numpyrX   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   r2   r3   r   r   r]   r   r  r0   r0   r0   r1   <module>   s    
 
Q? "