サンバーストチャートで階層構成を円環で表現

中級

6.6.5

サンバーストチャートで階層構成を円環で表現

最終更新 2026-03-06 読了時間 2 分
まとめ
  • 階層データを同心円のリング状に描画し、全体に対する各レベルの構成比を直感的に把握する。
  • plotly.express.sunburst で階層と値を指定するだけでインタラクティブなチャートが生成される。
  • 組織構成、ファイルサイズ階層、予算配分など、3 階層以上のツリーデータを俯瞰したいときに使う。

サンバーストチャートは円グラフをネストした形式で、内側のリングが上位階層、外側が下位階層を表す。Plotly ではセクションをクリックしてドリルダウンでき、探索的な分析に向いている。

 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
import plotly.express as px
import pandas as pd

data = pd.DataFrame([
    # 事業部 → 部門 → チーム
    {"事業部": "プロダクト", "部門": "開発", "チーム": "バックエンド", "人数": 12},
    {"事業部": "プロダクト", "部門": "開発", "チーム": "フロントエンド", "人数": 8},
    {"事業部": "プロダクト", "部門": "開発", "チーム": "インフラ", "人数": 5},
    {"事業部": "プロダクト", "部門": "デザイン", "チーム": "UI", "人数": 4},
    {"事業部": "プロダクト", "部門": "デザイン", "チーム": "UXリサーチ", "人数": 3},
    {"事業部": "プロダクト", "部門": "QA", "チーム": "手動テスト", "人数": 3},
    {"事業部": "プロダクト", "部門": "QA", "チーム": "自動テスト", "人数": 2},
    {"事業部": "ビジネス", "部門": "営業", "チーム": "法人", "人数": 10},
    {"事業部": "ビジネス", "部門": "営業", "チーム": "個人", "人数": 6},
    {"事業部": "ビジネス", "部門": "マーケ", "チーム": "デジタル", "人数": 5},
    {"事業部": "ビジネス", "部門": "マーケ", "チーム": "オフライン", "人数": 3},
    {"事業部": "管理", "部門": "人事", "チーム": "採用", "人数": 4},
    {"事業部": "管理", "部門": "人事", "チーム": "労務", "人数": 2},
    {"事業部": "管理", "部門": "経理", "チーム": "財務", "人数": 3},
    {"事業部": "管理", "部門": "経理", "チーム": "経費", "人数": 2},
])

fig = px.sunburst(
    data,
    path=["事業部", "部門", "チーム"],
    values="人数",
    color="事業部",
    color_discrete_map={"プロダクト": "#2563eb", "ビジネス": "#10b981", "管理": "#f59e0b"},
    title="組織構成サンバーストチャート",
)
fig.update_layout(width=600, height=600, margin=dict(t=50, l=0, r=0, b=0))

fig.show()

組織構成を表すサンバーストチャート

読み方のポイント #

  • 内側のリングほど上位階層。セクションの角度が全体に占める割合を示す。
  • 外側リングの幅から、下位チームの相対的な規模感がわかる。上の例ではプロダクト事業部の開発部門が最大。
  • Plotly のインタラクティブ版では、セクションをクリックするとそこを新たな中心にドリルダウンできる。

いつ使うか #

  • 適している場面: 2〜4 階層のツリー構造で、各レベルの構成比を同時に見たいとき。予算配分、組織構成、ディスク使用量など。
  • 不向きな場面: 階層が 5 以上になるとリングが細くなりすぎて読めない。リーフノードが 50 以上あるとラベルが潰れる。
  • 代替手段: 階層の深さが 2 までなら円グラフ/ドーナツで十分。面積比較を正確にしたいならツリーマップの方が適切。

よくある失敗パターン #

  • 色の使いすぎ: リーフノードごとに色を変えると色数が多すぎて混乱する。最上位階層で色分けし、下位は同系色のグラデーションにする。
  • ラベルの省略判断: 小さいセクションにラベルを表示すると文字が重なる。Plotly は自動で省略するが、静的画像に書き出す場合は textinfoinsidetextorientation で制御する。