Curso
A beleza dos diagramas de Sankey está em sua capacidade de simplificar sistemas de vários estágios. Em vez de procurar em linhas de dados para encontrar as maiores perdas de energia ou alocações de orçamento, você pode identificá-las instantaneamente procurando os fluxos mais densos. Isso os torna úteis para gerenciamento de energia, análise financeira, otimização de funil de marketing e qualquer cenário em que a compreensão do fluxo e da transformação de recursos seja mais importante do que comparações numéricas precisas.
Para aqueles que desejam expandir seus recursos analíticos além da visualização de fluxo, nossos cursos Visualização de dados no Power BI e Visualização de dados no Tableau ensinam você a criar painéis profissionais e relatórios interativos usando as plataformas de business intelligence líderes do setor.
O que é um diagrama Sankey?
Um diagrama Sankey é uma visualização de fluxo especializada em que a largura das setas de conexão representa a magnitude do fluxo entre diferentes estágios, categorias ou entidades. Diferentemente dos fluxogramas tradicionais que mostram as etapas do processo ou os gráficos de barras que comparam valores discretos, os diagramas Sankey são excelentes para mostrar como as quantidades se movem, se transformam ou são distribuídas em um sistema.
Componentes do diagrama Sankey mostrados. Imagem do autor.
O diagrama acima ilustra como um orçamento anual de US$ 100.000 flui por diferentes categorias. Observe como a alocação de Marketing (US$ 40.000) aparece como um fluxo visivelmente mais espesso em comparação com P&D (US$ 25.000), tornando as diferenças proporcionais imediatamente aparentes.
História e evolução dos diagramas de Sankey
O primeiro diagrama de Sankey conhecido apareceu em 1898, quando o capitão Matthew Henry Phineas Riall Sankey o usou para mostrar a eficiência energética de um motor a vapor. Seu diagrama revelou que apenas uma pequena parte da energia do combustível realmente contribuía para o trabalho útil, sendo a maior parte perdida como calor residual.
No entanto, o conceito de visualização de fluxo proporcional é anterior ao Capitão Sankey. Charles Joseph Minard criou o que muitos consideram o mais famoso diagrama de fluxo em 1869, descrevendo a desastrosa campanha russa de Napoleão em 1812. O diagrama de Minard mostrava a diminuição do tamanho do exército à medida que ele avançava na Rússia e depois recuava, com a espessura da linha representando o número de soldados sobreviventes.
Componentes de um diagrama Sankey
Compreender os principais elementos de um diagrama Sankey ajuda você a interpretar os existentes e a criar o seu próprio de forma eficaz.
- Nós representam as categorias, os estágios ou as entidades em seu sistema. Em nosso exemplo de orçamento, "Orçamento anual", "Marketing" e "Anúncios digitais" são todos nós. Nós de origem (como "Orçamento anual") geralmente aparecem à esquerda, enquanto nós de destino (como "Digital Ads") aparecem à direita, embora isso possa variar de acordo com suas preferências de layout.
- Fluxos ou links são os conectores direcionais entre os nós, e sua largura é proporcional ao valor que representam. O fluxo laranja espesso do Orçamento anual para o Marketing representa US$ 40.000, enquanto o fluxo muito mais fino para o Conteúdo representa apenas US$ 5.000. Essa largura proporcional é a característica definidora que torna os diagramas de Sankey tão eficazes para destacar diferenças de magnitude.
- Os valores são os dados numéricos que determinam a largura de cada fluxo. Eles podem representar dinheiro, energia, materiais, pessoas ou qualquer recurso quantificável que transite pelo seu sistema. O diagrama calcula automaticamente a largura adequada com base nesses valores, garantindo a precisão visual.
- Drop-offs são fluxos especiais que representam perdas, desperdícios ou recursos que saem do sistema sem atingir um nó de destino. Embora nosso exemplo de orçamento não mostre quedas, você pode vê-las em diagramas de energia que mostram a perda de calor ou em funis de marketing que mostram os clientes que abandonam o processo.
Como criar um diagrama Sankey
A criação de diagramas Sankey requer abordagens diferentes, dependendo das ferramentas que você preferir e do nível de conforto técnico. Examinaremos o mesmo exemplo de alocação de orçamento usando Excel, Python e R, para que você possa escolher o método que melhor se adapte ao seu fluxo de trabalho e experiência.
Diagrama de Sankey no Excel
O Excel não inclui um tipo de gráfico Sankey nativo, o que significa que você precisará usar um suplemento de terceiros para criar essas visualizações. Na minha experiência, o ChartExpo é uma das opções mais populares e fáceis de usar.
Interface ChartExpo e visualização do diagrama Sankey. Imagem do autor.
Antes de criar o diagrama, você precisará estruturar seus dados em um formato de valor de origem e destino, em que cada linha representa uma conexão de fluxo. Para o nosso exemplo de orçamento, isso significa listar cada alocação de orçamento como uma linha separada com a categoria de origem, a categoria de destino e o valor em dólares.
O processo é simples quando você tem o ChartExpo instalado. Primeiro, instale o suplemento no Microsoft AppSource ou no mercado de suplementos do Excel. Em seguida, selecione o intervalo de dados, incluindo os cabeçalhos, e escolha Sankey Chart nas opções de visualização do ChartExpo.
O add-in detecta automaticamente as colunas de origem, destino e valor com base na estrutura de dados que você possui. Conforme mostrado na interface acima, o ChartExpo oferece uma visualização prévia do seu diagrama, juntamente com opções para criar um gráfico a partir da seleção, personalizar a visualização ou exportar o gráfico finalizado para uso em apresentações ou relatórios.
Diagrama de Sankey em Python
O Python oferece excelentes opções para a criação de diagramas Sankey, sendo o Plotly a biblioteca mais recomendada devido a seus recursos interativos e qualidade de saída profissional. Usando o mesmo exemplo de alocação de orçamento com o qual começamos, vamos recriar essa visualização idêntica por meio de código.
Etapa 1: Preparação de dados
Comece organizando seus dados no formato que o Plotly espera. Você precisará de três componentes principais: uma lista de nomes de nós e matrizes que especifiquem os índices de origem, os índices de destino e os valores de cada fluxo.
import plotly.graph_objects as go
# Define all nodes in your diagram
nodes = ["Annual Budget", "Marketing", "Operations", "R&D",
"Digital Ads", "Events", "Content", "Salaries",
"Office", "Utilities", "Software", "Equipment"]
# Define the connections (using node indices)
source_indices = [0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3]
target_indices = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
values = [40, 35, 25, 25, 10, 5, 20, 10, 5, 15, 10]
Os índices correspondem às posições na sua lista de nós, portanto, source_indices = [0, 0, 0]
significa que os três primeiros fluxos começam em "Annual Budget"
(posição 0
).
Etapa 2: Criação básica de Sankey
Crie a estrutura central do diagrama usando o objeto Sankey
do Plotly. Os parâmetros essenciais são as definições de nós e as especificações de links.
fig = go.Figure(data=[go.Sankey(
node=dict(
label=nodes,
pad=15,
thickness=20
),
link=dict(
source=source_indices,
target=target_indices,
value=values
)
)])
Isso cria um diagrama Sankey funcional com estilo padrão. O pad
controla o espaçamento entre os nós, enquanto o thickness
determina a largura dos retângulos dos nós.
Etapa 3: Estilo e personalização
Melhore seu diagrama com cores, layout aprimorado e formatação profissional.
# Add colors and transparency
fig.update_traces(
node_color=["#1f77b4", "#ff7f0e", "#2ca02c", "#d62728",
"#ff9999", "#ff9999", "#ff9999", "#90ee90",
"#90ee90", "#90ee90", "#ffcccb", "#ffcccb"],
link_color=["rgba(255, 127, 14, 0.4)", "rgba(44, 160, 44, 0.4)",
"rgba(214, 39, 40, 0.4)", "rgba(255, 127, 14, 0.6)",
"rgba(255, 127, 14, 0.6)", "rgba(255, 127, 14, 0.6)",
"rgba(44, 160, 44, 0.6)", "rgba(44, 160, 44, 0.6)",
"rgba(44, 160, 44, 0.6)", "rgba(214, 39, 40, 0.6)",
"rgba(214, 39, 40, 0.6)"]
)
# Update layout for better presentation
fig.update_layout(
title="Annual Budget Allocation",
font=dict(size=16, family="Arial Black", color="black"),
width=900,
height=600
)
Etapa 4: Exibição e exportação
Exiba seu diagrama e salve-o em vários formatos para diferentes usos.
fig.show() # Display in Jupyter notebook or browser
# Export options
fig.write_html("budget_sankey.html") # Interactive web version
fig.write_image("budget_sankey.png") # Static image
Para aplicativos da Web, você pode integrá-lo diretamente aos aplicativos Dash, tornando seus diagramas Sankey parte de painéis interativos. A visualização resultante corresponde exatamente ao que vimos no visual de abertura. Temos um excelente code-along que ensina você a Criar painéis com Plotly e Dash para que você possa experimentar essa ideia por si mesmo.
Diagrama de Sankey em R
O R oferece excelentes recursos para a criação de diagramas Sankey por meio do pacote networkD3, que cria visualizações interativas e prontas para a Web. Usando nossos dados familiares de alocação de orçamento, demonstraremos como o R pode produzir os mesmos resultados profissionais com recursos de interatividade incorporados.
O pacote networkD3 foi projetado especificamente para criar visualizações de rede com tecnologia D3.js no R, incluindo diagramas Sankey. Essa abordagem oferece várias vantagens: interatividade automática (efeitos de foco, zoom), fácil integração com relatórios R Markdown e opções de exportação perfeitas para implantação na Web.
Etapa 1: Configuração e preparação de dados
Primeiro, instale e carregue os pacotes necessários e, em seguida, estruture seus dados no formato que o networkD3 espera.
# Install required packages (run once)
install.packages(c("networkD3", "dplyr"))
# Load libraries
library(networkD3)
library(dplyr)
# Create nodes dataframe
nodes <- data.frame(
name = c("Annual Budget", "Marketing", "Operations", "R&D",
"Digital Ads", "Events", "Content", "Salaries",
"Office", "Utilities", "Software", "Equipment")
)
# Create links dataframe (note: networkD3 uses 0-based indexing)
links <- data.frame(
source = c(0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3),
target = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11),
value = c(40, 35, 25, 25, 10, 5, 20, 10, 5, 15, 10)
)
A principal diferença em relação ao Python é que o R requer DataFrames separados para nós e links, sendo que o DataFrame de links usa indexação baseada em zero para referenciar as posições dos nós.
Etapa 2: Criação básica de Sankey
Crie seu diagrama usando a função sankeyNetwork()
com parâmetros essenciais.
# Create basic Sankey diagram
sankey_plot <- sankeyNetwork(
Links = links,
Nodes = nodes,
Source = "source",
Target = "target",
Value = "value",
NodeID = "name",
units = "K USD"
)
# Display the plot
Sankey_plot
Isso gera um diagrama Sankey interativo em que os usuários podem passar o mouse sobre os fluxos para ver os valores exatos e arrastar os nós para reorganizar o layout.
Etapa 3: Personalização e estilo
Aprimore seu diagrama com cores, dimensionamento e opções de formatação profissional.
# Advanced Sankey with customization
(sankey_advanced <- sankeyNetwork(
Links = links,
Nodes = nodes,
Source = "source",
Target = "target",
Value = "value",
NodeID = "name",
units = "K USD",
fontSize = 14,
fontFamily = "Arial",
nodeWidth = 30,
nodePadding = 20,
margin = list(top = 50, right = 50, bottom = 50, left = 50),
height = 600,
width = 900
))
Etapa 4: Opções de exportação e integração
O R facilita o salvamento de seus diagramas interativos em vários formatos e a integração deles em relatórios.
# Save as HTML file
library(htmlwidgets)
saveWidget(sankey_advanced, "budget_sankey.html", selfcontained = TRUE)
# For R Markdown integration, simply include the plot object
# The diagram will render as an interactive widget in your document
# For static image export (optional - requires webshot2 package)
install.packages("webshot2")
library(webshot2)
webshot("budget_sankey.html", "budget_sankey.png", vwidth = 900, vheight = 600)
Diagrama Sankey interativo criado com o pacote networkD3 do R. Imagem do autor.
Esse diagrama resultante fornece os mesmos insights visuais que nossas versões em Python e Excel, mas com interatividade integrada que ajuda os usuários a explorar os dados mais detalhadamente.
Alternativas e comparações do diagrama Sankey
Os diagramas Sankey funcionam melhor quando você tem relações direcionais claras entre as categorias, em que a magnitude do fluxo é mais importante do que comparações precisas. No entanto, várias situações exigem abordagens de visualização diferentes.
Quando não usar os diagramas Sankey
Evite diagramas de Sankey quando não houver fluxo direcional entre suas categorias. Se os seus dados simplesmente mostrarem diferentes grupos ou classificações sem movimento entre eles, os gráficos de barras ou de pizza comunicarão a mensagem com mais clareza. Por exemplo, comparar a participação de mercado de diferentes empresas não envolve fluxo, portanto, um gráfico de barras seria mais apropriado.
Ignore-os quando você precisar de comparações numéricas precisas. Embora os diagramas de Sankey mostrem efetivamente as magnitudes relativas, as larguras variáveis dificultam que os leitores extraiam valores exatos ou façam comparações detalhadas. Se as partes interessadas precisarem comparar porcentagens ou valores específicos com precisão, você pode usar tabelas ou gráficos de barras.
Considere alternativas quando seus dados se tornarem muito complexos e atrapalharem o diagrama. Com mais de 10 a 15 nós ou fluxos altamente interconectados, os diagramas de Sankey podem se tornar visualmente impressionantes. As linhas cruzadas e os fluxos sobrepostos dificultam o acompanhamento de caminhos individuais pelo sistema.
Escolha visualizações mais simples quando seu público não estiver familiarizado com os diagramas Sankey. Como eles são menos comuns do que os gráficos de barras ou de linhas, alguns públicos podem se concentrar mais em entender o formato do que em interpretar os dados. Em apresentações para públicos em geral, mantenha os tipos de gráficos conhecidos, a menos que a relação de fluxo seja essencial para a sua mensagem.
Melhores alternativas para cenários específicos
Diagramas aluviais funcionam melhor para fluxos categóricos ou baseados em tempo, nos quais você está acompanhando alterações em vários períodos ou estágios. Enquanto os diagramas de Sankey mostram as quantidades que fluem por um sistema em um ponto no tempo, os diagramas aluviais são excelentes para mostrar como os dados categóricos evoluem. Por exemplo, se você acompanhar como os eleitores mudam de partido político em várias eleições ou como os alunos mudam de curso durante a faculdade, os diagramas aluviais são mais adequados do que os diagramas de Sankey.
Gráficos de coordenadas paralelas servem melhor para comparar dados multivariados em que você deseja ver padrões em várias dimensões simultaneamente. Eles funcionam bem quando você tem muitas variáveis para cada ponto de dados e deseja identificar clusters ou outliers. Por exemplo, comparar carros em termos de preço, eficiência de combustível, classificações de segurança e métricas de desempenho funciona melhor com coordenadas paralelas do que tentar forçar essas relações em um formato de fluxo.
Gráficos de rebatimento lidam com as mudanças de classificação ao longo do tempo de forma mais eficaz do que os diagramas de Sankey ou aluviais. Quando você está mostrando como diferentes entidades sobem ou descem nas classificações ao longo de períodos de tempo, os gráficos de relevo mostram claramente a trajetória sem a complexidade visual dos fluxos. Pense em acompanhar como as posições de mercado de diferentes empresas mudam ao longo dos trimestres ou como as equipes esportivas se movem na classificação da liga ao longo das temporadas.
Para saber mais, leia nossa postagem no blog sobre os 5 principais cursos de Business Intelligence que você deve fazer no DataCamp, que fornece orientação sobre como desenvolver conhecimento com as importantes ferramentas de BI.
Conclusão
A visualização bem-sucedida depende da escolha da ferramenta certa para sua situação específica. Use os diagramas de Sankey quando as relações de fluxo direcional forem mais importantes do que comparações numéricas precisas e quando o público precisar identificar rapidamente os fluxos mais significativos em um sistema.
Para os leitores interessados em ir além dos diagramas de Sankey, nossa postagem no blog 10 ideias de projetos de visualização de dados para todos os níveis oferece sugestões de projetos práticos em diferentes níveis de complexidade para que você possa criar seu portfólio de visualização. Esses projetos ajudam a desenvolver habilidades de pensamento crítico e criam evidências tangíveis de suas capacidades de visualização de dados.
Como um profissional experiente em ciência de dados, machine learning e IA generativa, Vinod se dedica a compartilhar conhecimento e capacitar aspirantes a cientistas de dados para que tenham sucesso nesse campo dinâmico.
Perguntas frequentes
Qual é a diferença entre um diagrama Sankey e um fluxograma?
Enquanto os fluxogramas mostram as etapas do processo e os pontos de decisão, os diagramas Sankey visualizam especificamente o fluxo e a quantidade de recursos, energia ou dados entre diferentes estágios. A largura das setas nos diagramas Sankey é proporcional aos valores que estão sendo medidos, enquanto os fluxogramas se concentram na lógica do processo e não nas quantidades.
Que tipo de dados é mais adequado para os diagramas de Sankey?
Os diagramas Sankey funcionam melhor com dados baseados em fluxo que mostram o movimento ou a transformação de um estágio para outro, como distribuição de energia, funis de conversão de sites, fluxos da cadeia de suprimentos ou alocações de orçamento. Eles não são adequados para dados puramente categóricos ou conjuntos de dados em que não há relação direcional entre as variáveis.
Quais são algumas boas ferramentas on-line para você criar diagramas Sankey sem codificação?
Para os usuários que preferem soluções baseadas na Web, o SankeyMATIC oferece uma interface simples e gratuita para diagramas básicos, enquanto o Flourish oferece recursos mais avançados e interatividade para apresentações profissionais. O Google Charts e o Highcharts são excelentes para desenvolvedores que desejam incorporar diagramas Sankey em sites, e o Visual Paradigm oferece recursos abrangentes de diagramação como parte de um conjunto mais amplo de ferramentas de negócios.
Quando devo evitar usar um diagrama Sankey?
Evite diagramas Sankey quando você precisar de comparações numéricas precisas (já que as larguras de fluxo podem ser difíceis de medir com exatidão), quando seus dados tiverem muitas categorias que criariam confusão visual ou quando não houver fluxo direcional real entre os pontos de dados. Considere também alternativas mais simples se o público-alvo não estiver familiarizado com esse tipo de visualização, pois a novidade pode ofuscar sua mensagem.
Como faço para lidar com valores negativos ou perdas em um diagrama Sankey?
Normalmente, os diagramas Sankey não exibem valores negativos diretamente, pois as larguras das setas representam quantidades positivas. Em vez disso, mostre as perdas como fluxos de saída separados dos nós ou use fluxos de saída que não se conectam aos nós de destino para representar desperdício ou recursos perdidos.
Qual é a diferença entre os diagramas Sankey e Alluvial?
Os diagramas de Sankey concentram-se nas quantidades de fluxo em um único ponto no tempo, enquanto os diagramas aluviais mostram como os dados categóricos mudam em vários períodos ou estágios. Os diagramas aluviais são melhores para você acompanhar a migração, as mudanças nas categorias ou a evolução ao longo do tempo.