
    (?eZ                     <    d Z ddlZddlZddlmZ dgZdddddZdS )	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)_api	stackplot zero)labelscolorsbaselinec                    t          j        |          }t          |          }|t          j        |          }n fd|D             }t          j        |dt          j        |j        t           j                            }t          j
        g d|           |dk    rd}	nW|d	k    r*t          j        |d           d
z  }	||	dddf         z  }n'|dk    rS|j        d         }
||
d
z
  t          j        |
          dddf         z
  z                      d          }	|	|
 z  }	||	z  }n|dk    rt          j        |d          }t          j        |          }|dk    }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        |                    d                    }|d
|z  z
  }	||	z  }  j        ||	|dddf         ft%          |          t%          |d          d|}dg|j        j        dd<   |g}t+          t-          |          dz
            D ]Z}|                      j        |||ddf         ||dz   ddf         ft%          |          t%          |d          d|           [|S )a  
    Draw a stacked area plot.

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

    y : (M, N) array-like
        The data is assumed to be unstacked. Each of the following
        calls is legal::

            stackplot(x, y)           # where y has shape (M, N)
            stackplot(x, y1, y2, y3)  # 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 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`.

    Returns
    -------
    list of `.PolyCollection`
        A list of `.PolyCollection` instances, one for each element in the
        stacked area plot.
    Nc              3   J   K   | ]}j                                         V  d S )N)
_get_linesget_next_color).0_axess     4lib/python3.11/site-packages/matplotlib/stackplot.py	<genexpr>zstackplot.<locals>.<genexpr>M   s1      >>q$/0022>>>>>>    r   )axisdtype)r   symwiggleweighted_wiggle)r	   r   g        r   g      ?r   r   g      ?   )	facecolorlabel)npvstackiter	itertoolscyclecumsumpromote_typesr   float32r   check_in_listsumshapearange
zeros_likehstackdifffill_betweennextsticky_edgesyrangelenappend)r   xr   r   r	   argskwargsr.   stack
first_linemtotal	inv_totalmaskincrease
below_sizemove_upcentercollris   `                    r   r   r      s@   j 		$A&\\F((>>>>A>>> Iaar'7'L'LMMMECCC (* * * *6

	U		fQll]S(
D!!!G$$	X		GAJ1s7RYq\\!!!T'%::;@@CC
qb
	&	&	&q!M%((	qyd+	$9a1Q3i455U]
cAg
y(1C-8+6::a==))cEk)
 4Q
E!QQQ$K ''+F||4;M;M' '%' 'D  SD	A 3q66A: . .	""1eAqqqDk5Q? --1&\\)-fd););- - &,- - 	. 	. 	. 	. Hr   )__doc__r   numpyr   
matplotlibr   __all__r   r   r   r   <module>rF      su                  - vm m m m m m mr   