更多免费模板

在线画图,有模板、很简单

2025-7-27
开始制作

在如今的数据驱动时代,数据可视化的重要性不言而喻。用户希望以直观且简洁的方式获取信息,而桑基图(SankeyDiagram)则是一种非常有效的工具。它通过宽度不同的箭头来表现流动的大小,通常用于展示资源、时间或资金等在不同类别之间的转移情况。

桑基图

本文将通过Python语言为大家展示如何绘制桑基图,并对其进行有效排序。

1.桑基图概述

桑基图最早出现在19世纪,用于描述能源流动。随着数据可视化技术的发展,如今的桑基图已经不仅限于表现能源流动,它被广泛应用于商业、经济、社交网络等多个领域。桑基图的特点在于其能够将复杂的信息清晰地呈现,让不同的流动之间一目了然。

桑基图

2.Python环境配置

在开始绘制桑基图之前,首先需要确保你拥有适当的Python环境。你需要安装一些基本的库,如plotly和pandas:

pipinstallplotlypandas

3.数据准备

importpandasaspddata={'source':['产品A','产品A','产品B','产品B','产品C'],'target':['渠道1','渠道2','渠道1','渠道3','渠道2'],'value':[100,150,200,50,300]}df=pd.DataFrame(data)

4.绘制基本桑基图

我们可以开始绘制基本的桑基图。使用Plotly,绘制桑基图的代码相当简洁:

importplotly.graph_objectsasgofig=go.Figure(data=[go.Sankey(node=dict(pad=15,thickness=20,line=dict(color="black",width=0.5),label=list(pd.concat([df['source'],df['target']]).unique()),),link=dict(source=df['source'].apply(lambdax:df['source'].unique().tolist().index(x)).tolist(),target=df['target'].apply(lambdax:df['target'].unique().tolist().index(x)+len(df['source'].unique())).tolist(),value=df['value'],))])fig.update_layout(title_text="产品销售渠道桑基图",font_size=10)fig.show()

这段代码将生成一个简单的桑基图,呈现出不同产品在各个销售渠道的流动情况。不过,为了让图表更加具有可读性,我们可以对数据进行排序,从而使更重要的信息优先展现。

5.对数据进行排序

sorted_df=df.sort_values(by='value',ascending=False)

如果我们想根据销售额从大到小进行排序,以上代码就能达到我们的目的。一旦数据排序完成,我们就可以根据新的数据重新绘制桑基图。

6.绘制排序后的桑基图

使用排序后的数据来绘制桑基图,可以使重大的数据流动更加突出:

sorted_fig=go.Figure(data=[go.Sankey(node=dict(pad=15,thickness=20,line=dict(color="black",width=0.5),label=list(pd.concat([sorted_df['source'],sorted_df['target']]).unique()),),link=dict(source=sorted_df['source'].apply(lambdax:sorted_df['source'].unique().tolist().index(x)).tolist(),target=sorted_df['target'].apply(lambdax:sorted_df['target'].unique().tolist().index(x)+len(sorted_df['source'].unique())).tolist(),value=sorted_df['value'],))])sorted_fig.update_layout(title_text="排序后的产品销售渠道桑基图",font_size=10)sorted_fig.show()

这样,我们就得到了一个更有层次感和可读性的桑基图,观众可以更容易地理解不同产品在销售渠道上的流动情况。

7.总结与展望

通过本文的介绍,我们不仅教会了大家如何使用Python绘制桑基图,还展示了如何对图表进行排序以提高可读性。在创建数据可视化时,能够快速展现关键信息,将会显著增强数据分析的效果。

今后,借助于Python的强大库与工具,我们可以继续探索更多的数据可视化形式,各种变化和创新将不断出现在这个领域。保持对数据可视化的热情,相信你也能在这条路上收获更多的乐趣与成就!