桑基图类

通过生成三个基本图表来演示Sankey类。

  1. import matplotlib.pyplot as plt
  2. from matplotlib.sankey import Sankey

示例1 - 主要是默认值

这演示了如何通过隐式调用Sankey.add()方法并将finish()附加到类的调用来创建一个简单的图。

  1. Sankey(flows=[0.25, 0.15, 0.60, -0.20, -0.15, -0.05, -0.50, -0.10],
  2. labels=['', '', '', 'First', 'Second', 'Third', 'Fourth', 'Fifth'],
  3. orientations=[-1, 1, 0, 1, 1, 1, 0, -1]).finish()
  4. plt.title("The default settings produce a diagram like this.")

桑基图类示例

注意:

示例2

这表明:

  1. fig = plt.figure()
  2. ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[],
  3. title="Flow Diagram of a Widget")
  4. sankey = Sankey(ax=ax, scale=0.01, offset=0.2, head_angle=180,
  5. format='%.0f', unit='%')
  6. sankey.add(flows=[25, 0, 60, -10, -20, -5, -15, -10, -40],
  7. labels=['', '', '', 'First', 'Second', 'Third', 'Fourth',
  8. 'Fifth', 'Hurray!'],
  9. orientations=[-1, 1, 0, 1, 1, 1, -1, -1, 0],
  10. pathlengths=[0.25, 0.25, 0.25, 0.25, 0.25, 0.6, 0.25, 0.25,
  11. 0.25],
  12. patchlabel="Widget\nA") # Arguments to matplotlib.patches.PathPatch()
  13. diagrams = sankey.finish()
  14. diagrams[0].texts[-1].set_color('r')
  15. diagrams[0].text.set_fontweight('bold')

桑基图类示例2

注意:

示例3

这表明:

  1. fig = plt.figure()
  2. ax = fig.add_subplot(1, 1, 1, xticks=[], yticks=[], title="Two Systems")
  3. flows = [0.25, 0.15, 0.60, -0.10, -0.05, -0.25, -0.15, -0.10, -0.35]
  4. sankey = Sankey(ax=ax, unit=None)
  5. sankey.add(flows=flows, label='one',
  6. orientations=[-1, 1, 0, 1, 1, 1, -1, -1, 0])
  7. sankey.add(flows=[-0.25, 0.15, 0.1], label='two',
  8. orientations=[-1, -1, -1], prior=0, connect=(0, 0))
  9. diagrams = sankey.finish()
  10. diagrams[-1].patch.set_hatch('/')
  11. plt.legend()

桑基图类示例3

请注意,只指定了一个连接,但系统形成一个电路,因为:(1)路径的长度是合理的,(2)流的方向和顺序是镜像的。

  1. plt.show()

参考

此示例中显示了以下函数,方法,类和模块的使用:

  1. import matplotlib
  2. matplotlib.sankey
  3. matplotlib.sankey.Sankey
  4. matplotlib.sankey.Sankey.add
  5. matplotlib.sankey.Sankey.finish

下载这个示例