
    l0j                     @    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	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)cbookcollections_api_style_helpers	stackplot zero)labelscolorsbaselinec                    t          j        |          }t          |          }| fd|D             }t          j        |t
          j                  }|                    d|           t          j	        |          \  }}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dt/          |d          it/          |          |}dg|j        j        dd<   |g}t5          t7          |          dz
            D ][}|                      j        ||	|ddf         |	|dz   ddf         fdt/          |d          it/          |          |           \|S )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.
    Nc                 B    g | ]}j                                         S r   )
_get_linesget_next_color).0_axess     W/home/wildlama/miniconda3/envs/lam/lib/python3.11/site-packages/matplotlib/stackplot.py
<listcomp>zstackplot.<locals>.<listcomp>Y   s'    >>>q$/0022>>>    	facecolorr   )axisdtype)r	   symwiggleweighted_wiggle)r   r	   g        r   g      ?r   r   g      ?   label)npvstackiterr   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)r   xr
   r   r   argskwargsr3   	style_genstack
first_linemtotal	inv_totalmaskincrease
below_sizemove_upcentercollris   `                     r   r   r      s   H 		$A&\\F~>>>>A>>>#FK,FGGF
k6***&6v>>FI 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 : :#'#5#5:#I:28: :D  SD	A 3q66A: A A	""1eAqqqDk5Q? @ @)-fd););@%))__@8>@ @ 	A 	A 	A 	A Hr   )
__doc__numpyr   
matplotlibr   r   r   r   __all__r   r   r   r   <module>rL      s{         ? ? ? ? ? ? ? ? ? ? ? ?- v~ ~ ~ ~ ~ ~ ~r   