注意
转到末尾下载完整的示例代码。
Sankey 类#
通过生成三个基本图来演示 Sankey 类。
import matplotlib.pyplot as plt
from matplotlib.sankey import Sankey
示例 1 - 大部分默认值
这演示了如何通过隐式调用 Sankey.add() 方法和在调用类时附加 finish() 来创建简单的图表。
注意
在实例化 Sankey() 时未提供坐标轴,因此它们是自动创建的。
由于数据已经归一化,因此 scale 参数不是必需的。
默认情况下,路径的长度是对齐的。
示例 2
这演示了
将一个路径设置得比其他路径长
将标签放置在图的中间
使用 scale 参数来归一化流量
将关键字参数隐式传递给 PathPatch()
更改箭头头的角度
更改路径尖端与其标签之间的偏移
格式化路径标签和相关单位中的数字
在创建图形后更改补丁和标签的外观
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[],
title="Flow Diagram of a Widget")
sankey = Sankey(ax=ax, scale=0.01, offset=0.2, head_angle=180,
format='%.0f', unit='%')
sankey.add(flows=[25, 0, 60, -10, -20, -5, -15, -10, -40],
labels=['', '', '', 'First', 'Second', 'Third', 'Fourth',
'Fifth', 'Hurray!'],
orientations=[-1, 1, 0, 1, 1, 1, -1, -1, 0],
pathlengths=[0.25, 0.25, 0.25, 0.25, 0.25, 0.6, 0.25, 0.25,
0.25],
patchlabel="Widget\nA") # Arguments to matplotlib.patches.PathPatch
diagrams = sankey.finish()
diagrams[0].texts[-1].set_color('r')
diagrams[0].text.set_fontweight('bold')
注意
由于流量之和不为零,因此主干的宽度不均匀。 matplotlib 日志系统在 DEBUG 级别记录了这一点。
第二个流量未显示,因为它的值为零。 同样,这将在 DEBUG 级别记录。
示例 3
这演示了
连接两个系统
关闭数量的标签
添加图例
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[], title="Two Systems")
flows = [0.25, 0.15, 0.60, -0.10, -0.05, -0.25, -0.15, -0.10, -0.35]
sankey = Sankey(ax=ax, unit=None)
sankey.add(flows=flows, label='one',
orientations=[-1, 1, 0, 1, 1, 1, -1, -1, 0])
sankey.add(flows=[-0.25, 0.15, 0.1], label='two',
orientations=[-1, -1, -1], prior=0, connect=(0, 0))
diagrams = sankey.finish()
diagrams[-1].patch.set_hatch('/')
plt.legend()
请注意,仅指定了一个连接,但是由于以下原因,系统形成一个回路:(1) 路径的长度是对齐的;(2) 流量的方向和顺序是镜像的。
plt.show()
参考
此示例中显示了以下函数、方法、类和模块的使用
脚本的总运行时间:(0 分钟 1.510 秒)