Diagrama de Venn / Euler

Sobre los diagramas de Venn y Euler

Un diagrama de Venn usa círculos superpuestos para mostrar todas las relaciones lógicas posibles entre una colección de conjuntos — independientemente de si cada intersección contiene elementos reales. Un diagrama de Euler es la forma más general: los círculos solo se dibujan donde existen relaciones reales, por lo que un conjunto completamente contenido en otro se muestra como un círculo anidado, y dos conjuntos disjuntos no se superponen en absoluto. John Venn introdujo la forma de superposición fija en 1880; Leonhard Euler describió la forma general de contenimiento de conjuntos en la década de 1760.

Los educadores los usan para enseñar teoría de conjuntos; los analistas de datos recurren a ellos para mostrar la superposición de audiencias entre segmentos (lista de correo ∩ usuarios móviles ∩ suscriptores de pago); investigadores de biología, lingüística y medicina usan diagramas de Euler para mapear jerarquías taxonómicas o conceptuales. Schematex soporta los cuatro patrones de uso comunes en un solo DSL — conteos declarativos, enumeración de elementos, etiquetas de región y relaciones de subconjunto/disjunto/superposición de Euler — y puede mezclarlos en un solo diagrama. Ver el artículo de Wikipedia sobre diagramas de Venn y diagramas de Euler para contexto.

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·5.5 ms·3.6 KB SVG

1. Tu primer diagrama de Venn

El diagrama mínimo útil: dos conjuntos, una superposición, dos regiones exclusivas.

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·3.6 ms·2.3 KB SVG

Cuatro reglas cubren el 80 % del uso:

  1. Comienza con venn, seguido opcionalmente de un título entre comillas.
  2. Declara cada conjunto con set ID "Etiqueta" — el id se usa internamente, la etiqueta aparece en el diagrama.
  3. Asigna valores a las regiones usando A & B : valor para intersecciones y A only : valor para regiones exclusivas.
  4. Configura la apariencia con líneas config:; el modo del diagrama (venn vs euler) se puede establecer explícitamente o dejar en auto.

Los comentarios deben comenzar con # en su propia línea.


2. Conjuntos

Una declaración de conjunto crea un círculo en el diagrama.

set ID "Etiqueta" [color: "#hex"]
ParteRequeridoNotas
IDDebe coincidir con [A-Za-z][A-Za-z0-9_-]*
"Etiqueta"Cadena entre comillas mostrada en el círculo
[color: "#hex"]NoAnula el color de relleno para este conjunto

Los conjuntos deben declararse antes de ser referenciados en líneas de región o relación.

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.2 ms·3.3 KB SVG

3. Regiones

Una región asigna un valor a una intersección o área exclusiva. Los cuatro modos de DSL se pueden mezclar en un diagrama.

3.1 Modo declarativo — conteos y porcentajes

Asigna un número o porcentaje a una región con nombre. La clave de región es una lista separada por & de ids de conjuntos (para intersecciones) o ID only (para la parte de ese conjunto no cubierta por ningún otro conjunto).

A & B : 320          # conteo entero
A & B & C : 45       # intersección de tres vías
A only : 1450        # A menos todos los demás conjuntos
A & B : 18.5%        # valor de porcentaje
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.3 ms·3.6 KB SVG

3.2 Etiquetas de región (texto)

Usa el prefijo de palabra clave region y asigna una cadena entre comillas en lugar de un número. La cadena se renderiza dentro de la región.

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.5 ms·3.0 KB SVG

3.3 Modo de enumeración — listas de elementos

Lista los elementos reales de cada conjunto. Schematex calcula todas las intersecciones automáticamente.

ID = { elemento1, elemento2, elemento3 }

Los elementos son palabras simples o cadenas entre comillas separadas por comas. Los conjuntos de enumeración no necesitan una declaración set explícita — la declaración está implícita.

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·1.4 ms·3.4 KB SVG

4. Relaciones de Euler

Las relaciones de Euler expresan contenimiento estructural o separación — que un conjunto es un subconjunto de otro, que dos conjuntos son completamente disjuntos, o que simplemente se superponen. Deben referenciar ids de conjuntos ya declarados con set.

from subset to    # from está completamente dentro de to (también: "in")
from in to        # alias de subset
from disjoint to  # from y to no se superponen
from overlap to   # from y to se superponen parcialmente (explícito — el valor por defecto para conjuntos sin relación)
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·0.5 ms·3.1 KB SVG
Palabra claveAliasSignificado
subsetinfrom está completamente contenido dentro de to
disjointfrom y to no se intersecan
overlapfrom y to se intersecan pero ninguno contiene al otro

