Diagrama de Venn en Python con matplotlib-venn

Diagrama de Venn de dos conjuntos con venn2

Un diagrama de Venn muestra el solape entre dos o más conjuntos. Matplotlib no incluye uno por sí mismo, pero el paquete matplotlib-venn (instálalo con pip install matplotlib-venn) sí, construido sobre matplotlib. Pasa dos objetos set de Python a venn2 y calculará y dibujará el solape automáticamente.

import matplotlib.pyplot as plt
from matplotlib_venn import venn2

# Datos
A = {1, 2, 3, 4, 5, 6}
B = {4, 5, 6, 7, 8}

venn2([A, B])

# plt.show()

Diagrama de Venn en Python con matplotlib-venn

Diagrama de Venn de tres conjuntos con venn3

Para tres conjuntos usa venn3 en su lugar, que sigue exactamente la misma sintaxis y también calcula automáticamente todos los solapes (incluida la intersección de los tres conjuntos).

import matplotlib.pyplot as plt
from matplotlib_venn import venn3

# Datos
A = {1, 2, 3, 4, 5, 6}
B = {4, 5, 6, 7, 8}
C = {3, 4, 9, 10}

venn3([A, B, C])

# plt.show()

Diagrama de Venn de tres conjuntos en Python

Colores

Personaliza el color de relleno de cada conjunto con set_colors, y la transparencia de los solapes con alpha.

import matplotlib.pyplot as plt
from matplotlib_venn import venn2

# Datos
A = {1, 2, 3, 4, 5, 6}
B = {4, 5, 6, 7, 8}

venn2([A, B],
     set_colors = ("#4C72B0", "#DD8452"),
     alpha = 0.7)

# plt.show()

Colores de un diagrama de Venn en Python

Etiquetas de los conjuntos

Las etiquetas junto a cada círculo (A, B por defecto) se fijan con set_labels.

import matplotlib.pyplot as plt
from matplotlib_venn import venn2

# Datos
A = {1, 2, 3, 4, 5, 6}
B = {4, 5, 6, 7, 8}

venn2([A, B],
     set_labels = ("Clientes 2024", "Clientes 2025"))

# plt.show()

Etiquetas de los conjuntos de un diagrama de Venn en Python

Etiquetas de los subconjuntos

venn2 devuelve un objeto VennDiagram. Usa get_label_by_id sobre él para cambiar el texto de cualquiera de las tres regiones (10 para la zona exclusiva de la izquierda, 01 para la de la derecha y 11 para el solape).

import matplotlib.pyplot as plt
from matplotlib_venn import venn2

# Datos
A = {1, 2, 3, 4, 5, 6}
B = {4, 5, 6, 7, 8}

v = venn2([A, B])
v.get_label_by_id('10').set_text(len(A - B))
v.get_label_by_id('01').set_text(len(B - A))
v.get_label_by_id('11').set_text(len(A & B))

# plt.show()

Etiquetas de los subconjuntos de un diagrama de Venn en Python

Contorno de los círculos

Añade un contorno a los círculos con venn2_circles (o venn3_circles para tres conjuntos), llamado justo después de venn2. Devuelve los patches de los círculos, así que también puedes personalizar su grosor y color de línea.

import matplotlib.pyplot as plt
from matplotlib_venn import venn2, venn2_circles

# Datos
A = {1, 2, 3, 4, 5, 6}
B = {4, 5, 6, 7, 8}

venn2([A, B])
venn2_circles([A, B], linewidth = 1.5, color = "gray")

# plt.show()

Contorno de los círculos de un diagrama de Venn en Python

Título

Como venn2 y venn3 dibujan sobre los ejes activos de matplotlib, se puede añadir un título de la forma habitual con plt.title.

import matplotlib.pyplot as plt
from matplotlib_venn import venn2

# Datos
A = {1, 2, 3, 4, 5, 6}
B = {4, 5, 6, 7, 8}

venn2([A, B])
plt.title("Solape de clientes")

# plt.show()

Título de un diagrama de Venn en Python

Storytelling con Datos

Visualización de datos para profesionales

Comprar en Amazon
Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon

También te puede interesar