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

本期内容「绘图数据+代码+代码详细解释」已上传(点击图片直达代码):

👉Python matplotlib保姆级教程

Image

Image

Image

Image

Image

Image

交流学习

Image