Skip to main content

Create interactive UpSet plots using Altair

Project description

Altair UpSet

PyPI version Python Version Documentation Status License: MIT

Create beautiful and interactive UpSet plots using Altair. UpSet plots are a powerful alternative to Venn diagrams for visualizing set intersections, especially when dealing with many sets.

Example UpSet Plot

Features

  • 🎨 Beautiful, interactive visualizations powered by Altair/Vega-Lite
  • 🔄 Dynamic sorting by frequency or degree
  • 🎯 Interactive highlighting and filtering
  • 📱 Responsive design that works in Jupyter notebooks and web browsers
  • 🎨 Customizable colors, sizes, and themes
  • 🔍 Tooltips with detailed intersection information
  • 🚀 Support for both Pandas and Polars DataFrames

Installation

pip install altair-upset

Or with conda:

conda install -c conda-forge altair-upset

Quick Start

import altair_upset as au
import pandas as pd
# Or use Polars
import polars as pl

# Create sample data with Pandas
data = pd.DataFrame({
    'set1': [1, 0, 1, 1],
    'set2': [1, 1, 0, 1],
    'set3': [0, 1, 1, 0]
})

# Create UpSet plot
chart = au.UpSetAltair(
    data=data,  # or data_pl.to_pandas()
    sets=["set1", "set2", "set3"],
    title="Sample UpSet Plot"
)

# Display the chart
chart.show()

Example Gallery

The package includes a comprehensive gallery of examples demonstrating various features and use cases:

Basic Examples

  • Basic UpSet Plot: Simple visualization of streaming service subscriptions
  • Sorting and Filtering: Different ways to organize and present set intersections
  • Custom Styling: Examples of color schemes, themes, and layout customization

Real-World Examples

  • Gene Set Analysis: Visualizing intersections of biological pathways
  • Survey Response Analysis: Understanding multiple-choice survey patterns
  • Social Media Usage: Exploring platform usage overlaps with demographics
  • Movie Genre Analysis: Investigating genre combinations in film datasets

Advanced Features

  • Interactive Selection: Enhanced interaction and filtering capabilities
  • Custom Tooltips: Rich tooltips with additional information
  • Responsive Design: Adapting to different display sizes
  • Theme Examples: Using built-in and custom themes

To run the examples:

git clone https://github.com/edmundmiller/altair-upset.git
cd altair-upset
pip install -e ".[examples]"
python examples/basic_upset.py

Each example includes:

  • Sample data generation or loading
  • Plot creation with different features
  • Analysis and statistics
  • Detailed comments explaining each step

Advanced Usage

Sorting and Filtering

# Sort by degree (number of sets in intersection)
chart = au.UpSetAltair(
    data=data,
    sets=["set1", "set2", "set3"],
    sort_by="degree",
    sort_order="descending"
)

Customizing Appearance

# Custom colors and sizes
chart = au.UpSetAltair(
    data=data,
    sets=["set1", "set2", "set3"],
    color_range=["#1f77b4", "#ff7f0e", "#2ca02c"],
    highlight_color="#d62728",
    width=800,
    height=500
)

Using Abbreviations

# Use abbreviations for long set names
chart = au.UpSetAltair(
    data=data,
    sets=["Very Long Set Name 1", "Very Long Set Name 2", "Very Long Set Name 3"],
    abbre=["S1", "S2", "S3"]
)

Development

  1. Clone the repository:
git clone https://github.com/edmundmiller/altair-upset.git
cd altair-upset
  1. Create a virtual environment and install dependencies:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
pip install -e ".[dev,test,docs]"
  1. Install pre-commit hooks:
pre-commit install
  1. Run tests:
pytest

Contributing

Contributions are welcome! Please feel free to submit a Pull Request. For major changes, please open an issue first to discuss what you would like to change.

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Credits

This package is based on the UpSet: Visualization of Intersecting Sets technique. If you use an UpSet figure in a publication, please cite the original paper:

Alexander Lex, Nils Gehlenborg, Hendrik Strobelt, Romain Vuillemot, Hanspeter Pfister, UpSet: Visualization of Intersecting Sets, IEEE Transactions on Visualization and Computer Graphics (InfoVis '14), vol. 20, no. 12, pp. 1983–1992, 2014. doi: 10.1109/TVCG.2014.2346248

The original function was from hms-dbmi/upset-altair-notebook. The following updates from that are:

  1. Turning it into a package
  2. Snapshoting the functionality with Altair 4
  3. Porting to Altair 5
  4. Adding additional advanced features

Project details


Download files

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

Source Distribution

altair_upset-0.4.0.tar.gz (3.9 MB view details)

Uploaded Source

Built Distribution

altair_upset-0.4.0-py3-none-any.whl (11.1 kB view details)

Uploaded Python 3

File details

Details for the file altair_upset-0.4.0.tar.gz.

File metadata

  • Download URL: altair_upset-0.4.0.tar.gz
  • Upload date:
  • Size: 3.9 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.5.13

File hashes

Hashes for altair_upset-0.4.0.tar.gz
Algorithm Hash digest
SHA256 ba4f007318f71ae82c1bc8d0ef23578e59387065b78c961e00382397e2db98df
MD5 1d92b60604dd5b5bbd757a1b00c2bf9c
BLAKE2b-256 b7dc1191346402271cc4c933aa3dc5e785a7b074191d25c94add7f540f1e9037

See more details on using hashes here.

File details

Details for the file altair_upset-0.4.0-py3-none-any.whl.

File metadata

File hashes

Hashes for altair_upset-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f8e2f5730c18a7125ab4bdd1e51f2ba30b7652f0afe5e68eb7cc4222c4aca9b2
MD5 85d5af85c56352e4ebcbce8a63487b95
BLAKE2b-256 0fb778de25d6319825fc74a066bc425f259877bf4c26d535a7989780e39cb0b9

See more details on using hashes here.

Supported by

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