Quando os pontos do scatter se sobrepoem, o hexbin conta pontos em celulas hexagonais e revela a densidade. Da para desenhar com matplotlib.hexbin.
import numpy as np
import matplotlib.pyplot as plt
rng = np.random.default_rng(42)
session = rng.gamma(shape=3, scale=12, size=1000) # Duracao da sessao (min)
amount = rng.normal(loc=2500, scale=700, size=1000) # Valor da compra (JPY)
fig, ax = plt.subplots(figsize=(6, 4))
hb = ax.hexbin(
amount,
session,
gridsize=18,
cmap="Blues",
mincnt=1,
)
ax.set_xlabel("Valor da compra (JPY)")
ax.set_ylabel("Duracao da sessao (min)")
ax.set_title("Duracao da sessao x valor da compra (hexbin)")
cb = fig.colorbar(hb, ax=ax, shrink=0.85)
cb.set_label("Contagem")
fig.tight_layout()
plt.show()

Dicas de leitura #
- Hexagonos mais escuros indicam maior densidade e ajudam a ver concentracoes.
- Use
mincntpara ocultar celulas com poucos pontos. - Com a barra de cores, funciona como um heatmap quantitativo.