--- name: bio-pathway-enrichment-visualization description: 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. tool_type: r primary_tool: enrichplot --- # 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 ```r 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. ```r 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. ```r 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. ```r # 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. ```r # 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. ```r ego_pt <- pairwise_termsim(ego) treeplot(ego_pt) # Show more categories treeplot(ego_pt, showCategory = 30) ``` ## Upset Plot Show overlapping genes between terms. ```r upsetplot(ego) # Limit to specific number of terms upsetplot(ego, n = 10) ``` ## GSEA-Specific Plots ### Running Score Plot (gseaplot2) ```r # 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. ```r 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. ```r # Only for GO enrichment results goplot(ego) # Specific ontology goplot(ego_bp) # where ego_bp is enrichGO with ont='BP' ``` ## Heatplot Gene-concept heatmap. ```r heatplot(ego, foldChange = gene_list) # Customize heatplot(ego, showCategory = 15, foldChange = gene_list) ``` ## Compare Multiple Analyses ```r # 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. ```r 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 ```r # 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