Agent skill · Data & Analytics

bio-data-visualization-upset-plots

Build UpSet plots to visualize set intersections beyond 4 sets (where Venn fails) using ComplexUpset (modern, ggplot2-grammar) or the unmaintained UpSetR, with explicit cardinality vs degree sorting, attribute panels, and query highlighting. Use when comparing overlap across many gene sets, peak sets, variant lists, or any set membership matrix where Venn diagrams become illegible.

BioTender-maxgithub.com/BioTender-maxGitHub ↗
claude-codeships scriptsNOASSERTION
Install
npx skills add BioTender-max/awesome-bio-agent-skills --skill upset-plots --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 4
SKILL.md size: 11 KB
Bundled scripts: yes
Path: skills/bioskills/upset-plots/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 135
Language: Python

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

## Version Compatibility Reference examples tested with: ComplexUpset 1.3+ (R, Krassowski), UpSetR 1.4.0 (last 2019 release; effectively unmaintained), upsetplot 0.9+ (Python). Before using code patterns, verify installed versions match. If versions differ: - R: `packageVersion('<pkg>')` then `?function_name` - Python: `pip show <package>` then `help(module.function)` If code throws ImportError, AttributeError, or TypeError, introspect the installed package and adapt the example to match the actual API rather than retrying. # UpSet Plots **"Show set intersections for 4+ sets"** -> Replace Venn diagrams (which become illegible past 4 sets) with UpSet (Lex 2014 *IEEE TVCG* 20:1983). The display: a matrix of dots indicating which sets participate in each intersection, with a vertical bar above each column showing intersection size and horizontal bars on the left showing per-set total size. Sort by intersection size (cardinality) for "biggest overlaps first" or by degree (number of sets) for grouped layout. - R: `ComplexUpset::upset` (Krassowski; ggplot2-native, **recommended**), `UpSetR::upset` (Conway 2017; legacy, unmaintained) - Python: `upsetplot.UpSet` ## The Single Most Importan

What's inside
Steps it walks through
  1. Version Compatibility
  2. The Single Most Important Modern Insight -- UpSetR Is Effectively Unmaintained
  3. ComplexUpset (Modern Default)
  4. Sorting -- Cardinality vs Degree
  5. Pre-Specified Queries / Highlighting
  6. Attribute Panels (ComplexUpset Strength)
  7. upsetplot (Python)
  8. UpSetR (Legacy — Use Only for Reproducibility)
  9. Per-Method Failure Modes
  10. Using UpSetR for new work in 2026
  11. ggplot2 4.0 broke ComplexUpset
  12. Too many sets makes UpSet unreadable
  13. Single-set "intersections" obscure cross-set overlap story
  14. Element duplicate across sets in fromList
Ships with 3 files
  • examples/upset_gene_sets.R
  • examples/upset_python.py
  • usage-guide.md
More from awesome-bio-agent-skills
All skills →
About this skill
What does the bio-data-visualization-upset-plots skill do?

Build UpSet plots to visualize set intersections beyond 4 sets (where Venn fails) using ComplexUpset (modern, ggplot2-grammar) or the unmaintained UpSetR, with explicit cardinality vs degree sorting, attribute panels, and query highlighting. Use when comparing overlap across many gene sets, peak sets, variant lists, or any set membership matrix where Venn diagrams become illegible.

How do I install it?

Run `npx skills add BioTender-max/awesome-bio-agent-skills --skill upset-plots --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From BioTender-max/awesome-bio-agent-skills, a repository with 135 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going