
    dD                       d dl mZ d dlmZmZmZm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Zd dlmc 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l)m*Z*  G d de          Z+	 	 	 	 	 	 	 	 d d!dZ,	 	 	 	 	 	 	 	 	 d"d#dZ-	 	 	 	 	 	 	 	 	 d"d#dZ.	 	 	 	 	 	 	 	 	 	 d$d%dZ/dS )&    )annotations)TYPE_CHECKING
CollectionLiteral
NamedTupleN)setp)MatplotlibColor)find_stack_level)is_dict_likeremove_na_arraylikepprint_thing)LinePlotMPLPlot)create_iter_data_given_by)get_standard_colors)create_subplotsflatten_axesmaybe_adjust_figure)Axes)Line2Dc                       e Zd Zedd            ZdZdZ G d de          Zd d!dZ	d"dZ
e	 d#d$d            Zd Z	 	 d%d&dZd"dZd"dZd'dZd"dZd"dZed(d            Ze fd            Z xZS ))BoxPlotreturnLiteral['box']c                    dS )Nbox selfs    _/var/www/html/t/fyr/venv311/lib/python3.11/site-packages/pandas/plotting/_matplotlib/boxplot.py_kindzBoxPlot._kind*   s    u    
horizontal)Naxesdictbothc                  $    e Zd ZU ded<   ded<   dS )
BoxPlot.BPr   axzdict[str, list[Line2D]]linesN)__name__
__module____qualname____annotations__r   r$   r"   BPr*   2   s'         &&&&&&r$   r1   r&   return_typestrNonec                j    || j         vrt          d          || _        t          j        | |fi | d S )Nz2return_type must be {None, 'axes', 'dict', 'both'})_valid_return_types
ValueErrorr2   r   __init__)r!   datar2   kwargss       r"   r8   zBoxPlot.__init__7   sH    d666QRRR&t..v.....r$   c                N    | j         r| j        dk    r	d| _        d S d| _        d S d S )NverticalF)subplotsorientationsharexshareyr    s    r"   _args_adjustzBoxPlot._args_adjust?   s<    = 	$ :--##	$ 	$r$   Nc                    |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     r"   
<listcomp>z!BoxPlot._plot.<locals>.<listcomp>N   s!    333A$Q''333r$   c                f    g | ].}|j         d k    r|nt          j        t          j        g          /S )r   )sizenparraynanrE   s     r"   rH   z!BoxPlot._plot.<locals>.<listcomp>R   s4    DDDQafqjjbhx&8&8DDDr$   r'   r(   r+   r,   )ndimr   boxplotr1   )clsr+   y
column_numr2   kwdsbps          r"   _plotzBoxPlot._plotI   s     6Q;;33333A ED!DDDAA#A&&ARZ""T""&  r6MF""66Rr6**B..r6Mr$   c                   d| j         v r| j        "t          j        dt	                                 | j                             d          | _        t          | j        t                    r'g d}| j        D ]}||vrt          d| d|           nd | _        t          d| j        d           }|d	         | _        |d	         | _        |d
         | _        |d	         | _        d S )NcolorzC'color' and 'colormap' cannot be used simultaneously. Using 'color')
stacklevelboxeswhiskersmedianscaps!color dict contains invalid key ''. The key must be either    )
num_colorscolormaprX   r   rC   )rT   rc   warningswarnr
   poprX   
isinstancer'   r7   r   _boxes_c_whiskers_c
_medians_c_caps_c)r!   
valid_keyskeycolorss       r"   _validate_color_argszBoxPlot._validate_color_args^   s    di}(4/11   
 w//DJ$*d++ EEE
:  C*,,(C C C6@C C   - DJ %DMQUVVV q	!!9 )ayr$   rX   
color_kwdsQdict[str, MatplotlibColor] | MatplotlibColor | Collection[MatplotlibColor] | Nonec                    d S Nr   )r!   rb   rp   s      r"   _get_colorszBoxPlot._get_colors}   s	     	r$   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        }| j                            d          st          |d         |d           | j                            d          st          |d         |d           | j                            d	          st          |d         |d           | j                            d
          st          |d         |d           d S d S )Nr[   r\   r]   r^   boxprops   rX   alphawhiskerpropsmedianpropscapprops)
rg   rX   r'   getrh   ri   rj   rk   rT   r   )r!   rU   r[   r\   r]   r^   s         r"   maybe_color_bpz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 y}}Z(( 	4GE3333y}}^,, 	:Jxq9999y}}]++ 	8IgQ7777y}}Z(( 	2F4q111111	2 	2r$   c                   | j         rTt          j        t                    | _        | j        t          | j        | j                  n| j        }t          | 
                    |                    D ]\  }\  }}|                     |          }| j                                        }| j        K|j        }|                    t!          |                     d | j        j        j        d         D             }nt!          |          g} | j        ||f|| j        d|\  }}	|                     |	           || j        |<   |                     ||           d S | j        j        j        }|                     d          }| j                                        } | j        ||fd| j        d|\  }}	|                     |	           || _        d | 
                                D             }
