Venn- / Euler-Diagramm

Über Venn- und Euler-Diagramme

Ein Venn-Diagramm verwendet überlappende Kreise, um jede mögliche logische Beziehung zwischen einer Sammlung von Mengen darzustellen – unabhängig davon, ob jede Schnittmenge tatsächlich Elemente enthält. Ein Euler-Diagramm ist die allgemeinere Form: Kreise werden nur gezeichnet, wo Beziehungen tatsächlich bestehen, sodass eine vollständig in einer anderen enthaltene Menge als verschachtelter Kreis dargestellt wird und zwei disjunkte Mengen sich überhaupt nicht überschneiden. John Venn führte die Form mit festen Überlappungen 1880 ein; Leonhard Euler beschrieb die allgemeine Mengeneinschlussform in den 1760er Jahren.

Lehrende nutzen sie zum Unterrichten der Mengenlehre; Datenanalysten greifen auf sie zurück, um Zielgruppen-Überschneidungen zwischen Segmenten darzustellen (E-Mail-Liste ∩ Mobilnutzer ∩ zahlende Abonnenten); Forscher in Biologie, Linguistik und Medizin verwenden Euler-Diagramme zur Kartierung taxonomischer oder konzeptueller Hierarchien. Schematex unterstützt alle vier gängigen Anwendungsmuster in einer einzigen DSL – deklarative Zählungen, Element-Aufzählungen, Regions-Labels und Euler-Teilmengen-/Disjunkt-/Überlappungs-Relationen – und kann sie in einem einzigen Diagramm mischen. Siehe den Wikipedia-Artikel über Venn-Diagramme und Euler-Diagramme als Hintergrund.

venn·§
↘ preview
100%
Customer Segments — Q3 2025 Venn/Euler diagram "Customer Segments — Q3 2025": 3 sets, 7 regions. Customer Segments — Q3 2025 Set Email subscribers Set Paid users Set Mobile app users Email subscribers Paid users Mobile app users 1840 920 2100 650 12400 3200 8700
UTF-8 · LF · 11 lines · 318 chars✓ parsed·21.1 ms·3.6 KB SVG

1. Ihr erstes Venn-Diagramm

Das kleinste nützliche Diagramm: zwei Mengen, eine Überlappung, zwei exklusive Regionen.

venn·§
↘ preview
100%
Support channels Venn/Euler diagram "Support channels": 2 sets, 3 regions. Support channels Set Email support Set Live chat Email support Live chat 320 1450 890
UTF-8 · LF · 6 lines · 140 chars✓ parsed·15.7 ms·2.3 KB SVG

Vier Regeln decken 80 % der Anwendungsfälle ab:

  1. Beginnen Sie mit venn, optional gefolgt von einem Titel in Anführungszeichen.
  2. Deklarieren Sie jede Menge mit set ID "Label" – die ID wird intern verwendet, das Label erscheint im Diagramm.
  3. Weisen Sie Regionen Werte zu mit A & B : value für Schnittmengen und A only : value für exklusive Regionen.
  4. Konfigurieren Sie das Erscheinungsbild mit config:-Zeilen; der Diagrammmodus (venn vs. euler) kann explizit gesetzt oder auf auto belassen werden.

Kommentare müssen mit # auf einer eigenen Zeile beginnen.


2. Mengen

Eine Mengendeklaration erstellt einen Kreis im Diagramm.

set ID "Label" [color: "#hex"]
TeilErforderlichHinweise
IDJaMuss [A-Za-z][A-Za-z0-9_-]* entsprechen
"Label"JaZeichenkette in Anführungszeichen, die auf dem Kreis angezeigt wird
[color: "#hex"]NeinFüllfarbe für diese Menge überschreiben

Mengen müssen deklariert werden, bevor sie in Regions- oder Relationszeilen referenziert werden.

