Visualization VocabularyDataviz vocabulary
Diagram: Euler diagram
Drawing: Adrien Taudière (CC0)
ggplot2 example: Euler diagram
Adrien Taudière (CC0); R code ↓; data: gapminder (Bryan 2025) (CC BY 4.0)
Wikidata image: Euler diagram
assumed author: Mobius Tinker Bell: Spanish translation Whidou: French translation (Public domain); Wikimedia Commons; item Q2501020

Classification

  • chart
  • sets › set diagrams
  • part-to-whole
  • the name evokes: eponym

Channels

Variants

Scientific literature

OpenAlex: 425 papers since 1981, 20% in the last five years; mostly in Computer Science, Social Sciences, Mathematics; Wikidata

Seminal references

R packages

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

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.