06.7.25
サンキーダイアグラムでフロー分岐を把握
go.Sankey は、ノードの名前のリストと、リンクごとの source(出発ノードの番号)・target(到着ノードの番号)・value(流量)の 3 つのリストを渡すだけで配置を自動計算し、ホバーで流量を確認できる HTML を出力します。読み終えると、流入 1,000 件のうち 420 件が無料登録に進み、そのうち 260 件が有料化する経路が最も太い帯になる理由を理解し、自分の遷移データを 3 つのリストに整えて描けるようになります。直感 #
サイトに来た 1,000 人のうち 420 人が無料登録、280 人がカートで離脱、200 人が FAQ を見て、100 人が直帰したとします。さらに無料登録の 420 人は 260 人が有料化、100 人が再来訪、60 人が離脱に分かれます。この 2 段階の分岐を表で読むには足し算と引き算が要りますが、サンキーダイアグラムは人数をそのまま帯の太さにして左から右へ流します。太い帯が主要経路、細い帯が少数派で、ノードの左右の帯の太さの合計は必ず一致します(入った分だけ出ていく)。有料化のノードまで帯をたどれば、どの段で何人が別の経路へ逃げたかが読めます。
Python で描く #
次のコードは 8 つのノードと 7 本のリンクを定義し、go.Sankey でインタラクティブなフロー図を作ります。write_html でブラウザ共有用の HTML を、write_image でドキュメント用の静的 PNG を書き出します。
| |

実行結果の読み方 #
帯の太さが人数で、流入から出る 4 本のうち無料登録への 420 の帯が最も太く、直帰への 100 が最も細くなります。無料登録ノードから右へ出る 3 本の帯の合計は左から入る帯と同じ太さで、そのうち有料化への 260 が最も太いので、「流入 → 無料登録 → 有料化」が主要経路だと読めます。ボトルネックを探すなら、特定の出口(たとえば有料化)に向かう帯を右から左へたどり、途中でどのノードから何人が別の方向に逃げたかを帯の分岐で確認します。HTML 版では帯にマウスを乗せると source → target: value の数値が表示されます。
使いどころと落とし穴 #
サンキーダイアグラムは、顧客の遷移経路やコストの配分、エネルギーの流れのように、複数段階で枝分かれする量を関係者に見せるときに向いています。段階が 5 を超えるとリンクが左右に広がって追跡が難しくなるので、主要な 3〜4 段階に集約し、細かい分岐は別の図に分けてください。ノードが 15 を超えると帯が交差して絡み合うため、value の小さいリンクをまとめて「その他」ノードに寄せると読みやすくなります。すべてのリンクを 1 色にすると分岐先が追えないので、この例のように出発ノードの色で塗り分けます。段階ごとの歩留まりだけを見せたいなら、分岐のないファネルチャートの方が説明なしで伝わります。