B
    ]”t\‰  ã               @   s(   d Z ddlZdgZddddœdd„ZdS )zâ
Stacked area plot for 1D arrays inspired by Douglas Y'barbo's stackoverflow
answer:
http://stackoverflow.com/questions/2225995/how-can-i-create-stacked-line-graph-with-matplotlib

(http://stackoverflow.com/users/66549/doug)

é    NÚ	stackplot© Úzero)ÚlabelsÚcolorsÚbaselinec         
   O   sl  t  |¡}t|ƒ}|dk	r&| j|d t j|dt  |jt j¡d}|dkrRd}	n\|dkr„t  |d¡ d }	||	ddd…f 7 }n*|d	krÒ|j	d }
||
d t  
|
¡dd…df    d¡}	|	|
  }	||	7 }nÜ|d
kr–|j	\}
}t  |d¡}t  |¡}|dk}d||  ||< t  |dd…dd…f t  |¡f¡}|| }|d| 7 }|| }d|dd…df< |d | }t  | d¡¡}|d|  }	||	7 }nd| }|d7 }t|ƒ‚| j ¡ }| j||	|ddd…f f|t|dƒdœ|—Ž}dg|jjdd…< |g}xhtt|ƒd ƒD ]T}| j ¡ }| | j|||dd…f ||d dd…f f|t|dƒdœ|—Ž¡ qW |S )a·  
    Draw a stacked area plot.

    Parameters
    ----------
    x : 1d array of dimension N

    y : 2d array (dimension MxN), or sequence of 1d arrays (each dimension 1xN)

        The data is assumed to be unstacked. Each of the following
        calls is legal::

            stackplot(x, y)               # where y is MxN
            stackplot(x, y1, y2, y3, y4)  # where y1, y2, y3, y4, are all 1xNm

    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 : Length N sequence of strings
        Labels to assign to each data series.

    colors : Length N sequence of colors
        A list or tuple of colors. These will be cycled through and used to
        colour the stacked areas.

    **kwargs :
        All other keyword arguments are passed to `Axes.fill_between()`.


    Returns
    -------
    list : list of `.PolyCollection`
        A list of `.PolyCollection` instances, one for each element in the
        stacked area plot.
    N)Úcolorr   )ZaxisÚdtyper   g        Zsymg      à?ZwiggleZweighted_wiggleg      ð?é   z#Baseline method %s not recognised. z5Expected 'zero', 'sym', 'wiggle' or 'weighted_wiggle')Z	facecolorZlabel)ÚnpZ	row_stackÚiterZset_prop_cycleZcumsumZpromote_typesr	   Zfloat32ÚsumÚshapeZarangeZ
zeros_likeZhstackZdiffÚ
ValueErrorZ
_get_linesZget_next_colorZfill_betweenÚnextZsticky_edgesÚyÚrangeÚlenÚappend)ZaxesÚxr   r   r   ÚargsÚkwargsr   ÚstackZ
first_lineÚmÚnZtotalZ	inv_totalÚmaskZincreaseZ
below_sizeZmove_upÚcenterZerrstrr   ZcollÚrÚir   r   ú3lib/python3.7/site-packages/matplotlib/stackplot.pyr      sZ    /

(




$


,)Ú__doc__Znumpyr   Ú__all__r   r   r   r   r   Ú<module>   s   