U
    祡ct                     @   sp   d Z ddlmZ z4ddlZed ddlmZ eeddddZ	W n& e
k
rj   eeddddZ	Y nX dS )	z?
Generate charts from gathered data.

Requires **matplotlib**.
    )StatsNZAgg)filenamestatsreturnc                    s  t |j }|  |jD ]}|| qdd |jD }dgt|j }g }g }|D ]  fdd|jD }t|dkrX fdd|jD }	dd |	D }	dd t||	D }	t	j
|||	}
||
d	 if |  |	}qXtjd
d}|d}|d |d |d dd |jD }|j||ddd dd |jD }|j||ddd |D ]\}}|j|| q`|jdd ||  dS )zF
        Create a time-space chart from a ``Stats`` instance.
        c                 S   s   g | ]
}|j qS  )	timestamp.0fpr   r   2/tmp/pip-unpacked-wheel-8ad_c8mj/pympler/charts.py
<listcomp>   s     z%tracker_timespace.<locals>.<listcomp>r   c                    s*   g | ]"}|j r |j kr|j   d  qS )pctclassesr   Zclsnamer   r   r      s     
g      @c                    s*   g | ]"}|j r |j kr|j   d  qS )sumr   r   r   r   r   r       s     
c                 S   s   g | ]}t |d  qS i   )floatr	   xr   r   r   r   "   s     c                 S   s   g | ]\}}|| qS r   r   )r	   offsetsizer   r   r   r   #   s     label)
      )Zfigsizeo   zSnapshot MemoryzExecution Time [s]zVirtual Memory [MiB]c                 S   s   g | ]}t |jd  qS r   )r   Zasizeof_totalr   r   r   r   r   0   s   zr--ZTotal)r   c                 S   s   g | ]}t |jd  qS r   )r   Ztracked_totalr   r   r   r   r   3   s   zb--zTracked total   )locN)listindexkeyssortZ	snapshotsZannotate_snapshotlenmaxzip
matplotlibZmlabZpoly_betweenappendpltfigureZadd_subplot	set_titleZ
set_xlabelZ
set_ylabelZplotfillZlegendZsavefig)r   r   Z	classlistZsnapshotZ
timestampsoffsetsZpoly_labelsZpolysr   ZsizesZpolyZfigZaxisZtotalsZtrackedargskwdsr   r   r   tracker_timespace   sF    





r.   c                 C   s   d S )Nr   )r   r   r   r   r   r.   =   s    )__doc__Zpympler.classtracker_statsr   r%   ZuseZmatplotlib.pyplotZpyplotr'   strr.   ImportErrorr   r   r   r   <module>   s   
.