5. Configuración

Las líneas config: ajustan el comportamiento del diagrama. Cada una va en su propia línea.

Clave de configValoresPor defectoEfecto
diagramvenn, euler, autoautoForzar Venn (todos los círculos fijos) o Euler (anidamiento de subconjuntos). auto infiere de la presencia de relaciones de Euler.
proportionaltrue, falsefalseEscalar el área del círculo proporcional a los valores de conteo de región
showCountstrue, falseautoSiempre / nunca mostrar etiquetas de conteo. auto las muestra cuando se proporcionan conteos.
showPercenttrue, falsefalseMostrar cada valor de región como porcentaje del total general
palettedefault, brand, monochromedefaultPaleta de colores para conjuntos (anulada por color: por conjunto)
blendModemultiply, screen, nonemultiplyCómo se mezclan los colores de relleno superpuestos

La config también se puede escribir en línea en la línea del encabezado: venn "Título" [proportional: true, showPercent: true].

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

Selección de diseño:

  • layout venn — forma alternativa de config: diagram = venn (se analiza de forma idéntica).
  • layout euler — forma alternativa de config: diagram = euler.
  • layout auto — forma alternativa de config: diagram = auto.

6. Etiquetas y comentarios

  • Título: venn "Mi diagrama" — solo en la primera línea.
  • Etiqueta de conjunto: set A "Email subscribers" — cadena entre comillas en la línea set.
  • Valor de región: entero, porcentaje, cadena entre comillas o lista de elementos asignado después de :.
  • Comentarios: # al inicio de una línea (después del espacio en blanco inicial).

7. Palabras reservadas y escapado

Reservadas al inicio de línea: venn (encabezado), set, config:, layout, region.

Operadores reservados en claves de región: & (intersección), only (región exclusiva).

Palabras clave de relación Euler: subset, in, disjoint, overlap — no pueden usarse como ids de conjuntos.

Reglas de ID: debe coincidir con [A-Za-z][A-Za-z0-9_-]*. Las etiquetas con espacios van en el campo "Etiqueta" entre comillas.


8. Errores comunes

Lo que escribisteDice el parserSolución
A & B : 320 antes de set A … y set B …VennParseError: unknown set id "A" in region keyDeclara los conjuntos con set antes de referenciarlos en líneas de región
dogs subset mammals antes de set dogs …VennParseError: unknown set "dogs" in relationDeclara los conjuntos primero, luego escribe las relaciones de Euler
set A Email subscribers (etiqueta con espacio sin comillas)Error de parser — se espera que la etiqueta sea una cadena entre comillasPon comillas: set A "Email subscribers"
A & B = 320 (igual en vez de dos puntos)La línea no coincide con el patrón de región; error de análisisUsa dos puntos: A & B : 320
Frontend = { React TypeScript } (sin comas)React TypeScript se trata como un solo elementoSepara con comas: Frontend = { React, TypeScript }
config: mode = vennmode no es una clave reconocida (la clave es diagram)Usa config: diagram = venn
Mezclar conjuntos de enumeración con regiones A & B : explícitasLa derivación automática de enumeración solo se ejecuta cuando regions.length === 0Usa un estilo por diagrama o agrega todas las regiones explícitamente

9. Gramática (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

Fuente autoritativa: src/diagrams/venn/parser.ts. Si esto diverge del parser, el parser tiene prioridad — por favor abre un issue.


10. Hoja de ruta

Planificado — aún no analizable. No uses esto en el DSL generado hoy; el parser lo rechazará o ignorará.

  • Anidamiento de Euler de tres vías y N-vías — el renderer actualmente soporta hasta 3 conjuntos en modo Venn; los diagramas de Euler más grandes con contenimiento complejo aún no tienen diseño completo.
  • Alias fill: de color — la propiedad fill: en set es aceptada por el parser (como alias de color:) pero el renderer actualmente solo usa color:.
  • label: en regiones — sintaxis region A & B [label: "Core"] para etiqueta separada del valor.
  • Euler proporcional por áreaproportional: true actualmente solo afecta al modo Venn; el diseño de contenimiento de Euler ignora el indicador.
  • Palabra clave andA and B : 120 en lenguaje natural como alias de A & B : 120.

Síguelo en los issues de GitHub si necesitas alguno de estos antes.


Ejemplos relacionados

Escenarios listos para usar del catálogo de ejemplos:

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.