Gráfico de burbujas en matplotlib

Datos de ejemplo

Considera los siguientes datos a modo de ejemplo:

import numpy as np

# Semilla
rng = np.random.RandomState(1)

# Simulación de datos
x = rng.uniform(0, 1, 40)
y = rng.uniform(0, 1, 40)
size = rng.uniform(20, 60, 40)

Gráfico de burbujas en matplotlib con scatter

Un gráfico de burbujas es un gráfico de dispersión donde una tercera variable numérica se mapea al tamaño de los marcadores. Matplotlib no necesita una función específica: basta con pasar un array al argumento s de scatter.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.scatter(x, y, s = size)

# plt.show()

Gráfico de burbujas en matplotlib

Escala de tamaño

Los valores pasados a s son el área del marcador en puntos, no una escala relativa, así que a menudo tendrás que multiplicar tu variable por una constante para obtener un rango de tamaños de burbuja legible.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.scatter(x, y, s = size * 10)

# plt.show()

Escala de tamaño de un gráfico de burbujas en matplotlib

Colores

Mapea una cuarta variable a c junto con un cmap para codificar también el color, o pasa un único color fijo para todas las burbujas.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.scatter(x, y, s = size * 10, c = size, cmap = "viridis")

# plt.show()

Colores de un gráfico de burbujas en matplotlib

Transparencia y color del borde

Las burbujas que se solapan se leen mejor con algo de transparencia (alpha) y un borde (edgecolors).

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.scatter(x, y, s = size * 10, color = "#4C72B0",
          alpha = 0.6, edgecolors = "white")

# plt.show()

Transparencia y color del borde de un gráfico de burbujas en matplotlib

Leyenda de tamaño

Como scatter no crea una leyenda de tamaño automáticamente, constrúyela a mano con legend_elements, que obtiene ejemplos representativos a partir de los tamaños representados.

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
scatter = ax.scatter(x, y, s = size * 10, color = "#4C72B0", alpha = 0.6)

handles, labels = scatter.legend_elements(prop = "sizes", num = 4, alpha = 0.6)
ax.legend(handles, labels, title = "Tamaño", loc = "upper right")

# plt.show()

Leyenda de tamaño de un gráfico de burbujas en matplotlib

Data Sketches

A journey of imagination, exploration, and beautiful data visualizations

Comprar en Amazon

También te puede interesar