Create interactive UpSet plots using Altair
Project description
Altair UpSet
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.
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
- Clone the repository:
git clone https://github.com/edmundmiller/altair-upset.git
cd altair-upset
- 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]"
- Install pre-commit hooks:
pre-commit install
- 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.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - 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:
- Turning it into a package
- Snapshoting the functionality with Altair 4
- Porting to Altair 5
- 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
Built Distribution
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
Algorithm | Hash digest | |
---|---|---|
SHA256 | ba4f007318f71ae82c1bc8d0ef23578e59387065b78c961e00382397e2db98df |
|
MD5 | 1d92b60604dd5b5bbd757a1b00c2bf9c |
|
BLAKE2b-256 | b7dc1191346402271cc4c933aa3dc5e785a7b074191d25c94add7f540f1e9037 |
File details
Details for the file altair_upset-0.4.0-py3-none-any.whl
.
File metadata
- Download URL: altair_upset-0.4.0-py3-none-any.whl
- Upload date:
- Size: 11.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.5.13
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f8e2f5730c18a7125ab4bdd1e51f2ba30b7652f0afe5e68eb7cc4222c4aca9b2 |
|
MD5 | 85d5af85c56352e4ebcbce8a63487b95 |
|
BLAKE2b-256 | 0fb778de25d6319825fc74a066bc425f259877bf4c26d535a7989780e39cb0b9 |