Visualization VocabularyDataviz vocabulary
Diagram: fan chart
Drawing: Adrien Taudière (CC0)
ggplot2 example: fan chart
Adrien Taudière (CC0); R code ↓; data: Arbuthnot 1710, via HistData (Friendly et al. 2026) (GPL)

chart

fan chart

Forecast surrounded by widening uncertainty bands.

graphique en éventail

Projection future entourée de plages d'incertitude élargissantes.

Classification

Channels

Attestation

  • French term: Common usage, not attested by a source

Scientific literature

OpenAlex: 294 papers since 1999, 22% in the last five years; mostly in Economics, Econometrics and Finance, Decision Sciences, Physics and Astronomy

Seminal references

R packages

R code of the ggplot2 example

library(ggplot2)
library(dplyr)
library(HistData)
library(forecast)

## Yearly christenings in London, 1629-1710, projected 20 years ahead.
## auto.arima settles on a random walk: a flat projection, whose
## uncertainty grows with the square root of the horizon.
christenings <- ts(Arbuthnot$Total, start = 1629)
f <- forecast(auto.arima(christenings), h = 20, level = c(50, 80, 95))
bands <- bind_rows(lapply(seq_along(f$level), function(i) {
  tibble(year = as.numeric(time(f$mean)), low = f$lower[, i], high = f$upper[, i],
         level = paste0(f$level[i], "%"))
})) |>
  mutate(level = factor(level, levels = c("95%", "80%", "50%"), ordered = TRUE))
observed <- tibble(year = Arbuthnot$Year, total = Arbuthnot$Total)
projected <- tibble(year = c(1710, as.numeric(time(f$mean))),
                    total = c(tail(Arbuthnot$Total, 1), as.numeric(f$mean)))

p <- ggplot() +
  geom_ribbon(data = bands, aes(x = year, ymin = low, ymax = high, fill = level)) +
  geom_line(data = observed, aes(x = year, y = total), colour = "#535353", linewidth = 0.5) +
  geom_line(data = projected, aes(x = year, y = total), colour = "white", linewidth = 0.5,
            linetype = "dashed") +
  scale_fill_ordinal(type = idest_seq[c(2, 4, 6)], name = "Projection interval") +
  scale_y_continuous(labels = lex_number, breaks = lex_break_breaks, expand = lex_break_expand) +
  labs(title = "By 1730, yearly christenings could number 7 to 23 thousand\n(95% interval)",
       subtitle = "Christenings in London, 1629–1710, and a random-walk projection to 1730",
       x = NULL, y = "Christenings (thousands)",
       caption = "Data: Arbuthnot 1710, via the HistData R package") +
  theme_lex_viz(grid = "y", arrows = "y", break_not_zero = "y") +
  theme(legend.position = "right")

Sources (9)

12 occurrences in the corpus; indexed by 2 books

Cite this entry

Stable addresshttps://dataviz.adrientaudiere.com/en/term/fan-chart.html

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

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

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