
chart
Euler diagram
Sets where only the actual intersections are drawn.
Classification
- chart
- sets › set diagrams
- part-to-whole
- the name evokes: eponym
Channels
area; secondary: set size (proportional variant)
spatial region; main: sets and intersections
color hue; secondary: set
Variants
onion diagramnested
Venn diagramall intersections
Scientific literature
OpenAlex: 425 papers since 1981, 20% in the last five years; mostly in Computer Science, Social Sciences, Mathematics; Wikidata
Seminal references
- naming (1768) Euler (1768). Lettres à une princesse d'Allemagne; Wikipedia in English
R packages
- R
eulerr::euler(); GitHub 151 stars; last commit 2026-10 - R
VennDiagram::venn.diagram(); GitHub 8 stars; last commit 2026-01; paper (3 158 citations)
R code of the ggplot2 example
library(ggplot2)
library(dplyr)
library(ggforce)
library(gapminder)
## Two sets of countries in 2007, drawn as circles whose areas are their
## sizes and whose overlap is the size of their intersection.
countries <- gapminder |>
filter(year == 2007) |>
mutate(long = lifeExp > 75, rich = gdpPercap > 20000)
n_long <- sum(countries$long)
n_rich <- sum(countries$rich)
n_both <- sum(countries$long & countries$rich)
r_long <- sqrt(n_long / pi)
r_rich <- sqrt(n_rich / pi)
## Area of the lens shared by two circles whose centres are d apart.
lens <- function(d, r1, r2) {
r1^2 * acos((d^2 + r1^2 - r2^2) / (2 * d * r1)) + r2^2 * acos((d^2 + r2^2 - r1^2) / (2 * d * r2)) -
0.5 * sqrt((-d + r1 + r2) * (d + r1 - r2) * (d - r1 + r2) * (d + r1 + r2))
}
d <- uniroot(\(d) lens(d, r_long, r_rich) - n_both,
c(abs(r_long - r_rich) + 1e-9, r_long + r_rich - 1e-9))$root
circles <- tibble(set = c("long", "rich"), x = c(0, d), r = c(r_long, r_rich))
p <- ggplot(circles) +
geom_circle(aes(x0 = x, y0 = 0, r = r, colour = set, fill = set), alpha = 0.12, linewidth = 0.6) +
annotate("text", x = -r_long - 0.3, y = 0, hjust = 1, size = 3, colour = "#9b2367",
label = paste0("Life expectancy\nabove 75\n(", n_long, " countries)")) +
annotate("text", x = d + r_rich + 0.3, y = -1.2, hjust = 0, size = 3, colour = "#2e7891",
label = paste0("GDP per capita\nabove $20 000\n(", n_rich, " countries)")) +
## The thin crescent of the rich circle outside the other one: Saudi Arabia.
annotate("segment", x = d + r_rich - 0.1, y = 0.6, xend = d + r_rich + 0.6, yend = 1.6,
colour = "#535353", linewidth = 0.3) +
annotate("text", x = d + r_rich + 0.7, y = 1.6, hjust = 0, size = 3, colour = "#535353",
label = "Saudi Arabia") +
scale_colour_manual(values = c(long = "#9b2367", rich = "#2e7891")) +
scale_fill_manual(values = c(long = "#9b2367", rich = "#2e7891")) +
coord_fixed(xlim = c(-r_long - 3.2, d + r_rich + 3.6)) +
labs(title = "Saudi Arabia is the only rich country\nwith a life expectancy below 75",
subtitle = "142 countries in 2007; areas and overlap drawn to scale",
x = NULL, y = NULL,
caption = "Data: Gapminder, via the gapminder R package") +
theme_lex_viz(grid = "", arrows = "") +
theme(legend.position = "none", axis.text = element_blank())Sources (10)
14 occurrences in the corpus; indexed by 3 books
- Brilliant Maps for Curious Minds: 100 New Ways to See the World (Maps for Curious Minds)
- Data visualisation: a handbook for data driven design
- Data visualization handbook
- Data Viz Project
- datavizproject.com
- The book of circles: visualizing spheres of knowledge
- The golden age of data visualization: how did we get here?
- Visual strategies for biological data
- Visualizing with text
- Wikipedia in English↗
Cite this entry
Stable addresshttps://dataviz.adrientaudiere.com/en-only/term/euler-diagram.html
ReferenceTaudière Adrien. 2026. Euler diagram. In Visualization Vocabulary, version 1.0.0. IdEst. https://dataviz.adrientaudiere.com/en-only/term/euler-diagram.html
BibTeX
@incollection{taudiere2026-euler-diagram,
author = {Taudière, Adrien},
title = {Euler diagram},
booktitle = {Visualization Vocabulary},
year = {2026},
version = {1.0.0},
publisher = {IdEst},
url = {https://dataviz.adrientaudiere.com/en-only/term/euler-diagram.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.