Volcano plots display statistical significance (-log10 p-value) vs effect size (log2 fold change) for differential expression or association results, with customizable thresholds and gene labels.
# R
install.packages(c('ggplot2', 'ggrepel', 'dplyr'))
BiocManager::install('EnhancedVolcano')# Python
pip install matplotlib seaborn adjustText pandas numpy statsmodelsTell your AI agent:
- "Create a volcano plot from my DE results"
- "Label the top 20 significant genes on my volcano plot"
- "Highlight specific genes of interest on the volcano"
- "Adjust thresholds to FC > 1.5 and padj < 0.01"
"Create a volcano plot from my DESeq2 results"
"Make a volcano showing upregulated genes in red, downregulated in blue"
"Label the top 10 most significant genes"
"Highlight and label TP53, BRCA1, and MYC on the volcano"
"Only label genes with FC > 2 and padj < 0.001"
"Change the fold change threshold to 1.5"
"Add dashed lines at the significance thresholds"
"Use a colorblind-friendly palette for the volcano"
- Load DE results and identify required columns (log2FC, pvalue/padj, gene)
- Calculate significance categories based on thresholds
- Create base volcano plot with appropriate colors
- Add threshold indicator lines
- Label requested genes using text repulsion
- Export in requested format and resolution
| Tool | Language | Best For |
|---|---|---|
| ggplot2 + ggrepel | R | Full customization, publication figures |
| EnhancedVolcano | R | Quick, feature-rich volcanos |
| matplotlib + adjustText | Python | Python workflows |
- Use padj (adjusted p-value) for coloring to account for multiple testing
- ggrepel/adjustText prevent label overlaps automatically
- Limit labels to top 15-25 genes for readability
- FC threshold 1 = 2-fold change; 0.58 = 1.5-fold change
- Consider asymmetric thresholds if biology suggests one direction
- Box labels (EnhancedVolcano) improve readability with many labels