d |
D             }
| j        s&d t3          t5          |
                    D             }
|                     ||
           d S )	Ndtype)r9   c                ,    g | ]}t          |          S r   r   )rF   cols     r"   rH   z&BoxPlot._make_plot.<locals>.<listcomp>   s-     " " ".1S))" " "r$   r   )rS   r2   c                    g | ]\  }}|S r   r   )rF   left_s      r"   rH   z&BoxPlot._make_plot.<locals>.<listcomp>   s    <<<wtQd<<<r$   c                ,    g | ]}t          |          S r   r   )rF   r   s     r"   rH   z&BoxPlot._make_plot.<locals>.<listcomp>   s     <<<Tl4((<<<r$   c                ,    g | ]}t          |          S r   r   )rF   rm   s     r"   rH   z&BoxPlot._make_plot.<locals>.<listcomp>   s     JJJ,s++JJJr$   )r=   pdSeriesobject_return_objbyr   r9   r#   	enumerate
_iter_data_get_axrT   copyT	set_titler   columnslevelsrV   r2   r~   _set_ticklabelsvalues	use_indexrangelen)r!   r9   ilabelrR   r+   rT   
ticklabelsretrU   labelss              r"   
_make_plotzBoxPlot._make_plot   s{   = 1	-!yv666D
 7& *$)TZ@@@Y  "+4???+E+E!F!F 5 5:E1\\!__y~~'' 7&ALLe!4!4555" "59Y5F5Ma5P" " "JJ #/u"5"5!6J$$*&'T5E IM R ##B'''*- '$$R4444/5 52 	 "AaB9>>##D djA"#1A EI GC ###"D<<$//*;*;<<<F<<V<<<F> KJJuS[[7I7IJJJ  V,,,,,r$   r+   r   c                t    | j         dk    r|                    |           d S |                    |           d S )Nr<   )r>   set_xticklabelsset_yticklabels)r!   r+   r   s      r"   r   zBoxPlot._set_ticklabels   sD    z))v&&&&&v&&&&&r$   c                    d S rs   r   r    s    r"   _make_legendzBoxPlot._make_legend   s    r$   c                    | j         r'|                    t          | j                              | j        r)|                    t          | j                             d S d S rs   )xlabel
set_xlabelr   ylabel
set_ylabel)r!   r+   r9   s      r"   _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 	5r$   !Literal['horizontal', 'vertical']c                @    | j                             dd          rdS dS )NvertTr<   r%   )rT   r}   r    s    r"   r>   zBoxPlot.orientation   s$    9==&& 	 :<r$   c                F    | j         t                      j        S | j        S rs   )r2   superresultr   )r!   	__class__s    r"   r   zBoxPlot.result   s!    #77>!##r$   )r   r   )r&   )r2   r3   r   r4   r   r4   )Nr&   )r2   r3   )NrX   )rp   rq   r   r4   )r+   r   r   r4   )r   r   )r-   r.   r/   propertyr#   _layout_typer6   r   r1   r8   rA   classmethodrV   ro   rt   r~   r   r   r   r   r>   r   __classcell__)r   s   @r"   r   r   )   s          X  L8' ' ' ' 'Z ' ' '
/ / / / /$ $ $ $ 8>    [(! ! !B      2 2 2 222- 2- 2- 2-h' ' ' '   5 5 5 5       X  $ $ $ $ X$ $ $ $ $r$   r   TFnumeric_onlyboolgridc
                   |                     |          }|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 )Nr?   Tr@   )naxesr?   r@   figsizer+   layoutr   r   r   )r   r   F)indexr   rw   r   zBoxplot grouped by 333333??皙?皙?bottomtopr   rightwspace)groupbyrg   listtuple_get_numeric_datar   
differencer   r   rf   r   r}   r   zipr   appendr   r   r   suptitler   )plotfr9   r   r   r   r   r   r+   r   r2   r:   groupedr   figr&   _axesr   r   	ax_valuesr   r   gp_colkeysr   re_plotfr   bylines                              r"   _grouped_plot_by_columnr      s    ll2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Mr$   rotintc
                (  	
 dd l m} 	t          j        vrt	          d          t          | t          j                  r|                     d          } d}
