pyalluv.plotting¶
-
class
AlluvialPlot
(clusters, axes, y_pos='overwrite', cluster_w_spacing=1, cluster_kwargs={}, flux_kwargs={}, label_kwargs={}, **kwargs)[source]¶ Bases:
object
Parameters: - clusters (dict[str, dict], dict[float, list] or list[list]) –
You have 2 options to create an Alluvial diagram:
- raw data: dict[str, dict]
- NOT IMPLEMENTED YET
Provide for each cluster (key) a dictionary specifying the out-fluxes in the form of a dictionary (key: cluster, value: flux).
Note
The key
None
can hold a dictionary specifying fluxes from/to outside the system. If is present in the provided dictionary it allows to specify in-fluxes, i.e. data source that were not present at the previous slice.If it is present in the out-fluxes of a cluster, the specified amount simply vanishes and will not lead to a flux.
- collections of
Cluster
: dict[float, list] and list[list] - If a list is provided each element must be a list
of
Cluster
objects. A dictionary must provide a list ofCluster
(value) for a horizontal position (key), e.g.{1.0: [c11, c12, ...], 2.0: [c21, c22, ...], ...}
.
- axes (
matplotlib.axes.Axes
) – Axes to draw an Alluvial diagram on. - y_pos (str) –
options:
'overwrite'
,'keep'
,'complement'
,'sorted'
- ’overwrite’:
- Ignore existing y coordinates for a cluster and set the vertical position to minimize the vertical displacements of all fluxes.
- ’keep’:
- use the cluster’s
y_pos
. If a cluster has no y position set this raises an exception. - ’complement’:
- use the cluster’s
y_pos
if set. Cluster without y position are positioned relative to the other clusters by minimizing the vertical displacements of all fluxes. - ’sorted’:
- NOT IMPLEMENTED YET
- cluster_w_spacing (float, int (default=1)) – Vertical spacing between clusters
- cluster_kwargs (dict (default={})) –
dictionary styling the Path elements of clusters.
- Keys:
- facecolor, edgecolor, alpha, linewidth, …
- cluster_kwargs –
dictionary styling the
PathPatch
of clusters.for a list of available options see
PathPatch
- flux_kwargs (dict (default={})) –
dictionary styling the
PathPatch
of fluxes.for a list of available options see
PathPatch
Note
Passing a string to facecolor and/or edgecolor allows to color fluxes relative to the color of their source or target clusters.
'source_cluster'
or'target_cluster'
:- will set the facecolor equal to the color of the respective cluster.
'cluster'
and'source_cluster'
are equivalent. '<cluster>_reside'
or'<cluster>_migration'
:- set the color based on whether source and target cluster have the
same color or not.
'<cluster>'
should be either'source_cluster'
or'target_cluster'
and determines the cluster from which the color is taken.Examples:
facecolor='cluster_reside'
- set facecolor to the color of the source cluster if both source and target cluster are of the same color.
edgecolor='cluster_migration'
- set edgecolor to the color of the source cluster if source and target cluster are of different colors.
- optional parameter (**kwargs) –
- x_lim: tuple
- the horizontal limit values for the
Axes
. - y_lim: tuple
- the vertical limit values for the
Axes
. - set_x_pos: bool
- if clusters is a dict then the key is set for all clusters
- cluster_width: float
- (NOT IMPLEMENTED) overwrites width of all clusters
- format_xaxis: bool (default=True)
- If set to True the axes is formatted according to the data
provided. For now, this is only relevant if the horizontal positions
are
datetime
objects. Seeset_dates_xaxis()
for further informations. - x_axis_offset: float
- how much space (relative to total height) should be reserved for the x_axis. If set to 0.0, then the x labels will not be visible.
- fill_figure: bool
- indicating whether or not set the axis dimension to fill up the entire figure
- invisible_x/invisible_y: bool
- whether or not to draw these axis.
- y_fix: dict
- with x_pos as keys and a list of tuples (cluster labels) as values. The position of clusters (tuples) are swapped.
- redistribute_vertically: int (default=4)
- how often the vertical pairwise swapping of clusters at a given time point should be performed.
-
color_clusters
(patches, colormap=<matplotlib.colors.LinearSegmentedColormap object>)[source]¶ unused
Parameters: - patches (list[
PathPatch
]) – Cluster patches to color. - colormap (
matplotlib.cm
(default=’rainbow’)) – See the matplotlib tutorial for colormaps (link) for details.
- patches (list[
-
distribute_clusters
(x_pos)[source]¶ Distribute the clusters for a given x_position vertically
Parameters: x_pos (float) – The horizontal position at which the clusters should be distributed. This must be a key of the clusters
attribute.
-
get_patchcollection
(match_original=True, cluster_kwargs={}, flux_kwargs={}, *args, **kwargs)[source]¶ Gather the patchcollection to add to the axes
Parameters: kwargs – Options:
-
set_dates_xaxis
(ax, resolution='months')[source]¶ Format the x axis in case
datetime
objects are provide for the horizontal placement of clusters.Parameters: - ax (
Axes
) – Object to plot the alluvial diagram on. - resolution (str (default='months')) –
Possible values are
'months'
and'weeks'
. This determines the resolution of the minor ticks viaset_minor_formatter
. The major tick is then either given in years or months.Todo
Include further options or allow passing parameters directly to
set_minor_formatter()
andset_major_formatter()
.
- ax (
- clusters (dict[str, dict], dict[float, list] or list[list]) –