
    hMh'                       d dl mZ d dlmZmZmZ d dlZd dlmZm	Z	m
Z
 d dlmZ d dlZd dl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mZmZmZmZ d dlm Z   G d d          Z!e
e"e!f         Z#e
e$e!f         Z%e
e&e!f         Z'e
e$e(e!f         Z)e
e$eee!f         Z*e G d d                      Z+d dZ,	 	 d!d"dZ-d Z.dS )#    )annotations)	dataclassfieldsfieldN)AnyCallableUnion)	Generator)ndarray)	DataFrame)Artist)Scale)
PROPERTIESProperty	RGBATupleDashPatternDashPatternWithOffset)PlotSpecErrorc                  p    e Zd Z	 	 	 	 	 dddZd Zedd            Zedd            Zedd            ZdS )MappableNFTvalr   depend
str | Nonercautoboolgroupingc                    ||t           v sJ ||t          j        v sJ || _        || _        || _        || _        || _        dS )a  
        Property that can be mapped from data or set directly, with flexible defaults.

        Parameters
        ----------
        val : Any
            Use this value as the default.
        depend : str
            Use the value of this feature as the default.
        rc : str
            Use the value of this rcParam as the default.
        auto : bool
            The default value will depend on other parameters at compile time.
        grouping : bool
            If True, use the mapped variable to define groups.

        N)r   mplrcParams_val_rc_depend_auto	_grouping)selfr   r   r   r   r   s         S/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/seaborn/_marks/base.py__init__zMappable.__init__   sZ    2 Z''''>%%%%	
!    c                    | j         dt          | j                    d}n2| j        d| j         d}n| j        d| j         d}n| j        rd}nd}|S )z?Nice formatting for when object appears in Mark init signature.N<>z<depend:z<rc:z<auto>z<undefined>)r!   reprr#   r"   r$   )r&   ss     r'   __repr__zMappable.__repr__?   sw    9 &DOO&&&AA\%*4<***AAX!"tx"""AAZ 	AAAr)   returnc                    | j         S )z>Return the name of the feature to source a default value from.)r#   r&   s    r'   r   zMappable.dependM   s     |r)   c                    | j         S N)r%   r2   s    r'   r   zMappable.groupingR   s
    ~r)   c                x    | j         | j         S | j        $t          j                            | j                  S dS )zGGet the default value for this feature, or access the relevant rcParam.N)r!   r"   r   r    getr2   s    r'   defaultzMappable.defaultV   s<     9 9X!<##DH--- "!r)   )NNNFT)
r   r   r   r   r   r   r   r   r   r   )r0   r   )r0   r   )	__name__
__module____qualname__r(   r/   propertyr   r   r7    r)   r'   r   r      s         !"" "" "" "" ""H      X    X . . . X. . .r)   r   c                      e Zd ZU dZ ee          Zded<   ed             Z	ed             Z
	 dddZddZd dZd!dZdS )"Markz4Base class for objects that visually represent data.)default_factorydict
artist_kwsc                :      fdt                     D             S )Nc                z    i | ]7}t          |j        t                    |j        t	          |j                  8S r<   )
isinstancer7   r   namegetattr).0fr&   s     r'   
<dictcomp>z(Mark._mappable_props.<locals>.<dictcomp>p   sK     
 
 
./!)X..
FGD!&))
 
 
r)   r   r2   s   `r'   _mappable_propszMark._mappable_propsn   s4    
 
 
 
39$<<
 
 
 	
r)   c                4    d t          |           D             S )Nc                h    g | ]/}t          |j        t                    |j        j        (|j        0S r<   )rD   r7   r   r   rE   rG   rH   s     r'   
<listcomp>z(Mark._grouping_props.<locals>.<listcomp>y   sI     
 
 
!)X..
3493E
F
 
 
r)   rJ   r2   s    r'   _grouping_propszMark._grouping_propsu   s)    
 
"4LL
 
 
 	
r)   NdataDataFrame | dict[str, Any]rE   strscalesdict[str, Scale] | Noner0   r   c                D   | j         |         }t          j        |t          |                    }t	          |t
                     }t	          |t          j                  }|o|                    d           }|dk    r|o||v}|rB|	                    |          }|r|gt          |          z  }|rt          j        |          }|S ||v rl|||vr	||         }nE||         }	||         }
	  |	|
          }n(# t          $ r}t          j        d|          |d}~ww xY w|rt          j        |          }|S |j        |                     ||j        |          S |	                    |j                  }|r|gt          |          z  }|rt          j        |          }|S )a  Obtain default, specified, or mapped value for a named feature.

        Parameters
        ----------
        data : DataFrame or dict with scalar values
            Container with data values for features that will be semantically mapped.
        name : string
            Identity of the feature / semantic.
        scales: dict
            Mapping from variable to corresponding scale object.

        Returns
        -------
        value or array of values
            Outer return type depends on whether `data` is a dict (implying that
            we want a single value) or DataFrame (implying that we want an array
            of values with matching length).

        stylewidthNzScaling operation)rK   r   r6   r   rD   r   pdr   endswithstandardizelennparray	Exceptionr   _duringasarrayr   _resolver7   )r&   rQ   rE   rT   featurepropdirectly_specifiedreturn_multiplereturn_arrayscalevalueerrr7   s                r'   rb   zMark._resolve   s   2 &t,~dHTNN33!+GX!>!>>$T2<88&Et}}W/E/E+E
 7??!3!HD8H 	&&w//G 0")c$ii/ ,(7++N4<<~V!3!3t*tT
T#eEllGG  T T T'/0CTJJPSST  .*W--N>% ==w~v>>>""7?33 	,i#d))+G 	(hw''Gs   ,C8 8
DDDc                b    d|vrdn|d         j         }d|vrdn|d         j         }||k    rdS dS )Nxr   y)	_priority)r&   rT   rl   rm   s       r'   _infer_orientzMark._infer_orient   sK     F""AAs(=F""AAs(=q5533r)   split_generatorCallable[[], Generator]dict[str, Scale]orientNonec                    t                      )z#Main interface for creating a plot.)NotImplementedError)r&   rp   rT   rs   s       r'   _plotz
Mark._plot   s     "###r)   	variables	list[str]ri   Artist | Nonec                    d S r4   r<   )r&   rx   ri   rT   s       r'   _legend_artistzMark._legend_artist   s	     tr)   r4   )rQ   rR   rE   rS   rT   rU   r0   r   )rT   r@   r0   rS   )rp   rq   rT   rr   rs   rS   r0   rt   )rx   ry   ri   r   rT   rr   r0   rz   )r8   r9   r:   __doc__r   r@   rA   __annotations__r;   rK   rP   rb   ro   rw   r|   r<   r)   r'   r>   r>   h   s         >>uT222J2222
 
 X
 
 
 X
 +/	G G G G GR    $ $ $ $     r)   r>   markrQ   r   rT   rr   r0   dict[str, Any]c                6      fd j         D             }|S )Nc                @    i | ]}|                     |          S r<   )rb   )rG   rE   rQ   r   rT   s     r'   rI   z&resolve_properties.<locals>.<dictcomp>   s8       48dmmD$//  r)   )rK   )r   rQ   rT   propss   ``` r'   resolve_propertiesr      sA         <@<P  E Lr)    DataFrame | dictprefixrS   rU   RGBATuple | ndarrayc                   |                      || d|          }| d| j        v r|                      || d|          }n|                      |d|          }d
d}t          j        |          dk     rt	          d |D                       rkt          |          dk    rt          j                            |          S  ||          r|nt          j	        }t          j                            ||          S t          j        |          dk    r0|j
        d         dk    rt          j                            |          S t          j         ||d	          |t          j	                  }t          j                            ||          S )a  
    Obtain a default, specified, or mapped value for a color feature.

    This method exists separately to support the relationship between a
    color and its corresponding alpha. We want to respect alpha values that
    are passed in specified (or mapped) color values but also make use of a
    separate `alpha` variable, which can be mapped. This approach may also
    be extended to support mapping of specific color channels (i.e.
    luminance, chroma) in the future.

    Parameters
    ----------
    mark :
        Mark with the color property.
    data :
        Container with data values for features that will be semantically mapped.
    prefix :
        Support "color", "fillcolor", etc.

    coloralphaNc                    t          j        |           j        j        dk    p&t          j        |                               |          S )z5Detect "invisible" colors to set alpha appropriately.rH   )r]   r^   dtypekindisfiniteall)rl   axiss     r'   visiblezresolve_color.<locals>.visible  s8     x{{ %,HA0B0B40H0HHr)      c              3  @   K   | ]}t          |t                    V  d S r4   )rD   float)rG   rl   s     r'   	<genexpr>z resolve_color.<locals>.<genexpr>  s,      !F!F1*Q"6"6!F!F!F!F!F!Fr)         )r   r4   )rb   rK   r]   ndimr   r\   r   colorsto_rgbananshapeto_rgba_arraywhere)r   rQ   r   rT   r   r   r   s          r'   resolve_colorr      s   4 MM$6 0 0 0&99E
4///dv$4$4$4f==dGV44I I I I 
wu~~c!F!F!F!F!FFFu::??:%%e,,, 3RVz!!%///75>>Q5;q>Q#6#6:++E222Q///??z''u555r)   c                @   d t          |           D             }ddt          j        d                    d |D                       ddd          g}| j                            d	          }d	                    g |d d
         ||d
d                    }|| _        | S )Nc                P    g | ]#}t          |j        t                    |j        $S r<   )rD   r7   r   rE   rN   s     r'   rO   z'document_properties.<locals>.<listcomp>,  s+    RRRQ*QY2Q2QR!&RRRr)   r   z/    This mark defines the following properties:z, c                    g | ]}d | d 	S )|r<   )rG   ps     r'   rO   z'document_properties.<locals>.<listcomp>1  s     444Ax1xxx444r)   N   z        )rX   initial_indentsubsequent_indent
r   )r   textwrapfilljoinr}   split)r   
propertiestextdocstring_linesnew_docstrings        r'   document_propertiesr   *  s    RR&,,RRRJ
9II4444455W	
 	
 	
D l((..OII 	!		 
	  M
 !DLKr)   )r   r>   rQ   r   rT   rr   r0   r   )r   N)
r   r>   rQ   r   r   rS   rT   rU   r0   r   )/
__future__r   dataclassesr   r   r   r   typingr   r   r	   collections.abcr
   numpyr]   pandasrY   
matplotlibr   r   r   matplotlib.artistr   seaborn._core.scalesr   seaborn._core.propertiesr   r   r   r   r   seaborn._core.exceptionsr   r   r   MappableBoolrS   MappableStringr   MappableFloattupleMappableColorMappableStyler>   r   r   r   r<   r)   r'   <module>r      sB   " " " " " " 0 0 0 0 0 0 0 0 0 0  ' ' ' ' ' ' ' ' ' ' % % % % % %                         $ $ $ $ $ $ & & & & & &              3 2 2 2 2 2B. B. B. B. B. B. B. B.N T8^$sH}%eXo&c5(*+c;(=xGH | | | | | | | |~    &*	26 26 26 26 26p    r)   