skills/gptomics/bioskills/bio-pathway-enrichment-visualization

bio-pathway-enrichment-visualization

SKILL.md

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

Function Best For Input Type
dotplot Overview of enrichment ORA, GSEA
barplot Simple counts/ratios ORA
cnetplot Gene-term relationships ORA
emapplot Term clustering ORA
treeplot Hierarchical grouping ORA
upsetplot Term overlap ORA
gseaplot2 Running enrichment score GSEA
ridgeplot Fold change distribution GSEA
goplot GO DAG structure GO only
heatplot Gene-concept matrix ORA

Related Skills

  • go-enrichment - Generate GO enrichment results
  • kegg-pathways - Generate KEGG enrichment results
  • gsea - Generate GSEA results
Weekly Installs
3
Installed on
windsurf2
trae2
opencode2
codex2
claude-code2
antigravity2