matplotlib.sankey#

用于使用 Matplotlib 创建桑基图的模块。

matplotlib.sankey.Sankey(ax=None, scale=1.0, unit='', format='%G', gap=0.25, radius=0.1, shoulder=0.03, offset=0.15, head_angle=100, margin=0.4, tolerance=1e-06, **kwargs)[源代码]#

基类: object

桑基图。

桑基图是一种特定类型的流程图,其中箭头的宽度与流量成比例显示。它们通常用于可视化过程之间的能量、材料或成本转移。Wikipedia (6/1/2011)

创建一个新的 Sankey 实例。

下面列出的可选参数适用于所有子图,以确保一致的对齐和格式设置。

为了绘制复杂的桑基图,通过不带任何 `kwargs` 参数调用来创建一个 Sankey 实例。

sankey = Sankey()

然后添加简单的桑基子图

sankey.add() # 1
sankey.add() # 2
#...
sankey.add() # n

最后,创建完整图表

sankey.finish()

或者,也可以简单地将这些调用链式连接起来

Sankey().add().add...  .add().finish()
其他参数:
axAxes

数据应绘制到的坐标轴。如果未提供 *ax*,则将创建新的坐标轴。

scale浮点数

流量的缩放因子。*scale* 用于调整路径的宽度以保持适当的布局。所有子图都应用相同的比例。应选择一个值,使得比例与输入总和的乘积大约为 1.0(并且比例与输出总和的乘积大约为 -1.0)。

unit字符串

与流量数量关联的物理单位。如果 *unit* 为 None,则不标注任何数量。

format字符串或可调用对象

用于标记流量数量的 Python 数字格式字符串或可调用对象(即,一个数字乘以一个单位,其中单位是给定的)。如果给定格式字符串,标签将是 format % quantity。如果给定可调用对象,它将以 quantity 作为参数被调用。

gap浮点数

从顶部或底部断入/断开的路径之间的空间。

radius浮点数

垂直路径的内半径。

shoulder浮点数

输出箭头的肩部大小。

offset浮点数

文本偏移(相对于箭头的凹陷或尖端)。

head_angle浮点数

箭头头部的角度(以度为单位)(以及箭头尾部角度的负值)。

margin浮点数

桑基图轮廓线与绘图区域边缘之间的最小空间。

tolerance浮点数

流量总和幅度的可接受最大值。连接流量总和的幅度不能大于 *tolerance*。

**kwargs

任何额外的关键字参数都将传递给 add,它将创建第一个子图。

另请参阅

Sankey.add
Sankey.finish

示例

(源代码)

(2x.png, png)

(2x.png, png)

(2x.png, png)

add(patchlabel='', flows=None, orientations=None, labels='', trunklength=1.0, pathlengths=0.25, prior=None, connect=(0, 0), rotation=0, **kwargs)[源代码]#

添加一个具有相同层次级别流量的简单桑基图。

参数:
patchlabel字符串

要放置在图表中心的标签。请注意,*label*(而不是 *patchlabel*)可以作为关键字参数传递,以在图例中创建条目。

flows浮点数列表

流量值数组。按照惯例,输入为正,输出为负。

流量沿图表的顶部从内到外按其在 *flows* 中的索引顺序放置。它们沿图表的侧面从上到下放置,并沿底部从外到内放置。

如果输入和输出的总和非零,则差异将作为一条三次贝塞尔曲线沿主干的顶部和底部边缘显示。

orientations{-1, 0, 1} 列表

流量方向列表(或用于所有流量的单个方向)。有效值是 0(从左侧输入,向右侧输出)、1(从顶部进出)或 -1(从底部进出)。

labels(字符串或 None)列表

流量标签列表(或用于所有流量的单个标签)。每个标签可以是 *None*(无标签),或一个标签字符串。如果条目是(可能为空的)字符串,则相应流量的数量将显示在字符串下方。但是,如果主图的 *unit* 为 None,则无论此参数的值如何,都不会显示数量。

trunklength浮点数

输入和输出组基线之间的长度(以数据空间单位计)。

pathlengths浮点数列表

垂直箭头在进入前或脱离后的长度列表。如果给定单个值,它将应用于顶部和底部的第一个(内部)路径,并且所有其他箭头的长度将相应地调整。*pathlengths* 不适用于水平输入和输出。

prior整数

此图应连接到的上一个图的索引。

connect(整数,整数)

一个 (prior, this) 元组,索引上一个图的流量和此图应连接的流量。如果这是第一个图或 *prior* 为 *None*,则 *connect* 将被忽略。

rotation浮点数

图表的旋转角度(以度为单位)。*orientations* 参数的解释将相应旋转(例如,如果 *rotation* == 90,则 *orientations* 值为 1 意味着从左侧进出)。如果此图连接到现有图(使用 *prior* 和 *connect*),则 *rotation* 将被忽略。

返回:
Sankey

当前的 Sankey 实例。

其他参数:
**kwargs

其他关键字参数设置 matplotlib.patches.PathPatch 属性,如下所示。例如,可能需要使用 fill=Falselabel="A legend entry"

属性

描述

agg_filter

一个过滤函数,它接受一个 (m, n, 3) 浮点数组和一个 dpi 值,并返回一个 (m, n, 3) 数组以及图像左下角的两个偏移量

alpha

未知

animated

布尔值

antialiasedaa

布尔值或 None

capstyle

CapStyle 或 {'butt', 'projecting', 'round'}

clip_box

BboxBase 或 None

clip_on

布尔值

clip_path

Patch 或 (Path, Transform) 或 None

color

color

edgecolorec

颜色 或 None

facecolorfc

颜色 或 None

figure

FigureSubFigure

fill

布尔值

gid

字符串

hatch

{'/', '\', '|', '-', '+', 'x', 'o', 'O', '.', '*'}

hatch_linewidth

未知

in_layout

布尔值

joinstyle

JoinStyle 或 {'miter', 'round', 'bevel'}

label

对象

linestylels

{'-', '--', '-.', ':', '', (offset, on-off-seq), ...}

linewidthlw

浮点数或 None

mouseover

布尔值

path_effects

AbstractPathEffect 列表

picker

None 或 布尔值 或 浮点数 或 可调用对象

rasterized

布尔值

sketch_params

(scale: 浮点数, length: 浮点数, randomness: 浮点数)

snap

布尔值或 None

transform

变换

url

字符串

visible

布尔值

zorder

浮点数

另请参阅

Sankey.finish
finish()[源代码]#

调整坐标轴并返回有关桑基子图的信息列表。

返回一个包含以下字段的子图列表

字段

描述

patch

桑基图轮廓(一个 PathPatch)。

flows

流量值(输入为正,输出为负)。

angles

箭头的角度列表 [度/90]。例如,如果图表未旋转,则顶部的输入角度为 3(向下),顶部的输出角度为 1(向上)。如果某个流量已被跳过(因为其幅度小于 *tolerance*),则其角度将为 *None*。

tips

流量路径尖端(或“凹陷”)的 (x, y) 位置的 (N, 2) 数组。如果流量的幅度小于此 Sankey 实例的 *tolerance*,则该流量将被跳过,其尖端将位于图表中心。

text

图表标签的 Text 实例。

texts

流量标签的 Text 实例列表。

另请参阅

Sankey.add