venn·§
↘ preview
100%
Programming paradigms Venn/Euler diagram "Programming paradigms": 3 sets, 7 regions. Programming paradigms Set Object-Oriented Set Functional Set Logic Object-Oriented Functional Logic 180 45 90 12 620 340 95
UTF-8 · LF · 11 lines · 264 chars✓ parsed·2.9 ms·3.3 KB SVG

3. Regionen

Eine Region weist einer Schnittmenge oder einem exklusiven Bereich einen Wert zu. Die vier DSL-Modi können in einem Diagramm gemischt werden.

3.1 Deklarativer Modus – Zählungen und Prozentsätze

Weisen Sie einer benannten Region eine Zahl oder einen Prozentsatz zu. Der Regions-Schlüssel ist entweder eine durch & getrennte Liste von Mengen-IDs (für Schnittmengen) oder ID only (für den Teil dieser Menge, der nicht von einer anderen Menge abgedeckt wird).

A & B : 320          # ganzzahlige Zählung
A & B & C : 45       # Drei-Wege-Schnittmenge
A only : 1450        # A minus alle anderen Mengen
A & B : 18.5%        # Prozentwert
venn·§
↘ preview
100%
Market research Venn/Euler diagram "Market research": 3 sets, 7 regions. Market research Set Awareness Set Consideration Set Conversion Awareness Consideration Conversion 3400 890 210 150 18200 2100 540
UTF-8 · LF · 11 lines · 318 chars✓ parsed·2.5 ms·3.6 KB SVG

3.2 Regions-Labels (Text)

Verwenden Sie das Schlüsselwort region als Präfix und weisen Sie eine Zeichenkette in Anführungszeichen statt einer Zahl zu. Die Zeichenkette wird innerhalb der Region gerendert.

region A & B : "Nurture"
region B & C : "Convert"
region A & B & C : "Loyal customer"
venn·§
↘ preview
100%
Go-to-market funnel Venn/Euler diagram "Go-to-market funnel": 3 sets, 5 regions. Go-to-market funnel Set Awareness Set Consideration Set Purchase Awareness Consideration Purchase Nurture Convert Cold audience Loyal Direct buyers
UTF-8 · LF · 9 lines · 281 chars✓ parsed·1.2 ms·3.0 KB SVG

3.3 Aufzählungsmodus – Elementlisten

Listen Sie die tatsächlichen Elemente jeder Menge auf. Schematex berechnet alle Schnittmengen automatisch.

ID = { element1, element2, element3 }

Elemente sind durch Kommas getrennte bloße Wörter oder Zeichenketten in Anführungszeichen. Aufzählungsmengen benötigen keine explizite set-Deklaration – die Deklaration wird impliziert.

venn·§
↘ preview
100%
Full-stack team skills Venn/Euler diagram "Full-stack team skills": 3 sets, 5 regions. Full-stack team skills Set Frontend Set Backend Set DevOps Frontend Backend DevOps React, CSS, Webpack Node.js TypeScript, Jest Docker, Kubernetes, Terraform PostgreSQL, Redis
UTF-8 · LF · 4 lines · 206 chars✓ parsed·11.2 ms·3.4 KB SVG

4. Euler-Relationen

Euler-Relationen drücken strukturellen Einschluss oder Trennung aus – dass eine Menge eine Teilmenge einer anderen ist, dass zwei Mengen vollständig disjunkt sind oder dass sie sich überlappen. Sie müssen Mengen-IDs referenzieren, die bereits mit set deklariert wurden.

from subset to    # from ist vollständig innerhalb von to (auch: "in")
from in to        # Alias für subset
from disjoint to  # from und to überlappen sich nicht
from overlap to   # from und to überlappen sich teilweise (explizit – Standard für nicht verwandte Mengen)
venn·§
↘ preview
100%
Biology taxonomy Venn/Euler diagram "Biology taxonomy": 5 sets, 0 regions. Biology taxonomy Set Animals Set Vertebrates Set Mammals Set Birds Set Fish Animals Vertebrates Mammals Birds Fish
UTF-8 · LF · 13 lines · 299 chars✓ parsed·1.0 ms·3.1 KB SVG
SchlüsselwortAliasBedeutung
subsetinfrom ist vollständig innerhalb von to enthalten
disjointfrom und to überschneiden sich nicht
overlapfrom und to überschneiden sich, aber keines enthält das andere

