UpSetPlot
Draw Lex et al.'s UpSet plots with Pandas and Matplotlib
What it is and what it does
UpSetPlot is a Python library for visualizing set overlaps and categorical intersections. It implements the UpSet plot design from Lex et al., which represents set intersections as a matrix of horizontal or vertical bars, making it easier to read than traditional Venn diagrams when dealing with many categories or complex overlaps.
The library accepts data in multiple formats—most commonly a pandas Series indexed by boolean category membership, or a DataFrame to show distributions within each subset. It provides helper functions like from_memberships and from_contents to transform raw data into the required format, then renders publication-ready plots via matplotlib. The design is extensible and object-oriented, allowing customization of plot appearance and behavior.
Use it for:
- Visualize overlaps in genomic or biological datasets where multiple categories (genes, samples, conditions) intersect.
- Display membership patterns in survey or classification data where items belong to multiple categories simultaneously.
- Compare set intersections in machine learning experiments where predictions or labels overlap across classes.
- Show distribution of a continuous variable (e.g., expression level) across different category combinations.
- Create publication-ready plots for research papers presenting categorical or set-based analysis results.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
UpSetPlot generates visualizations of set overlaps and intersections using a matrix-based layout that scales better than Venn diagrams, backed by pandas and matplotlib.
Yes, if you need to visualize set intersections and overlaps in categorical data. UpSetPlot is stable, permissive, and has no known vulnerabilities. The main caveat is that the package is dormant (957 days since release), so compatibility with very recent pandas or matplotlib versions is unverified; test against your environment before relying on it in production.
Install
upsetplot on PyPI
pip
pip install upsetplotuv
uv add upsetplotpoetry
poetry add upsetplotInstalling UpSetPlot
Before you install
Installation requires pandas and matplotlib; the package is dormant (957 days since last release) but carries no known vulnerabilities and has permissive licensing.
License in practice
BSD-3-Clause is permissive; you can use, modify, and distribute UpSetPlot with minimal restrictions, provided you include the license notice.
Quickstart
pip install upsetplot
from upsetplot import generate_counts, plot
example = generate_counts()
plot(example)
Requires pandas and matplotlib >= 2.0; seaborn is needed only for the add_catplot method.
Verify before relying
- Whether the package is actively maintained or has been superseded by another implementation.
- Compatibility with recent versions of pandas and matplotlib beyond the stated requirements.
Package facts
| License | BSD-3-Clause (permissive) |
| Python support | not specified |
| Install friction | high — source build required |
| Runtime dependencies | none |
| Maintenance | dormant — 957 days since the last release |
| First released | |
| Downloads | 91,161/month — #13,534 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: UpSetPlot-0.9.0.tar.gz
Tags
More Visualization packages
matplotlib creates static, animated, and…
permissive · top 1,000 on PyPI
contourpyContourPy calculates contours of 2D…
permissive · top 1,000 on PyPI
plotlyPlotly is an interactive, browser-based…
permissive · top 1,000 on PyPI
graphvizGenerates DOT language source code for graph…
permissive · top 1,000 on PyPI
streamlitStreamlit transforms Python scripts into…
permissive · top 1,000 on PyPI
leatherLeather is a lightweight Python charting…
permissive · top 1,000 on PyPI
matplotlib-vennPlots area-weighted two- and three-circle Venn…
permissive · top 15,000 on PyPI
adjustTextAutomatically repositions text labels on…
permissive · top 5,000 on PyPI
SciencePlotsProvides a collection of Matplotlib style…
permissive · top 15,000 on PyPI
facets-overviewGenerates summary statistics for dataset…
permissive · top 15,000 on PyPI
plotnineplotnine implements a grammar of graphics for…
permissive · top 5,000 on PyPI
mizaniMizani provides scales and transformations for…
permissive · top 5,000 on PyPI
ridgeplotridgeplot creates interactive ridgeline plots…
permissive · top 15,000 on PyPI
plotextRenders plots directly in the terminal using…
permissive · top 5,000 on PyPI
scikit-plotScikit-plot generates publication-ready…
permissive · top 15,000 on PyPI
dvc-renderRenders data in DVC plots format into Vega…
permissive · top 5,000 on PyPI