Volcano plot maker for differential expression
Paste a differential-expression table (gene, log2 fold change, p-value, and the adjusted p-value if you have it) from DESeq2, edgeR, limma, proteomics or any t-tests. Set the fold-change and p or FDR thresholds, and the tool draws a volcano plot of log2 fold change against −log10 p, colours up-regulated, down-regulated and non-significant genes, labels the top genes and counts the hits. If you only have raw p-values it computes Benjamini–Hochberg adjusted p-values. Download the plot as SVG or 300 dpi PNG and the significant genes as CSV.
- What it does
- Draws a volcano plot (log2 fold change vs −log10 p) from a pasted gene table, adjusts p-values by Benjamini–Hochberg if needed, colours and counts up- and down-regulated genes and labels the top hits.
- Formula
- Example
- In the built-in table of 1,000 genes, FDR < 0.05 and |log2FC| ≥ 1 give 25 up and 16 down; the top gene has p = 3.42 × 10⁻¹² and p_adj = 3.42 × 10⁻¹² × 1000 / 1 = 3.42 × 10⁻⁹.
Last updated
Loading Volcano plot maker…
At a glance
| Input | Gene, log2 fold change, p-value and optionally adjusted p (DESeq2, edgeR, limma headers recognised) |
|---|---|
| Axes | |
| Significance | |
| Adjustment | Benjamini–Hochberg (1995), the same as R’s p.adjust("BH") and DESeq2’s padj |
| Labels | Top N genes by p-value, de-overlapped |
| Export | SVG and 300 dpi PNG plot; CSV of significant genes |
| Runs in | Your web browser; nothing is uploaded |
| Price | Free, no account needed |
What it does
How to use the volcano plot maker
- Paste the results tableCopy the gene, log2 fold change and p-value columns (and padj / FDR if present) with their header row from Excel or R.
- Set the thresholdsChoose the fold-change cut-off (1 = 2-fold) and the significance level, on the adjusted p-value (FDR, recommended) or the raw p-value.
- Label and exportChoose how many top genes to label, adjust colours and title, then download the plot as SVG or PNG and the significant genes as CSV.
How it works
A volcano plot shows every gene (or protein, metabolite) at
Classification. A gene is up if
Benjamini–Hochberg adjustment. With p.adjust(method = "BH") and the padj column of DESeq2. If your table already has an adjusted column (padj, FDR, q-value, adj.P.Val), the tool uses it.
By hand. Five p-values 0.005, 0.01, 0.03, 0.04, 0.5 (
p-values reported as 0 (below the precision of the software) are drawn at the smallest non-zero p in the data divided by 10, so they stay on the plot.
Sources: Benjamini Y, Hochberg Y. Controlling the false discovery rate: a practical and powerful approach to multiple testing. J R Stat Soc B 1995;57:289–300, doi:10.1111/j.2517-6161.1995.tb02031.x. Li W. Volcano plots in analyzing differential expressions with mRNA microarrays. J Bioinform Comput Biol 2012;10:1231003, doi:10.1142/S0219720012310038.
Worked example: 1,000 genes with raw p-values
The built-in table is synthetic: 1,000 genes with a log₂ fold change and a raw p-value, of which 40 were simulated as changed (24 up, including hypoxia-response genes such as VEGFA and CA9, and 16 down, proliferation genes such as MKI67). There is no adjusted column, so the tool computes Benjamini–Hochberg adjusted p-values.
- Adjustment. The smallest p-value, DDIT4 (log₂FC 2.21,
), has rank 1, so . VEGFA (log₂FC 3.06, ) ranks 5th: . - Thresholds. With
and (2-fold), the plot shows 25 up and 16 down. 103 genes pass on their own; the largest raw p among them is 0.00469, which is where the horizontal line is drawn ( ). 230 genes have a raw , which shows why the fold-change cut-off and the adjustment matter. - One false positive. Of the 25 up genes, 24 are the simulated changes and one (GENE0386, log₂FC 1.01,
) is a null gene that crossed both lines by chance: 1 of 41 calls, within the 5% false discovery rate. - Looser threshold. At 1.5-fold (
) the counts rise to 35 up and 27 down; at and 2-fold they fall to 24 up and 15 down.
| Fold change | p-value | ||
|---|---|---|---|
| 1.5× up / down | ±0.585 | 0.05 | 1.30 |
| 2× up / down | ±1 | 0.01 | 2 |
| 4× up / down | ±2 | 0.001 | 3 |
| 8× up / down | ±3 | 6 |
| Software | Fold change | p-value | Adjusted p |
|---|---|---|---|
| DESeq2 | log2FoldChange | pvalue | padj |
| edgeR | logFC | PValue | FDR |
| limma | logFC | P.Value | adj.P.Val |
Frequently asked questions
How do I make a volcano plot from my data?
Paste the gene, log2 fold change and p-value columns (with headers) into the box, set the fold-change and FDR thresholds, and the plot appears. Download it as SVG or a 300 dpi PNG; the significant genes download as CSV.
How do I make a volcano plot in Excel?
Excel can do it as a scatter chart of log2FC against =-LOG10(p), with colours set by hand for each group of points. This tool does the same from a pasted Excel range, adds the FDR adjustment, labels and counts, and exports a figure.
Should I use the p-value or the adjusted p-value (FDR)?
Use the adjusted p-value for genome-wide data: with 20,000 genes, about 1,000 would have p < 0.05 by chance alone. The y axis still shows the raw p-value, as in DESeq2 and EnhancedVolcano; only the colouring follows the FDR.
What log2 fold change cut-off should I use?
A log2 fold change of 1 (2-fold) is the most common; 0.585 (1.5-fold) is also used, especially for proteomics. The cut-off is a convention, so state it in the figure legend together with the FDR threshold.
How is the Benjamini–Hochberg FDR calculated?
Sort the m p-values from smallest to largest, multiply each by m and divide by its rank, then go up the list from the bottom keeping the running minimum, and cap at 1. A gene with an adjusted p below 0.05 is significant at 5% FDR.
What does −log10 p mean on the y axis?
It turns small p-values into large numbers:
Why do some genes have p = 0?
DESeq2, edgeR and R report p-values below about
Can I use it for proteomics or metabolomics?
Yes. Any table of features with a log2 fold change and a p-value works: proteins, metabolites, lipids or phosphosites.
Link to this tool
Using it in a protocol, lab wiki or course page? Copy a link or citation.
<a href="https://www.labcanvas.com/tools/volcano-plot-maker">Volcano plot maker</a> (LabCanvas)LabCanvas. Volcano plot maker [online tool]. https://www.labcanvas.com/tools/volcano-plot-makerBuild the whole figure
Put the volcano plot next to heatmaps, bar charts and blots in the LabCanvas Graphs app, with journal sizes and fonts.
Open the Graphs app