Claude-skill-registry bio-pathway-enrichment-visualization

Visualize enrichment results using enrichplot package functions. Use when creating publication-quality figures from clusterProfiler results. Covers dotplot, barplot, cnetplot, emapplot, gseaplot2, ridgeplot, and treeplot.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/enrichment-visualization" ~/.claude/skills/majiayu000-claude-skill-registry-bio-pathway-enrichment-visualization && rm -rf "$T"
manifest: skills/data/enrichment-visualization/SKILL.md
source content

Enrichment Visualization

Scope

This skill covers enrichplot package functions designed for clusterProfiler results:

  • dotplot()
    ,
    barplot()
    - Summary views
  • cnetplot()
    ,
    emapplot()
    ,
    treeplot()
    - Network/hierarchical views
  • gseaplot2()
    ,
    ridgeplot()
    - GSEA-specific
  • goplot()
    ,
    heatplot()
    ,
    upsetplot()
    - Specialized views

For custom ggplot2 enrichment dotplots (manual implementation), see

data-visualization/specialized-omics-plots
.

Setup

library(clusterProfiler)
library(enrichplot)
library(ggplot2)

# Assume ego (enrichGO result), kk (enrichKEGG result), or gse (GSEA result) exists

Dot Plot

Most common visualization - shows gene ratio, count, and significance.

dotplot(ego, showCategory = 20)

# Customize
dotplot(ego, showCategory = 15, font.size = 10, title = 'GO Enrichment') +
    scale_color_gradient(low = 'red', high = 'blue')

# Save
pdf('go_dotplot.pdf', width = 10, height = 8)
dotplot(ego, showCategory = 20)
dev.off()

Bar Plot

Shows enrichment count or gene ratio.

barplot(ego, showCategory = 20)

# Customize
barplot(ego, showCategory = 15, x = 'GeneRatio', color = 'p.adjust')

Gene-Concept Network (cnetplot)

Shows relationships between genes and enriched terms.

# Basic cnetplot
cnetplot(ego)

# With fold change colors
cnetplot(ego, foldChange = gene_list)

# Circular layout
cnetplot(ego, circular = TRUE, colorEdge = TRUE)

# Customize node size
cnetplot(ego, node_label = 'gene', cex_label_gene = 0.8)

Enrichment Map (emapplot)

Shows term-term relationships based on shared genes.

# Requires pairwise_termsim first
ego_pt <- pairwise_termsim(ego)
emapplot(ego_pt)

# Customize
emapplot(ego_pt, showCategory = 30, cex_label_category = 0.6)

# Cluster by similarity
emapplot(ego_pt, group_category = TRUE, group_legend = TRUE)

Tree Plot

Hierarchical clustering of enriched terms.

ego_pt <- pairwise_termsim(ego)
treeplot(ego_pt)

# Show more categories
treeplot(ego_pt, showCategory = 30)

Upset Plot

Show overlapping genes between terms.

upsetplot(ego)

# Limit to specific number of terms
upsetplot(ego, n = 10)

GSEA-Specific Plots

Running Score Plot (gseaplot2)

# Single gene set
gseaplot2(gse, geneSetID = 1, title = gse$Description[1])

# Multiple gene sets
gseaplot2(gse, geneSetID = 1:3)

# With subplots
gseaplot2(gse, geneSetID = 1, subplots = 1:3)

# By term ID
gseaplot2(gse, geneSetID = 'GO:0006955')

Ridge Plot

Distribution of fold changes in gene sets.

ridgeplot(gse)

# Top n gene sets
ridgeplot(gse, showCategory = 15)

# Order by NES
ridgeplot(gse, showCategory = 20) + theme(axis.text.y = element_text(size = 8))

GO-Specific Plot (goplot)

DAG structure of GO terms.

# Only for GO enrichment results
goplot(ego)

# Specific ontology
goplot(ego_bp)  # where ego_bp is enrichGO with ont='BP'

Heatplot

Gene-concept heatmap.

heatplot(ego, foldChange = gene_list)

# Customize
heatplot(ego, showCategory = 15, foldChange = gene_list)

Compare Multiple Analyses

# Compare clusters (from compareCluster)
dotplot(ck, showCategory = 10)

# Facet by cluster
dotplot(ck) + facet_grid(~Cluster)

Customize ggplot2 Elements

All enrichplot functions return ggplot2 objects.

p <- dotplot(ego, showCategory = 20)

# Add title
p + ggtitle('GO Biological Process Enrichment')

# Change theme
p + theme_minimal()

# Adjust text
p + theme(axis.text.y = element_text(size = 10))

# Change colors
p + scale_color_viridis_c()

Save Plots

# PDF (vector, publication quality)
pdf('enrichment_plots.pdf', width = 10, height = 8)
dotplot(ego, showCategory = 20)
dev.off()

# PNG (raster)
png('dotplot.png', width = 800, height = 600, res = 100)
dotplot(ego, showCategory = 20)
dev.off()

# Using ggsave
p <- dotplot(ego)
ggsave('dotplot.pdf', p, width = 10, height = 8)

Visualization Summary

FunctionBest ForInput Type
dotplotOverview of enrichmentORA, GSEA
barplotSimple counts/ratiosORA
cnetplotGene-term relationshipsORA
emapplotTerm clusteringORA
treeplotHierarchical groupingORA
upsetplotTerm overlapORA
gseaplot2Running enrichment scoreGSEA
ridgeplotFold change distributionGSEA
goplotGO DAG structureGO only
heatplotGene-concept matrixORA

Related Skills

  • go-enrichment - Generate GO enrichment results
  • kegg-pathways - Generate KEGG enrichment results
  • gsea - Generate GSEA results