Skip to content

A python library for creating alluvial diagrams

License

Notifications You must be signed in to change notification settings

dmalzl/pylluvial

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

41 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pylluvial

pypi python-version stable-version

A python library for creating alluvial diagrams with an arbitrary number of layers

Installation

Simply run the following

pip install pylluvial

or clone the repository

git clone git@github.com:dmalzl/pylluvial.git

and run

cd pylluvial
pip install .

you should then be able to import the package as usual

Usage

A minimal usage example would be as follows

import pylluvial as pa

data = pa.generate_test_data(
    [3, 4, 3, 2]
)

# by default labels are not shown
fig, ax = pa.alluvial(
    x='timepoint',
    stratum='module',
    alluvium='nodename',
    data=data,
    palette='husl',
    stratum_gap=2,
    stratum_width=2
)

fig.set_figwidth(10)
fig.set_figheight(5)
fig.tight_layout()

# pass show_labels = True to get labelled plots
fig, ax = pa.alluvial(
    x = 'timepoint',
    stratum = 'module',
    alluvium = 'nodename',
    palette = 'husl',
    data = data,
    stratum_gap = 2,
    stratum_width = 2,
    show_labels = True
)

fig.set_figwidth(10)
fig.set_figheight(5)
fig.tight_layout()

# use hue to split strata by a given grouping variable
fig, ax = pa.alluvial(
    x = 'timepoint',
    stratum = 'module',
    alluvium = 'nodename',
    hue = 'signif',
    palette = 'tab20',
    data = data,
    stratum_gap = 2,
    stratum_width = 2,
    show_labels = True
)

fig.set_figwidth(10)
fig.set_figheight(5)
fig.tight_layout()

The color assignment for hue elements using string arguments for palette can be quite cumbersome. However, you can always pass a dictionary with the colors you want to use to palette instead of a string

tab20_colors = {
    '1_s': '#1F77B5',
    '1_ns': '#B0C6E8',
    '2_s': '#F07E21',
    '2_ns': '#F9BA79',
    '3_s': '#2AA137',
    '3_ns': '#9DCB88',
    '4_s': '#D62828',
    '4_ns': '#F29697'
}
colors = {
    f't{i}': tab20_colors for i in range(4)
}
fig, ax = pa.alluvial(
    x = 'timepoint',
    stratum = 'module',
    alluvium = 'nodename',
    hue = 'signif',
    palette = colors,
    data = data,
    stratum_gap = 2,
    stratum_width = 2,
    show_labels = True
)

About

A python library for creating alluvial diagrams

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages