サンキー図の作成

PythonPythonBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

サンキー図は、異なる段階やシステム間での資源やエネルギーの移動を示すフローダイアグラムです。このチュートリアルでは、PythonのMatplotlibライブラリを使ってサンキー図を作成します。

VMのヒント

VMの起動が完了したら、左上隅をクリックしてノートブックタブに切り替え、Jupyter Notebookを使って練習しましょう。

時々、Jupyter Notebookが読み込み完了するまで数秒待つ必要があります。Jupyter Notebookの制限により、操作の検証を自動化することはできません。

学習中に問題に遭遇した場合は、Labbyにお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。

必要なライブラリをインポートする

サンキー図を作成する前に、必要なライブラリをインポートする必要があります。このチュートリアルでは、Matplotlibライブラリを使用します。

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

シンプルなサンキー図を作成する

まずは、Sankeyクラスの使い方を示すシンプルなサンキー図を作成します。

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.")

このコードは、デフォルト設定でサンキー図を生成します。これには、フローのラベルと方向が含まれます。生成された図は、タイトル「The default settings produce a diagram like this.」とともに表示されます。

サンキー図をカスタマイズする

フロー、ラベル、方向、その他のパラメータを変更することで、サンキー図をカスタマイズできます。この例では、より長いパスと途中のラベルを持つ図を作成します。

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')

このコードは、より長いパス、途中のラベル、その他のカスタマイズされたパラメータを持つサンキー図を作成します。生成された図は、タイトル「Flow Diagram of a Widget」とともに表示されます。

サンキー図で2つのシステムを接続する

サンキー図では2つのシステムを接続することもできます。この例では、接続された2つのシステムを持つ図を作成します。

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つのシステムを持つサンキー図を作成します。生成された図は、タイトル「Two Systems」とともに表示されます。

まとめ

このチュートリアルでは、PythonのMatplotlibライブラリを使ってサンキー図を作成する方法を学びました。まずシンプルな図から始め、その後、フロー、ラベル、方向、その他のパラメータを変更することでカスタマイズしました。また、サンキー図で2つのシステムを接続する方法も学びました。これらのツールを使えば、さまざまなアプリケーションに対して情報が豊富で視覚的に魅力的なフロー図を作成できます。