graphique
diagramme en oignon
Diagramme d'ensembles en cercles concentriques où chaque ensemble est strictement contenu dans celui qui l'entoure, du plus général au plus particulier.
onion diagram
also: onion modelSet diagram of concentric circles in which each set lies strictly inside the one around it, from the most general to the most specific.
Forme d'un diagramme d'Euler à ensembles emboîtés. Les couches ont une aire proportionnelle à leur effectif (eulerr) ou restent conceptuelles, comme dans les schémas de gestion ; à ne pas confondre avec le graphique en anneau ni le diagramme en rayons de soleil, qui découpent un tout en parts.
Classification
- graphique
- ensembles › diagrammes d'ensembles
- le nom évoque : nourriture
Canaux
aire; secondaire : taille de l'ensemble (variante proportionnelle)
région de l'espace; principal : couche
teinte; secondaire : couche
Attestation
- terme français : Usage courant, non attesté par une source
Littérature scientifique
OpenAlex : 25 articles depuis 2010, dont 28 % ces cinq dernières années; surtout en Engineering, Business, Management and Accounting, Social Sciences; Wikidata
Paquets R
- R
eulerr::euler(); GitHub Ensembles emboîtés.
Code R de l'exemple ggplot2
library(ggplot2)
library(dplyr)
library(ggforce)
library(gapminder)
## Four nested sets of countries in 2007, drawn as concentric circles whose
## areas are their populations: the data's 142 countries, their European
## countries, the European Union, the euro area.
## Membership on 1 January 2007: the EU had 27 members (Bulgaria and Romania
## joined that day), the euro area 13 (Slovenia joined that day). Gapminder
## lacks Cyprus, Estonia, Latvia, Lithuania, Luxembourg and Malta, about
## 9 million people: 21 EU members and 12 euro members remain.
eu <- c("Austria", "Belgium", "Bulgaria", "Czech Republic", "Denmark", "Finland",
"France", "Germany", "Greece", "Hungary", "Ireland", "Italy", "Netherlands",
"Poland", "Portugal", "Romania", "Slovak Republic", "Slovenia", "Spain",
"Sweden", "United Kingdom")
euro <- c("Austria", "Belgium", "Finland", "France", "Germany", "Greece", "Ireland",
"Italy", "Netherlands", "Portugal", "Slovenia", "Spain")
countries <- gapminder |>
filter(year == 2007) |>
mutate(pop = as.numeric(pop), country = as.character(country))
europe <- countries$country[countries$continent == "Europe"]
## Each set lies strictly inside the one around it.
stopifnot(all(euro %in% eu), all(eu %in% europe))
sets <- tibble(
label = c("All 142 countries", paste(length(europe), "European countries"),
"European Union, 21 of 27 members", "Euro area, 12 of 13 members"),
pop = c(sum(countries$pop), sum(countries$pop[countries$country %in% europe]),
sum(countries$pop[countries$country %in% eu]),
sum(countries$pop[countries$country %in% euro]))
) |>
mutate(r = sqrt(pop / 1e9 / pi),
people = ifelse(pop >= 1e9, sprintf("%.2f billion people", pop / 1e9),
sprintf("%.0f million people", pop / 1e6)))
stopifnot(!is.unsorted(rev(sets$pop), strictly = TRUE))
## The three inner sets are named on the right, each by a segment that ends
## in the middle of its ring (or of the inner disc).
R <- sets$r[1]
inner <- sets[-1, ] |>
mutate(r_mid = (r + c(r[-1], 0)) / 2,
angle = c(40, 0, -40) * pi / 180,
x = r_mid * cos(angle), y = r_mid * sin(angle),
xend = R + 0.25, yend = c(0.75, 0, -0.75))
p <- ggplot() +
geom_circle(data = sets, aes(x0 = 0, y0 = 0, r = r), colour = "#9b2367",
fill = "#9b2367", alpha = 0.14, linewidth = 0.4) +
annotate("text", x = 0, y = R * 0.68, size = 3, colour = "#535353", lineheight = 0.9,
label = paste0(sets$label[1], "\n", sets$people[1])) +
geom_segment(data = inner, aes(x = x, y = y, xend = xend, yend = yend),
colour = "#535353", linewidth = 0.3) +
geom_point(data = inner, aes(x = x, y = y), colour = "#535353", size = 0.6) +
geom_text(data = inner, aes(x = xend + 0.06, y = yend, label = paste0(label, "\n", people)),
hjust = 0, size = 2.8, colour = "#535353", lineheight = 0.9) +
coord_equal(xlim = c(-R - 0.05, R + 2.6), clip = "off") +
labs(title = "One person in twenty lived in the euro area in 2007",
subtitle = "Population of the 142 countries in the data; areas drawn to scale",
x = NULL, y = NULL,
caption = "Data: Gapminder, via the gapminder R package; membership on 1 January 2007") +
theme_lex_viz(grid = "", arrows = "") +
theme(axis.text = element_blank())Sources (1)
Citer cette fiche
Adresse stablehttps://dataviz.adrientaudiere.com/terme/onion-diagram.html
RéférenceTaudière Adrien. 2026. diagramme en oignon. Dans Visualization Vocabulary, version 1.0.0. IdEst. https://dataviz.adrientaudiere.com/terme/onion-diagram.html
BibTeX
@incollection{taudiere2026-onion-diagram,
author = {Taudière, Adrien},
title = {diagramme en oignon},
booktitle = {Visualization Vocabulary},
year = {2026},
version = {1.0.0},
publisher = {IdEst},
url = {https://dataviz.adrientaudiere.com/terme/onion-diagram.html},
note = {CC0 1.0}
}Fiche créée le 09/11/2026. Texte modifié le 12/11/2026. Images modifiées le 11/11/2026. Chiffres calculés le 22/10/2026.