サンキークラス#

3 つの基本的な図を作成して、Sankey クラスのデモを行います。

import matplotlib.pyplot as plt

from matplotlib.sankey import Sankey

例 1 -- ほとんどがデフォルト

これは、Sankey.add() メソッドを暗黙的に呼び出し、クラスへの呼び出しに finish() を追加することによって、単純な図を作成する方法を示しています。

Sankey(flows=[0.25, 0.15, 0.60, -0.20, -0.15, -0.05, -0.50, -0.10],
       labels=['', '', '', 'First', 'Second', 'Third', 'Fourth', 'Fifth'],
       orientations=[-1, 1, 0, 1, 1, 1, 0, -1]).finish()
plt.title("The default settings produce a diagram like this.")
デフォルト設定では、このような図が生成されます。
Text(0.5, 1.0, 'The default settings produce a diagram like this.')

知らせ:

  1. Sankey() がインスタンス化されたときに軸が提供されなかったため、自動的に作成されました。

  2. データは既に正規化されているため、scale 引数は必要ありませんでした。

  3. デフォルトでは、パスの長さは揃えられます。

例 2

これは次のことを示しています。

  1. 1 つのパスを他のパスよりも長く設定する

  2. 図の中央にラベルを配置する

  3. スケール引数を使用してフローを正規化する

  4. PathPatch() にキーワード引数を暗黙的に渡す

  5. 矢じりの角度の変更

  6. パスの先端とそのラベルの間のオフセットを変更する

  7. パス ラベルの数値と関連する単位の書式設定

  8. Figure の作成後にパッチとラベルの外観を変更する

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')
ウィジェットのフロー図

知らせ:

  1. フローの合計がゼロでないため、幹の幅は均一ではありません。matplotlib ログ システムは、これを DEBUG レベルでログに記録します。

  2. 2 番目のフローは、値が 0 であるため表示されません。繰り返しますが、これは DEBUG レベルでログに記録されます。

例 3

これは次のことを示しています。

  1. 2 つのシステムを接続する

  2. 数量のラベルをオフにする

  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()
2 つのシステム
<matplotlib.legend.Legend object at 0x7f2cdd75b5e0>

1 つの接続のみが指定されていることに注意してください。ただし、(1) パスの長さが正当化され、(2) フローの向きと順序がミラーリングされるため、システムは回路を形成します。

参考文献

この例では、次の関数、メソッド、クラス、およびモジュールの使用が示されています。

スクリプトの合計実行時間: ( 0 分 1.040 秒)

Sphinx-Gallery によって生成されたギャラリー