跳轉至

建立 2026-10-13 更新 2026-10-13

比例與階層圖

比例與階層圖回答「各部分佔整體多少」。單一層級的比例用圓餅圖(px.pie);有階層(例如洲 → 國家、部門 → 團隊)時,用旭日圖(px.sunburst)、樹狀圖(px.treemap)或冰柱圖(px.icicle),三者都能點擊下鑽;流程中每一階段的留存數量,用漏斗圖(px.funnel、px.funnel_area)。

圓餅圖 px.pie

圓餅圖使用 names(類別)與 values(數值),而不是 x、y。同一類別有多筆資料時會自動加總。

import plotly.express as px

df = px.data.tips()
fig = px.pie(df, names="day", values="tip", hole=0.4,
             title="各星期小費總額佔比")
fig.update_traces(textinfo="percent+label")
fig.show()
  • hole=0.4:變成甜甜圈圖(donut chart)。
  • textinfo:扇形上顯示的內容,可組合 "label"、"percent"、"value"。
  • 類別太多時,先把小類別合併成「其他」,圓餅圖超過 5~6 塊就很難閱讀;這時改用長條圖通常更清楚。

旭日圖 px.sunburst

旭日圖用同心圓呈現階層:最內圈是最上層,往外一圈是下一層。最簡單的寫法是用 path 依序列出階層欄位:

import plotly.express as px

df = px.data.gapminder().query("year == 2007")
fig = px.sunburst(df, path=["continent", "country"], values="pop",
                  color="lifeExp", color_continuous_scale="RdBu")
fig.show()

點擊任一扇形會放大到該層,點中心可以回到上一層。

參數 說明
path 階層欄位 list,由外層(根)到內層(葉),資料需為長格式
values 扇形大小;未指定時以筆數計算
color 類別欄位用離散色;數值欄位用連續色階,父節點顏色為子節點的加權平均
maxdepth 一次最多顯示幾層
names、parents、ids 不用 path 時,以「節點 – 父節點」的形式描述樹狀結構

樹狀圖 px.treemap

樹狀圖用巢狀矩形呈現同樣的階層資料,比旭日圖更能容納大量的葉節點,文字也比較好排。參數與 px.sunburst 完全相同。

fig = px.treemap(df, path=[px.Constant("世界"), "continent", "country"],
                 values="pop", color="lifeExp", color_continuous_scale="RdBu")
fig.update_traces(root_color="lightgrey")
fig.show()

px.Constant("世界") 在最上層加一個所有資料共用的根節點,讓使用者可以從各洲回到「世界」總覽。

冰柱圖 px.icicle

冰柱圖把階層畫成由上而下(或由左而右)的長條,適合階層很深、需要看清楚每一層的情況:

px.icicle(df, path=[px.Constant("世界"), "continent", "country"], values="pop")

漏斗圖 px.funnel、px.funnel_area

漏斗圖呈現流程中各階段的數量遞減,例如網站「瀏覽 → 加入購物車 → 結帳 → 付款」。

import pandas as pd
import plotly.express as px

data = pd.DataFrame({
    "階段": ["瀏覽", "加入購物車", "結帳", "付款完成"],
    "人數": [10000, 3200, 1500, 980],
})
fig = px.funnel(data, x="人數", y="階段")
fig.update_traces(textinfo="value+percent initial")  # 顯示數量與相對第一階段的比例
fig.show()

px.funnel_area 是面積版本,參數和圓餅圖一樣使用 names 與 values。

該選哪一種?

情境 建議
單層、類別少(5 個以內) pie(或甜甜圈)
單層、類別多或要精確比較 bar 比圓餅圖好讀
有階層、想強調層級結構 sunburst
有階層、葉節點很多 treemap
有階層、層數深 icicle
流程轉換率 funnel

推薦影音

Sunburst Treemap Tutorial - Plotly(Charming Data)

簡述:用不到 30 行 Plotly Express 建立旭日圖與樹狀圖,示範 path、顏色、懸停資訊與樣式調整,並說明階層資料的整理方式。對應本頁「旭日圖」與「樹狀圖」兩節。

Create Icicle Charts with Plotly Express(Charming Data)

簡述:示範冰柱圖的詞彙(根、分支、葉)、增減階層、離散與連續配色,以及改變繪製方向。對應本頁「冰柱圖」一節。

相關頁面