Upset Chart (gráfico das bolinhas) em Python

Matheus Nascimento
3 min readFeb 4, 2021

Tutorial rápido de como fazer um Upset Chart em python galera.

Basicamente, esse tipo de gráfico nos mostra de maneira simples as interações mais presentes entre determinadas categorias de um dataset.

Precisaremos da biblioteca 'upsetplot':

!pip install upsetplot

Importação de bibliotecas:

import pandas as pd
import matplotlib.pyplot as plt
from upsetplot import plot

Criação de um dataset fake com os dados de 10 clientes referentes a 5 produtos que eles compraram em um supermercado:

produto_a = [0, 1, 0, 0, 1, 1, 1, 1, 1, 1]
produto_b = [1, 0, 1, 1, 0, 0, 0, 0, 0, 0]
produto_c = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
produto_d = [0, 1, 1, 1, 1, 1, 1, 1, 1, 1]
produto_e = [1, 0, 0, 0, 1, 0, 0, 1, 0, 1]
dataset = pd.DataFrame({‘a’: produto_a,
‘b’: produto_b,
‘c’: produto_c,
‘d’: produto_d,
‘e’: produto_e})
dataset
Dataset Fake criado.

Ou seja, o cliente da linha 0, por exemplo, comprou os produtos b, c, e.

Para utilização da função que gera o Upset Chart, necessitamos do formato True/False:

for i in dataset.columns:
dataset[i] = dataset[i].map(lambda x: True if x == 1 else False)

dataset
Dataset no formato True/False.

Para realizar a contagem das interações existentes, podemos utilizar a famosa função value_counts():

d = dataset.value_counts()
d
Contagem das interações existentes.

Por fim plotamos o desejado gráfico:

plot(d, sort_by=’cardinality’)
plt.show()
Upset Chart ordenado por cardinalidade.

Podemos visualizá-lo na posição vertical também:

plot(d, sort_by=’cardinality’, orientation=’vertical’)
plt.show()
Upside Chart na posição vertical.

Acrescentando a contagem em cima das barras:

plot(d, sort_by=’cardinality’, show_counts=’%d’)
plt.show()
Upside Chart com volumetria nas barras.

Essa volumetria também pode ser vista em termos de porcentagem:

plot(d, sort_by=’cardinality’, show_percentages=True)
plt.show()
Upset Chart com porcentagem nas barras.

--

--