Visualization VocabularyDataviz vocabulary
Diagram: bullet graph
Drawing: Adrien Taudière (CC0)
ggplot2 example: bullet graph
Adrien Taudière (CC0); R code ↓; data: gapminder (Bryan 2025) (CC BY 4.0)

Classification

Channels

Scientific literature

OpenAlex: 40 papers since 2000, 22% in the last five years; mostly in Computer Science, Mathematics, Business, Management and Accounting; Wikidata

Seminal references

R packages

R code of the ggplot2 example

library(ggplot2)
library(dplyr)
library(gapminder)

## One bullet per continent: the 2007 median life expectancy (bar), the 1952
## median (tick) and, behind them, the spread of its countries in 2007: full
## range (light band) and interquartile range (dark band).
bullets <- gapminder |>
  filter(year %in% c(1952, 2007)) |>
  group_by(continent) |>
  summarise(median_2007 = median(lifeExp[year == 2007]),
            median_1952 = median(lifeExp[year == 1952]),
            min = min(lifeExp[year == 2007]), max = max(lifeExp[year == 2007]),
            q1 = quantile(lifeExp[year == 2007], 0.25), q3 = quantile(lifeExp[year == 2007], 0.75)) |>
  mutate(continent = factor(continent, levels = rev(levels(continent))), y = as.numeric(continent))

p <- ggplot(bullets) +
  geom_rect(aes(xmin = min, xmax = max, ymin = y - 0.4, ymax = y + 0.4), fill = "#e6e6e6") +
  geom_rect(aes(xmin = q1, xmax = q3, ymin = y - 0.4, ymax = y + 0.4), fill = "#c4c4c4") +
  geom_rect(aes(xmin = 0, xmax = median_2007, ymin = y - 0.13, ymax = y + 0.13, fill = continent)) +
  geom_segment(aes(x = median_1952, xend = median_1952, y = y - 0.28, yend = y + 0.28),
               colour = "#262626", linewidth = 0.8) +
  scale_fill_manual(values = continent_colors) +
  scale_x_continuous(limits = c(0, 85), breaks = seq(0, 80, 20), expand = expansion(mult = c(0, 0.02))) +
  scale_y_continuous(breaks = bullets$y, labels = bullets$continent) +
  labs(title = "Asia's median life expectancy rose most, by 27.5 years",
       subtitle = "Median, 2007 (bar) and 1952 (tick); gray bands: range (light) and middle half (dark) of the countries in 2007",
       x = "Life expectancy at birth (years)", y = NULL,
       caption = "Data: Gapminder, via the gapminder R package") +
  theme_lex_viz(grid = "", arrows = "x") +
  theme(legend.position = "none")

Sources (10)

49 occurrences in the corpus; indexed by 5 books

Cite this entry

Stable addresshttps://dataviz.adrientaudiere.com/en-only/term/bullet-graph.html

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

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

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