5. Konfiguration

config:-Zeilen steuern das Diagrammverhalten. Jede steht auf einer eigenen Zeile.

Config-SchlüsselWerteStandardWirkung
diagramvenn, euler, autoautoVenn (alle Kreise fest) oder Euler (Teilmengen-Verschachtelung) erzwingen. auto leitet aus dem Vorhandensein von Euler-Relationen ab.
proportionaltrue, falsefalseKreisfläche proportional zu Regions-Zählungswerten skalieren
showCountstrue, falseautoZähllabels immer / nie anzeigen. auto zeigt sie, wenn Zählungen angegeben sind.
showPercenttrue, falsefalseJeden Regionswert als Prozentsatz der Gesamtsumme anzeigen
palettedefault, brand, monochromedefaultFarbpalette für Mengen (wird durch per-Mengen-color: überschrieben)
blendModemultiply, screen, nonemultiplyWie sich überlappende Füllfarben mischen

Config kann auch inline in der Header-Zeile geschrieben werden: venn "Title" [proportional: true, showPercent: true].

venn "Segment overlap"
config: proportional = true
config: showPercent = true
config: blendMode = screen

Layout-Auswahl:

  • layout venn – alternative Form von config: diagram = venn (identisch geparst).
  • layout euler – alternative Form von config: diagram = euler.
  • layout auto – alternative Form von config: diagram = auto.

6. Beschriftungen & Kommentare

  • Titel: venn "My diagram" – nur erste Zeile.
  • Mengen-Label: set A "Email subscribers" – Zeichenkette in Anführungszeichen in der set-Zeile.
  • Regionswert: Ganzzahl, Prozentsatz, Zeichenkette in Anführungszeichen oder Elementliste nach dem :.
  • Kommentare: # am Anfang einer Zeile (nach führenden Leerzeichen).

7. Reservierte Wörter & Escaping

Am Zeilenanfang reserviert: venn (Header), set, config:, layout, region.

Reservierte Operatoren in Regions-Schlüsseln: & (Schnittmenge), only (exklusive Region).

Euler-Relationsschlüsselwörter: subset, in, disjoint, overlap – können nicht als Mengen-IDs verwendet werden.

ID-Regeln: müssen [A-Za-z][A-Za-z0-9_-]* entsprechen. Labels mit Leerzeichen gehen in das "Label"-Feld in Anführungszeichen.


8. Häufige Fehler

GeschriebenParser-MeldungKorrektur
A & B : 320 vor set A … und set B …VennParseError: unknown set id "A" in region keyMengen mit set deklarieren, bevor sie in Regionszeilen referenziert werden
dogs subset mammals vor set dogs …VennParseError: unknown set "dogs" in relationMengen zuerst deklarieren, dann Euler-Relationen schreiben
set A Email subscribers (Label mit Leerzeichen ohne Anführungszeichen)Parser-Fehler – Label muss eine Zeichenkette in Anführungszeichen seinIn Anführungszeichen setzen: set A "Email subscribers"
A & B = 320 (Gleichheitszeichen statt Doppelpunkt)Zeile entspricht nicht dem Regionsmuster; Parse-FehlerDoppelpunkt verwenden: A & B : 320
Frontend = { React TypeScript } (keine Kommas)React TypeScript wird als ein Element behandeltKommas verwenden: Frontend = { React, TypeScript }
config: mode = vennmode ist kein erkannter Schlüssel (Schlüssel ist diagram)config: diagram = venn verwenden
Aufzählungsmengen mit expliziten A & B :-Regionen mischenAufzählungs-Auto-Ableitung läuft nur, wenn regions.length === 0Einen Stil pro Diagramm verwenden oder alle Regionen explizit hinzufügen

