Implementations of UpSet
The basic idea of UpSet has been implemented many times. Here we list the available implementations and describe their main benefits and drawbacks.
We distinguish between three-types of implementations:
-
Interactive Tools that are meant for uploading data and customizing the plot dynamically, without programming.
-
Plotting Libraries that are designed to be customized in a programming language, e.g., in R or Python and can be used as part of a computational notebook, or can be integrated in a larger system. Some of these tools also have interactive wrappers, using e.g., R-Shiny so that they can be used without programming.
-
Sample Implementations demonstrate how to implement an UpSet plot in a framework (e.g., Tableau) but are not libraries and hence typically don’t have data loading capabilities and are tested only with a single dataset. It’s usually possible to copy a template and customize it to work with your own data.
Interactive Tools
The original UpSet
The original UpSet, developed to go with the original paper, as an interactive web application. This version supports most advanced features. It lacks simple data upload functionality, so that it either has to be hosted locally, or pointed to a globally visible data file. Unfortunately, the original UpSet is no longer actively maintained.
Website Source Code Documentation Publication
License: MIT License
Language: JavaScript
Author(s): Alexander Lex, Nils Gehlenborg, Hendrik Strobelt, Romain Vuillemot, and Hanspeter Pfister
UpSet 2
A re-implementation of the original UpSet. Key new features are undo/redo functionality, embedding, and being able to download sets of items in a csv file.
Website Source Code Publication
License: MIT
Language: TypeScript
Author(s): Kiran Gadhave, Alexander Lex
Plotting Libraries
Web Libraries
UpSet.js
UpSet.js is a JavaScript re-implementation of UpSetR. The core library is written in JavaScript using React. In addition, UpSet.js also supports classical Venn diagrams between two and five sets. A demo application highlights library features along with import and export features. Adapters on top of the library exists for R/RShiny/RMarkdown, Python Jupyterlab, PowerBI, Tableau, and Observable HQ. UpSet.js is released under the GNU AGPLv3 version to be used for private and academic purposes. In case of a commercial use, please get in touch at upsetjs@sgratzl.com regarding a commercial license.
Website Source Code Documentation
License: GNU AGPLv3 (private, academic) + Commercial License Available
Language: JavaScript, Python, R, PowerBI, Tableau, ObservableHQ
Author(s): Samuel Gratzl
R Libraries
The UpSet R Version
Many scientists use R as part of their analysis workflow. The goal of the R version of UpSet is to allow those analysts to easily produce high-resolution figures of set intersections within their workflow that can be used in publications. This version was developed by members of the original team. UpSetR has many of the features of our interactive UpSet plots, specifically it comes with various ways to sort and filter intersections and can plot attributes about the elements in the various sets. The layout is slightly adapted - intersections are plotted horizontally instead of vertically, which is beneficial for the typical aspect ratios found in papers. UpSetR does not include the aggregation features of UpSet, does not provide summary statistics about the intersections in line with the set cardinality, and does not provide access to the individual items.
To learn more about UpSetR visit the source code repository which includes documentation on usage, or check out the released versions on CRAN, or try the UpSetR shiny app.
Website Source Code Publication
Author(s): Jake Conway, Alexander Lex, Nils Gehlenborg
Complex Upset
An advanced R version of UpSet
UpSet in ComplexHeatmap
An implementation in the ComplexHeatmap package for R.
Website Source Code Documentation Publication
License: MIT License
Language: R
Author(s): Zuguang Gu
Python Libraries
pyUpSet
pyUpSet has a similar use case to UpSetR but is developed for Python.
UpSetPlot
An alternative implementation in Python that tries to provide a simple interface backed by an extensible, object-oriented design. It supports several input formats, horizontal and vertical orientations, and the ability to add Seaborn catplots for attribute visualization.
License: BSD 3-clause
Language: Python
Author(s): Joel Nothman
Sample Implementations
UpSet Altair
This is an implementation of an UpSet Plot in Altair. Based on the interactive features in Altair, this UpSet plot allows filtering sets of interest using color legends or seeing detailed information with tooltips. It also supports various customization options, such as sorting exclusive sets in different ways and changing colors and sizes of individual visual components. Users can create this plot on Jupyter Notebook or embed the plot on a web page after conversion to a Vega visualization.
License: MIT License
Language: Python
Author(s): Sehi L’Yi, Nils Gehlenborg
UpSet Tableau
This isn’t technically an “implementation” in Tableau, but an instruction on how to make an UpSet Plot plus a template to help you get started.
UpSet Observable
A simple from-scratch implementation in JavaScript on Observable. Supports basic customization.
Author(s): Torsten Sprenger