桑基图(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()
推荐阅读: 👉Python matplotlib保姆级教程 👉保姆级matplotlib教程—详细目录 👉Python seaborn保姆级教程 👉保姆级seaborn教程:详细目录
加入学习(收费)