Criação de Diagramas Sankey com Matplotlib

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Neste laboratório, aprenderemos como usar a classe Sankey do módulo matplotlib.sankey para criar uma longa cadeia de conexões usando Python Matplotlib.

Dicas para a VM

Após a inicialização da VM, clique no canto superior esquerdo para mudar para a aba Notebook e acessar o Jupyter Notebook para praticar.

Às vezes, pode ser necessário aguardar alguns segundos para que o Jupyter Notebook termine de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.

Se você enfrentar problemas durante o aprendizado, sinta-se à vontade para perguntar ao Labby. Forneça feedback após a sessão, e resolveremos o problema prontamente para você.

Importar as bibliotecas e módulos necessários

Começamos importando as bibliotecas e módulos necessários. Usaremos matplotlib.pyplot e matplotlib.sankey.

import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey

Em seguida, definimos o número de links por lado em nossa cadeia. Neste exemplo, definiremos para 6.

links_per_side = 6

Definir a função side

Agora, definimos a função side, que gera uma cadeia lateral.

def side(sankey, n=1):
    """Generate a side chain."""
    prior = len(sankey.diagrams)
    for i in range(0, 2*n, 2):
        sankey.add(flows=[1, -1], orientations=[-1, -1],
                   patchlabel=str(prior + i),
                   prior=prior + i - 1, connect=(1, 0), alpha=0.5)
        sankey.add(flows=[1, -1], orientations=[1, 1],
                   patchlabel=str(prior + i + 1),
                   prior=prior + i, connect=(1, 0), alpha=0.5)

Definir a função corner

Em seguida, definimos a função corner, que gera um link de canto.

def corner(sankey):
    """Generate a corner link."""
    prior = len(sankey.diagrams)
    sankey.add(flows=[1, -1], orientations=[0, 1],
               patchlabel=str(prior), facecolor='k',
               prior=prior - 1, connect=(1, 0), alpha=0.5)

Criar os objetos figure e axis

Agora, criamos os objetos figure e axis usando plt.subplots().

fig, ax = plt.subplots()

Criar o objeto Sankey

Em seguida, criamos o objeto Sankey usando o objeto ax e definimos a unit como None.

sankey = Sankey(ax=ax, unit=None)

Adicionar o primeiro diagrama

Adicionamos o primeiro diagrama usando sankey.add() com flows=[1, -1] e orientations=[0, 1].

sankey.add(flows=[1, -1], orientations=[0, 1],
           patchlabel="0", facecolor='k',
           rotation=45)

Agora, adicionamos as cadeias laterais e os links de canto usando as funções side() e corner().

side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)
corner(sankey)
side(sankey, n=links_per_side)

Finalizar e exibir o diagrama de Sankey

Finalmente, finalizamos o diagrama Sankey usando sankey.finish() e o exibimos usando plt.show().

sankey.finish()
plt.show()

Resumo

Neste laboratório, aprendemos como usar a classe Sankey do módulo matplotlib.sankey para criar uma longa cadeia de conexões usando Python Matplotlib. Definimos as funções side e corner para gerar as cadeias laterais e os links de canto, respectivamente. Também adicionamos o primeiro diagrama, as cadeias laterais e os links de canto usando o objeto Sankey e exibimos o diagrama usando plt.show().