
    ^j                     >    d Z ddlZddlmZmZmZmZ dgZdddddZ	y)	z
Stacked area plot for 1D arrays inspired by Douglas Y'barbo's stackoverflow
answer:
https://stackoverflow.com/q/2225995/

(https://stackoverflow.com/users/66549/doug)
    N)cbookcollections_api_style_helpers	stackplot zero)labelscolorsbaselinec                
   t        j                  |      }t        |      }|'|D cg c]  }| j                  j	                          }}t        j                  |t        j                        }|j                  d|       t        j                  |      \  }}	t        j                  |dt        j                  |j                  t         j                              }
t!        j"                  g d|       |dk(  rd}nH|d	k(  r(t        j$                  |d       d
z  }|
|dddf   z  }
n|dk(  rO|j&                  d   }||d
z
  t        j(                  |      dddf   z
  z  j%                  d      }|| z  }|
|z  }
n|dk(  rt        j$                  |d      }t        j*                  |      }|dkD  }d||   z  ||<   t        j,                  |ddddf   t        j.                  |      f      }||
z
  }|d
|z  z  }||z  }d
|dddf<   |d
z
  |z  }t        j                  |j%                  d            }|d
|z  z
  }|
|z  }
 | j0                  ||
dddf   fdt3        |d      it3        |	      |}dg|j4                  j6                  dd |g}t9        t;        |      dz
        D ]N  }|j=                   | j0                  ||
|ddf   |
|dz   ddf   fdt3        |d      it3        |	      |       P |S c c}w )a  
    Draw a stacked area plot or a streamgraph.

    Parameters
    ----------
    x : (N,) array-like

    y : (M, N) array-like
        The data can be either stacked or unstacked. Each of the following
        calls is legal::

            stackplot(x, y)  # where y has shape (M, N) e.g. y = [y1, y2, y3, y4]
            stackplot(x, y1, y2, y3, y4)  # where y1, y2, y3, y4 have length N

    baseline : {'zero', 'sym', 'wiggle', 'weighted_wiggle'}
        Method used to calculate the baseline:

        - ``'zero'``: Constant zero baseline, i.e. a simple stacked plot.
        - ``'sym'``:  Symmetric around zero and is sometimes called
          'ThemeRiver'.
        - ``'wiggle'``: Minimizes the sum of the squared slopes.
        - ``'weighted_wiggle'``: Does the same but weights to account for
          size of each layer. It is also called 'Streamgraph'-layout. More
          details can be found at http://leebyron.com/streamgraph/.

    labels : list of str, optional
        A sequence of labels to assign to each data series. If unspecified,
        then no labels will be applied to artists.

    colors : list of :mpltype:`color`, optional
        A sequence of colors to be cycled through and used to color the stacked
        areas. The sequence need not be exactly the same length as the number
        of provided *y*, in which case the colors will repeat from the
        beginning.

        If not specified, the colors from the Axes property cycle will be used.

    data : indexable object, optional
        DATA_PARAMETER_PLACEHOLDER

    **kwargs
        All other keyword arguments are passed to `.Axes.fill_between`.  The
            following parameters additionally accept a sequence of values
            corresponding to the *y* datasets:

            - *hatch*
            - *edgecolor*
            - *facecolor*
            - *linewidth*
            - *linestyle*

            .. versionadded:: 3.9
               Allowing a sequence of strings for *hatch*.

            .. versionadded:: 3.11
               Allowing sequences of values in above listed `.Axes.fill_between`
               parameters.

    Returns
    -------
    list of `.PolyCollection`
        A list of `.PolyCollection` instances, one for each element in the
        stacked area plot.
    N	facecolorr   )axisdtype)r	   symwiggleweighted_wiggle)r   r	   g        r   g      ?r   r   g      ?   label)npvstackiter
_get_linesget_next_colorr   normalize_kwargsr   PolyCollection
setdefaultr   style_generatorcumsumpromote_typesr   float32r   check_in_listsumshapearange
zeros_likehstackdifffill_betweennextsticky_edgesyrangelenappend)axesxr
   r   r   argskwargsr,   _	style_genstack
first_linemtotal	inv_totalmaskincrease
below_sizemove_upcentercollris                          M/opt/ringagent/.cad-venv/lib/python3.12/site-packages/matplotlib/stackplot.pyr   r      s   H 			$A&\F~<=>q$//002>>##FK,F,FGF
k6*&66v>FI IIaar'7'7'LMEC (*6
	U	ffQl]S(
D!G$$	X	GGAJ1s7RYYq\!T'%::;@@C
qb
	&	&q!MM%(	qyd+	$99a1Q3i45U]
cAg
y(1C-8+6::a=)cEk)
 4Q
E!Q$K :#'#5:#I:28:D  SD	A 3q6A: A	"""1eAqDk5Q? @)-fd);@%))_@8>@ 	AA Hm ?s   !L )
__doc__numpyr   
matplotlibr   r   r   r   __all__r   r       rC   <module>rI      s+     ? ?- v~rH   