Skip to main content

Marsilea: declarative creation of composable visualization

Documentation Status pypi version Conda Version PyPI - License DOI

Documentation | Tutorials | Gallery | llms.txt | Genome Biology

Marsilea: Declarative creation of composable visualization

Marsilea builds complex annotated heatmaps, oncoprints, UpSet plots, sequence logos and other composable visualizations in Python — declaratively, on top of Matplotlib.

Quickstart (8 lines)

import numpy as np
import marsilea as ma
import marsilea.plotter as mp

data = np.random.default_rng(0).standard_normal((10, 10))

h = ma.Heatmap(data, linewidth=0.5, height=4, width=4)
h.add_top(mp.Bar(data.mean(axis=0)), size=0.8, pad=0.1)
h.add_left(mp.Labels([f"Gene{i}" for i in range(10)]), pad=0.05)
h.add_dendrogram("right")
h.add_legends()
h.render()
Heatmap with a bar chart on top, gene labels on the left, a dendrogram on the right and a colorbar

Add a bar chart on top, labels on the left, a dendrogram on the right. Each side is just another building block. → Full tutorial

Using scanpy/scverse? Marsilea has an official how-to in the scanpy documentation: Plotting with Marsilea

Installation

PyPI

pip install marsilea

Conda

conda install -c conda-forge marsilea

Use with Claude Code

Marsilea ships an official Claude Code skill:

/plugin marketplace add Marsilea-viz/marsilea-skill
/plugin install marsilea@marsilea-marketplace

Once installed, the skill activates automatically whenever you ask Claude for a composable visualization. Marsilea itself still needs to be installed in your Python environment (see above). See the marsilea-skill repository, or Use Marsilea with AI assistants for other assistants and the machine-readable llms.txt.

What is Composable Visualization?

Animation of a heatmap gaining side plots one call at a time

When we do visualization, we often need to combine multiple plots to show different aspects of the data. For example, we may need to create a heatmap to show the expression of genes in different cells, and then create a bar chart to show the expression of genes in different cell types. A visualization contains multiple plots is called a composable visualization. In Marsilea, we employ a declarative approach for user to create composable visualization incrementally.

Examples

Bar chart with images Stacked bar chart Arc diagram
Bar chart of programming language ratings with language logos as labels Cross-layout stacked bar chart of fat content in cooking oils Arc diagram of the Les Misérables character network
Single-cell RNA-seq heatmap Oncoprint UpSet plot
Annotated heatmap of marker gene expression across PBMC 3k cell types Oncoprint of breast cancer mutations across samples and genes UpSet plot of genre intersections in the IMDB top 1000 movies

More examples →

Citation

If you use Marsilea in your research, please cite the following:

Marsilea: an intuitive generalized paradigm for composable visualizations

Yimin Zheng, Zhihang Zheng, André F. Rendeiro & Edwin Cheung

Genome Biology 2025 Jan 06. DOI: 10.1186/s13059-024-03469-3

Getting help

Found a bug or have a question? Open an issue.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

marsilea-0.7.0.post1.tar.gz (97.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

marsilea-0.7.0.post1-py3-none-any.whl (109.5 kB view details)

Uploaded Python 3

File details

Details for the file marsilea-0.7.0.post1.tar.gz.

File metadata

  • Download URL: marsilea-0.7.0.post1.tar.gz
  • Upload date:
  • Size: 97.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for marsilea-0.7.0.post1.tar.gz
Algorithm Hash digest
SHA256 a0a073f1b502775b62d6f896294a47edccfbbd14a4151c04b3ead2c1c9843204
MD5 c92404baddb255813657924cfac58bbf
BLAKE2b-256 5073d008afff7e9a7dcef29a8a154cffc02969eb68ffab2b2bf97ccca1da8236

See more details on using hashes here.

File details

Details for the file marsilea-0.7.0.post1-py3-none-any.whl.

File metadata

  • Download URL: marsilea-0.7.0.post1-py3-none-any.whl
  • Upload date:
  • Size: 109.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.12.5 {"installer":{"name":"uv","version":"0.12.5","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for marsilea-0.7.0.post1-py3-none-any.whl
Algorithm Hash digest
SHA256 722f47a296d34a6061c6b803dbb084c2b751b25478deed9ca2203c138c358eb7
MD5 f5aaaafe647c9954b98fadf00ce0a655
BLAKE2b-256 841ee30cff39b8f58a70a103bb4e5599bf82f0c52be277e144f7fa0d5d2237ce

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page