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