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)

Classification

Channels

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-only/term/fan-chart.html

ReferenceTaudière Adrien. 2026. fan chart. In Visualization Vocabulary, version 1.0.0. IdEst. https://dataviz.adrientaudiere.com/en-only/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-only/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.