9. Grammatik (EBNF)

document       = header (blank | comment | config | layout-stmt | set-decl | enum-decl | euler-rel | region)*

header         = "venn" ( ":"? WS quoted-string )? ( WS "[" config-props "]" )? NEWLINE
quoted-string  = '"' any-char-but-quote* '"'

config         = "config" WS ":" WS config-key WS "=" WS config-value NEWLINE
config-key     = "diagram" | "proportional" | "palette" | "blendMode" | "showCounts" | "showPercent"

layout-stmt    = "layout" WS ( "venn" | "euler" | "auto" ) NEWLINE

set-decl       = "set" WS id WS quoted-string ( WS "[" set-props "]" )? NEWLINE
set-props      = "color:" quoted-hex | "fill:" quoted-hex

enum-decl      = id WS "=" WS "{" element-list "}" NEWLINE
element-list   = element ( "," element )*
element        = quoted-string | bare-word

euler-rel      = id WS euler-op WS id NEWLINE
euler-op       = "subset" | "in" | "disjoint" | "overlap"

region         = "region"? WS region-key WS ":" WS region-value NEWLINE
region-key     = id WS "only"
               | id ( WS "&" WS id )+
region-value   = integer | percent | quoted-string | "[" element-list "]"

percent        = number "%"
id             = [A-Za-z] [A-Za-z0-9_-]*
comment        = "#" any NEWLINE

Maßgebliche Quelle: src/diagrams/venn/parser.ts. Falls dies vom Parser abweicht, hat der Parser Vorrang – bitte öffnen Sie ein Issue.


10. Roadmap

Geplant – noch nicht parsebar. Verwenden Sie diese heute nicht in generiertem DSL; der Parser wird sie ablehnen oder ignorieren.

  • Drei-Wege- und N-Wege-Euler-Verschachtelung – der Renderer unterstützt derzeit bis zu 3 Mengen im Venn-Modus; größere Euler-Diagramme mit komplexem Einschluss sind noch nicht vollständig ausgelegt.
  • fill:-Farb-Alias – die fill:-Eigenschaft auf set wird vom Parser akzeptiert (als Alias für color:), aber der Renderer verwendet derzeit nur color:.
  • label: auf Regionenregion A & B [label: "Core"]-Syntax für separate Labels vs. Werte.
  • Flächenproportionales Eulerproportional: true betrifft derzeit nur den Venn-Modus; das Euler-Einschlusslayout ignoriert das Flag.
  • and-Schlüsselwort – natürlichsprachiges A and B : 120 als Alias für A & B : 120.

Verfolgen Sie die GitHub-Issues, wenn Sie eines davon früher benötigen.


Verwandte Beispiele

Sofort einsatzbereite Szenarien aus der Beispiel-Galerie:

venn·§ Venn (1880)
Customer Segments — Q3 2025 Venn/Euler diagram "Customer Segments — Q3 2025": 3 sets, 7 regions. Customer Segments — Q3 2025 Set Email subscribers Set Paid users Set Mobile app users Email subscribers Paid users Mobile app users 1840 920 2100 650 12400 3200 8700
Customer segment overlap
Three-set Venn showing email subscriber, paid-user, and mobile-app-user overlap with counts for every region — useful for lifecycle marketing planning.
saas
venn·§ Venn (1880)
Programming Paradigms Venn/Euler diagram "Programming Paradigms": 3 sets, 7 regions. Programming Paradigms Set Object-Oriented Set Functional Set Logic Object-Oriented Functional Logic 180 45 90 12 620 340 95
Programming paradigm overlap
Venn diagram showing the intersection of object-oriented, functional, and logic programming paradigms with language counts — a teaching aid for CS curricula.
education

Found this useful?

Schematex is free, fully open source, and zero-dependency. A star helps other developers discover it.