Como Gerar Gráficos Sankey com Streamlit

Eu sempre gostei de diagramas Sankey, especialmente para visualizar a custos e orçamentos. A forma como ele mostra o fluxo de valores é muito intuitiva e fácil de entender. Recentemente descobri um novo uso para eles, aprendi com Hrishikesh Patel que você pode usá-los para visualizar matrizes de confusão. Confira a imagem abaixo para um exemplo legal.

Representando uma matriz de confusão usando um diagrama Sankey. Representando uma matriz de confusão usando um diagrama Sankey. Baseado no diagrama de Hrishikesh Patel.

Com base nisso, pensei, o que mais seria possível visualizar com diagramas Sankey? Bem, ainda não encontrei algo legal, mas criei um aplicativo que permite a qualquer pessoa possa cria-los sem precisar codificar. Agora espero que pessoas mais criativas do que eu possam encontrar novos usos para ele 😄.

Como o aplicativo funciona

O aplicativo é bastante simples. Seus principais componentes são uma tabela onde o usuário pode inserir e editar os dados e um diagrama que é renderizado toda vez que o usuário faz uma alteração na tabela.

Para facilitar o uso, adicionei um conjunto de dados de exemplo que é carregado automaticamente quando o aplicativo é iniciado. Os usuários podem usá-lo para se familiarizar rapidamente com a interface do aplicativo e ver como o diagrama muda ao ajustar os dados ou as configurações.

Uma vez que os usuários estejam prontos para inserir seus dados, eles fazem isso adicionando as linhas uma a uma, ou de forma mais conveniente, fazendo o upload de um arquivo CSV contendo as colunas source, target e value. Um novo diagrama aparecerá automaticamente após o arquivo ser carregado.

Se você quiser ver todos os recursos em ação, confira o vídeo abaixo.

Você também pode testá-lo clicando em ➡️ Streamlit App


Lições aprendidas com este projeto

Estrutura do projeto

Para iniciar o projeto, usei um modelo de cookiecutter poetry-cookiecutter. É muito fácil usá-lo, mas algumas perguntas feitas durante a configuração poderiam ser melhoradas, por exemplo, continuous_integration força o uso do GitHub Actions ou GitLab CI. Às vezes, não quero configurar um CICD, por exemplo, neste projeto, onde o Streamlit Cloud cuida do deploy do aplicativo a partir do repositório do GitHub.

A principal lição aprendida com o uso do poetry-cookiecutter para mim é a integração com o executor de tarefas Poe the Poet. Foi a primeira vez que o usei, e posso me ver usando-o em meus projetos futuros para substituir Makefiles.

Streamlit

Aprendi algumas coisas sobre Streamlit desde o meu último projeto. Finalmente entendi como usar o método st.empty() para atualizar o conteúdo dos widgets dinamicamente. Usei esse recurso para renderizar o gráfico sem ter que recarregar a página inteira.

Hora do código!

Você pode encontrar abaixo o código do aplicativo. Se você quiser ver o projeto completo, confira o repositório do GitHub.

Você também pode forkar o aplicativo diretamente aqui ➡️

Conclusão

Isso é tudo, pessoal! Espero que você tenha gostado deste post e do aplicativo. Se você tiver alguma sugestão ou ideia para novos recursos, deixe um comentário abaixo ou me envie uma mensagem no Linkedin.

Até a próxima! 👋