比例與階層圖
比例與階層圖回答「各部分佔整體多少」。單一層級的比例用圓餅圖(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.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)
簡述:示範冰柱圖的詞彙(根、分支、葉)、增減階層、離散與連續配色,以及改變繪製方向。對應本頁「冰柱圖」一節。