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