サンキーダイアグラム

中級

6.1.4

サンキーダイアグラム

最終更新 2020-03-11 読了時間 1 分
まとめ
  • サンキーダイアグラムでステップ間の流量や配分の変化を可視化する。
  • plotly.graph_objects.Sankey でノードとリンクを定義して描画する。
  • 損益計算書やユーザーフローなど、資源の流れを俯瞰するのに使う。

サンキーダイアグラムはステップ間の流量を表現する図表であり、金額や資源の割り当てがどのように変化しているかを可視化するのに活用することができます。線の太さが割り当てられた流れの量を示しています。このページではplotlyを使ってpython上でサンキーダイアグラムを作成します。

以下は『Genco Shipping & Trading Limited』のある期の損益を可視化してみたものであり、最新のデータではないので注意してください

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import plotly.graph_objects as go

fig = go.Figure(
    data=[
        go.Sankey(
            node=dict(
                pad=300,
                thickness=20,
                line=dict(color="white", width=0.0),
                label=[
                    "Voyage revenues",
                    "Total revenues",
                    "Total operating expenses",
                    "Net income",
                    "Voyage expenses",
                    "Vessel operating expenses",
                    "Charter hire expenses",
                    "General and administrative expenses",
                    "Depreciation and amortization",
                ],
                color=[
                    "#666666",
                    "#666666",
                    "#CC0001",
                    "#2BA02D",
                    "#CC0001",
                    "#CC0001",
                    "#CC0001",
                    "#CC0001",
                    "#CC0001",
                ],
            ),
            link=dict(
                source=[0, 1, 1, 2, 2, 2, 2, 2],
                target=[1, 2, 3, 4, 5, 6, 7, 8],
                value=[121008, 84759, 36249, 36702, 18789, 8325, 5854, 13769],
                color=[
                    "#B3B3B3",
                    "#E18685",
                    "#9CCC9A",
                    "#E18685",
                    "#E18685",
                    "#E18685",
                    "#E18685",
                    "#E18685",
                ],
            ),
        )
    ]
)

fig.update_layout(
    title_text="Condensed Consolidated Statements of Operations", font_size=18
)
fig.show()

サンキーダイアグラムの図

いつ使うか #

  • 適している場面: ステップ間の流量や配分の変化(顧客動線やコスト配分など)を帯の太さで表現したいとき。
  • 不向きな場面: ノード数やリンク数が多すぎるとフローが交差して追いにくくなります。
  • 代替手段: 単純な段階別のドロップ率を見たいだけならファネルチャートの方がシンプルです。

よくある失敗パターン #

  • ノード数の過多: ノードやリンクが多すぎるとフローが絡み合い追跡が困難になります。主要な経路に集約し、細いフローは「その他」にまとめましょう。
  • 色の意味が不統一: ノードとリンクの色の使い方が場当たり的だとフローの追跡が混乱します。同じカテゴリには同じ色を一貫して使ってください。