pythonic生物人

桑基图(Sankey Diagram)

桑基图(Sankey Diagram)是一种用于可视化不同节点间流动关系的图表,通过宽度不一的流动带直观表示数量大小,展示从一个状态到另一个状态的转移或分布过程。

其特点是起始流量与结束流量相等,主支和分支的宽度总和保持平衡,体现能量守恒。流动带的宽度按比例反映分支流量占比,不同节点的宽度则对应特定状态下的流量规模,类似于能量守恒定律。

本次分享Python matplotlib结合pySankey2快速绘制桑基图。


pySankey2安装

pySankey2是一个不太完整的Python 包,不能直接pip或者conda安装,通过本地源代码安装,

pip install matplotlib_data/pysankey2-0.1.0.zip

数据准备

使用“3.2.11 sankey2_countrys数据集”,展示三种状态数据变化。

import pandas as pd
countrys = set(df_countrys.layer1).union(set(df_countrys.layer2),
                                         set(df_countrys.layer3))
colors_countrys = setColorConf(len(countrys), colors='Accent')
set_colormaps = dict(zip(countrys, colors_countrys))  #自定义节点颜色

Sankey Diagram绘制

代码很简单,

# 20.2_01
# -*- encoding: utf-8 -*-
'''
未经过允许禁止转载!
@Author  :   公众号: pythonic生物人
@Desc    :    20.2 三层桑基图
'''


import matplotlib.pyplot as plt
from pysankey2 import Sankey
from pysankey2.utils import setColorConf

sky_auto_global_colors = Sankey(
    df_countrys,
    colorMode="global",
    stripColor='left',
    colorDict=set_colormaps  #设置节点颜色
)
fig, ax = sky_auto_global_colors.plot()
Image

-END-
推荐阅读:
👉Python matplotlib保姆级教程
👉保姆级matplotlib教程—详细目录
👉Python seaborn保姆级教程
👉保姆级seaborn教程:详细目录
图片
图片
图片
图片
图片

图片

图片

图片

图片

图片

图片

加入学习(收费)

图片