✦ UpSet Plot Generator

UpSet Plot Generator when a Venn diagram has too many sets

Upload gene lists, variant calls or any set membership table and get a publication-ready UpSet plot of every intersection, sorted and counted. No UpSetR or upsetplot code.

Your data

Free account · daily credits included · no credit card

Preview

Example result · generated by FigCanvas from this sample data and prompt

UpSet plot of differentially expressed genes shared across four timepoints, sorted by intersection size
Free daily creditsEditable SVG exportPublication-ready output
Fig. 01 — Examples

UpSet plot examples

Both figures were generated by FigCanvas from the sample datasets above (simulated gene and variant lists) with the prompts shown. With five callers a Venn diagram would need 31 regions; the UpSet plot lists the intersections that matter, largest first: 942 variants are called by all five.

UpSet plot of differentially expressed genes shared across four timepoints, sorted by intersection size
Fig. 1a4 sets
UpSet plot of variant calls shared by GATK, DeepVariant, FreeBayes, Strelka2 and Platypus
Fig. 1b5 sets
§ Reading the plot

What an UpSet plot shows

An UpSet plot shows how several sets overlap. Instead of drawing overlapping circles, it lists each intersection as a column: a dot matrix below says which sets take part, and a bar above says how many items are in it. It was introduced by Lex and colleagues in 2014 and has become the standard replacement for Venn diagrams with more than three or four sets.

How to read an UpSet plot

Each column is one intersection. Filled dots joined by a line show which sets it combines; a single dot is the items unique to that set. The bar above the column is the intersection size.

The horizontal bars on the left are the total size of each set. Columns are usually sorted by size, so the biggest overlaps come first.

Exclusive intersections

By default an intersection column counts items in exactly those sets and no others. A gene in sets A, B and C appears only in the A∩B∩C column, not in A∩B. This is why the bars add up to the number of distinct items, which a Venn diagram cannot show as clearly.

UpSet plot vs Venn diagram

Venn diagrams work for two or three sets. With four sets the shapes become ellipses that are hard to read, and with n sets there are 2ⁿ − 1 possible regions: 15 for four, 31 for five, 63 for six.

An UpSet plot scales to 20 or more sets because it only shows the non-empty intersections, sorted and optionally filtered by a minimum size.

Typical uses in research

Differentially expressed genes shared across conditions or timepoints, variants called by several pipelines, proteins detected in several samples, species shared across sites, or patients with combinations of comorbidities.

Fig. 03 — Data format

How to lay out data for an UpSet plot

Two layouts are accepted. A membership table has one row per item and one 0/1 column per set. A list table has one column per set, each holding that set’s item names; it is converted to a membership table for you.

item ID
Gene symbol, variant ID, protein accession or any unique item name. Optional for a membership table.
one column per set
1 if the item belongs to the set, 0 if not (TRUE/FALSE also works). In list layout, the column instead holds the item names of that set.
geneDay_1Day_3Day_7Day_14
GENE00010010
GENE00020001
GENE00030011
GENE00040001

Sets of very different sizes? Ask to show intersection sizes as a percentage of each set, or to hide intersections below a minimum count.

§ MethodFour steps

How to make an UpSet plot with FigCanvas

Go from set lists to a publication-ready figure in four steps.

Step 01

Upload sets

Upload a 0/1 membership table or one list per set in CSV or Excel, or load a sample dataset.

Step 02

Choose sorting and filters

FigCanvas detects the sets and suggests a layout: sort by intersection size or degree, minimum intersection size and which sets to include.

Step 03

Generate the figure

Intersections are counted in Python from your data and drawn with the intersection bars, dot matrix and set size bars aligned.

Step 04

Refine and export

Highlight an intersection, rename sets or change colors in plain language, then export SVG, PDF or PNG.

Fig. 04 — Why FigCanvas

Why researchers make their figures with FigCanvas

01

No UpSetR or upsetplot setup

Skip installing R packages or wrangling a pandas MultiIndex. Upload the lists you already have and get the plot.

02

Counts computed from your data

Every bar is counted from the uploaded membership, and intersections are exclusive by default, so the numbers add up.

03

Highlight the intersection that matters

Color the core set shared by all conditions, or the items unique to one, to point readers at the result.

04

Editable vector export

Export SVG or PDF and arrange the UpSet plot with other panels in Illustrator, Inkscape or on the FigCanvas canvas.

§ Q & AUpdated Oct 30, 2026

UpSet plot FAQs

An UpSet plot visualises the intersections of several sets. A dot matrix shows which sets form each intersection and a bar chart above it shows the intersection size; set sizes are shown as bars beside the matrix. It was introduced by Alexander Lex and colleagues in IEEE Transactions on Visualization and Computer Graphics in 2014 and replaces Venn diagrams when there are more than three or four sets.

Read it column by column. The filled, connected dots in a column tell you which sets the intersection includes, and the bar above it tells you how many items belong to exactly those sets. The left-hand bars are total set sizes.

Use a Venn diagram for two or three sets and an UpSet plot from four sets on. A Venn diagram of n sets has 2ⁿ − 1 regions: 3 for two sets, 7 for three, 15 for four, 31 for five and 63 for six, and from four sets on the shapes can no longer show every region clearly. An UpSet plot shows each non-empty intersection as a sorted bar instead.

A CSV or Excel membership table (one row per item, one 0/1 column per set) or a list table (one column per set holding item names). Gene lists copied from DESeq2 or limma results work directly.

Yes. The FigCanvas UpSet plot generator computes the intersections and draws the plot from an uploaded CSV or Excel file, so no UpSetR, ComplexHeatmap or Python code is needed.

In R, call upset(fromList(my_sets)) from the UpSetR package, or UpSet(make_comb_mat(my_sets)) from ComplexHeatmap for more control. In Python, build the data with upsetplot.from_contents(my_sets) and draw it with UpSet(data, subset_size="count").plot(). Without code, upload the lists to the FigCanvas UpSet plot generator.

Each set is one row, so an UpSet plot stays readable up to about 20 to 30 sets. The number of intersection columns grows quickly, so show only intersections above a minimum size or the largest 20 to 40.

Filter each comparison to its significant genes, for example adjusted P < 0.05 and |log2 fold change| > 1, and keep one list of gene IDs per comparison. Put each list in its own column of a CSV, or build a 0/1 table with one row per gene, and upload it to the FigCanvas UpSet plot generator. Each comparison becomes one set.

You can sign up for free and make figures with the free daily credits. Free exports are watermarked PNG; Pro and Credit Pack users export editable SVG and 300 DPI PDF, ready for journal submission.

§ Start

Make an UpSet plot from your sets

Upload gene lists or a membership table and get every intersection counted, sorted and plotted, ready for your figure.

Free daily creditsEditable SVG exportPublication-ready output
Try the UpSet plot generator— it's free