Visualization VocabularyDataviz vocabulary
Diagram: volcano plot
Drawing: Adrien Taudière (CC0)
ggplot2 example: volcano plot
Adrien Taudière (CC0); R code ↓; data: Alon et al. 1999, via plsgenomics (Boulesteix et al. 2024) (GPL)
Wikidata image: volcano plot
BioArt (Public domain); Wikimedia Commons; item Q7940074

chart

volcano plot

Effect size against significance in high-throughput analysis.

graphique en volcan

Amplitude de l'effet contre significativité en analyse à haut débit.

Classification

  • chart
  • points and bubbles › scatterplots
  • correlation
  • the name evokes: nature

Channels

Attestation

Scientific literature

OpenAlex: 3 486 papers since 1979, 72% in the last five years; mostly in Medicine, Biochemistry, Genetics and Molecular Biology, Energy

Seminal references

R packages

R code of the ggplot2 example

library(ggplot2)
library(plsgenomics)

## 2 000 genes in 40 colon tumours and 22 normal tissues: log2 fold change of
## the means and Welch t-test, p-values adjusted by Benjamini-Hochberg.
data(Colon)
expression <- log2(Colon$X)
tumour <- Colon$Y == 2
genes <- data.frame(
  change = colMeans(expression[tumour, ]) - colMeans(expression[!tumour, ]),
  p = apply(expression, 2, \(g) t.test(g[tumour], g[!tumour])$p.value)
)
genes$q <- p.adjust(genes$p, method = "BH")
genes$group <- with(genes, ifelse(q < 0.05 & change > 1, "Higher in tumours",
                           ifelse(q < 0.05 & change < -1, "Lower in tumours", "Other")))
counts <- table(genes$group)

p <- ggplot(genes, aes(x = change, y = -log10(p), colour = group)) +
  geom_vline(xintercept = c(-1, 1), colour = "#a6a6a6", linewidth = 0.3, linetype = "dashed") +
  geom_point(size = 0.9, alpha = 0.6) +
  annotate("text", x = c(1.9, -1.9), y = 7.9, hjust = c(1, 0), vjust = 1, size = 3, colour = c("#9b2367", "#2e7891"),
           label = paste(counts[c("Higher in tumours", "Lower in tumours")],
                         c("genes higher\nin tumours", "genes lower\nin tumours"))) +
  scale_colour_manual(values = c(`Higher in tumours` = "#9b2367", `Lower in tumours` = "#2e7891",
                                 Other = "#a6a6a6")) +
  scale_x_continuous(labels = lex_number) +
  scale_y_continuous(labels = lex_number, limits = c(0, 8), expand = expansion(mult = c(0.02, 0))) +
  labs(title = "More genes rise than fall in colon tumours",
       subtitle = "Colon tissues; coloured: twofold change and 5% false discovery rate",
       x = "Log2 fold change, tumour / normal", y = "−log10 p-value",
       caption = "Data: Alon et al. 1999, via the plsgenomics R package") +
  theme_lex_viz(grid = "", arrows = "y") +
  theme(legend.position = "none")

Sources (2)

Cite this entry

Stable addresshttps://dataviz.adrientaudiere.com/en/term/volcano-plot.html

ReferenceTaudière Adrien. 2026. volcano plot. In Visualization Vocabulary, version 1.0.0. IdEst. https://dataviz.adrientaudiere.com/en/term/volcano-plot.html

BibTeX
@incollection{taudiere2026-volcano-plot,
  author    = {Taudière, Adrien},
  title     = {volcano plot},
  booktitle = {Visualization Vocabulary},
  year      = {2026},
  version   = {1.0.0},
  publisher = {IdEst},
  url       = {https://dataviz.adrientaudiere.com/en/term/volcano-plot.html},
  note      = {CC0 1.0}
}

Page created on 2026-10-13. Text last changed on 2026-11-02. Images last changed on 2026-11-02. Numbers computed on 2026-10-22.