f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 )
Nra   )rb   )r   r   rC   krX   rZ      r_   r`   )r   rK   taker   rf   r   r'   r   r   itemsr7   fill)r   rn   rl   key_to_indexrm   valuerT   s         r"   rt   zboxplot.<locals>._get_colorsG  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###r$   r   r4   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 )Nrv   r[   r   rw   rx   rz   r\   r{   r]   rC   r|   r^   ra   )r}   r   )rU   rT   rn   s     r"   r~   zboxplot.<locals>.maybe_color_bpd  s     xx
## 	8GF1IQ7777xx'' 	;Jvay::::xx&& 	:IfQiq9999xx
## 	7F6!9A666666	7 	7r$   r+   r   c                z   |                     dd           |                     dd           }}|r"|                    t          |                     |r"|                    t          |                     d | D             } d |D             } |j        |fi |}|                    d           |                    dd          }|r|                                n|                                }t          |          t          |           k    rBt          t          |          t          |                     \  }	}
|
d	k    s
J |
            | |	z  } |r|                    | 
           n|                    | 
            |fi | dk    r|S dk    rt                              ||          S |S )Nr   r   c                ,    g | ]}t          |          S r   r   )rF   r   s     r"   rH   z/boxplot.<locals>.plot_group.<locals>.<listcomp>x  s    ...AQ...r$   c                ^    g | ]*}t          j        t          |          t                     +S )r   )rK   asarrayr   r   rE   s     r"   rH   z/boxplot.<locals>.plot_group.<locals>.<listcomp>y  s0    SSSq"*0336BBBSSSr$   r(   )axis	labelsizer   Tr   )rotationr'   rN   )rf   r   r   r   rP   tick_paramsr}   
get_xticks
get_yticksr   divmodr   r   r   r1   )r   r   r+   rT   r   r   rU   is_verticalticksr   	remainderfontsizer~   r2   r   s              r"   
plot_groupzboxplot.<locals>.plot_groupp  s   (D11488Hd3K3K 	0MM,v../// 	0MM,v..///.....SSFSSSRZ''$''NN(N;;; hhvt,,#.CBMMOOu::T""!#e**c$ii88LAy>>>9>>>AID 	3tc2222tc222r""T""" &  IF""::2:...Ir$   )r   r   r   r   r+   r   r2   r&   z7The 'layout' keyword is not supported when 'by' is Nonezfigure.figsizez;boxplot method requires numerical columns, nothing to plot.r   )r+   r   )matplotlib.pyplotpyplotr   r6   r7   rg   r   r   to_framer   r   r   
rc_contextgcar   r   r   r   r   r   )r9   columnr   r+   r   r   r   r   r   r2   rT   pltrt   r   r   r   rcr   rn   r~   s       ``   ``       @@r"   rP   rP   0  s    $##### '555GHHH$	"" }}S!!    :
7 
7 
7 
7 
7 
7! ! ! ! ! ! ! ! !F []]F~ftUm,, 	GGhG	~ )
 #
 
 
 
  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   r2   )r   r   rP   draw_if_interactive)r!   r   r   r+   r   r   r   r   r   r2   rT   r   s               r"   boxplot_framer    sp     $#####	

 
 
 
B Ir$   r=   r?   r@   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+   r?   r@   r   r   r   )r+   r   r   r   r   r   r   r   r   r   r   rw   )r   r   )r   r   r   r   r+   r   r   r   )r   r   r   r   r   r   r   rP   r   r   locr   r   concatjoincomconvert_to_list_like
MultiIndexfrom_productr   r   )r   r=   r   r   r   r   r+   r   r   r?   r@   rT   r   r   r&   r   rm   groupdr   framesdf	multi_keys                          r"   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6{{QAY^^F133K00AY -f55F22D&>BBI)*++Fbj 	
	
 	
 	
 	
 Jr$   )NNTFNNNN)r   r   r   r   )	NNNNr   TNNN)r   r   r   r   )
TNNr   TNNNFT)
r=   r   r   r   r   r   r?   r   r@   r   )0
__future__r   typingr   r   r   r   rd   matplotlib.artistr   numpyrK   pandas._typingr	   pandas.util._exceptionsr
   pandas.core.dtypes.commonr   pandas.core.dtypes.missingr   pandasr   pandas.core.commoncorecommonr  pandas.io.formats.printingr    pandas.plotting._matplotlib.corer   r   #pandas.plotting._matplotlib.groupbyr   !pandas.plotting._matplotlib.styler   !pandas.plotting._matplotlib.toolsr   r   r   matplotlib.axesr   matplotlib.linesr   r   r   rP   r  r  r   r$   r"   <module>r%     s   " " " " " "             " " " " " "     * * * * * * 4 4 4 4 4 4 2 2 2 2 2 2 : : : : : :                       3 3 3 3 3 3        J I I I I I A A A A A A           ($$$$$$''''''G$ G$ G$ G$ G$h G$ G$ G$Z : : : : :~ S S S S Sp     D @ @ @ @ @ @ @r$   