共通參數全攻略
Plotly Express 的所有繪圖函式共用同一套參數名稱:x、y 決定位置,color、size、symbol 決定外觀,facet_row、facet_col 把圖拆成小圖,hover_name、hover_data 控制懸停資訊,labels、title、template 控制文字與風格。學會這一頁,就等於學會了大部分的 Plotly Express。
本頁範例都使用內建的餐廳小費資料集 tips:
import plotly.express as px
df = px.data.tips()
df.head()
# total_bill tip sex smoker day time size
# 0 16.99 1.01 Female No Sun Dinner 2
# 1 10.34 1.66 Male No Sun Dinner 3
參數速查表
| 類別 | 參數 | 作用 |
|---|---|---|
| 資料 | data_frame |
第一個參數,傳入 DataFrame |
| 位置 | x、y、z(3D)、r/theta(極座標)、lat/lon(地圖) |
欄位對應到座標 |
| 外觀 | color、size、symbol、line_dash、pattern_shape、text、opacity |
欄位對應到顏色、大小、標記形狀、線型、填充花紋、文字 |
| 分面 | facet_row、facet_col、facet_col_wrap、facet_row_spacing、facet_col_spacing |
依類別拆成小圖 |
| 動畫 | animation_frame、animation_group |
依欄位值逐格播放 |
| 懸停 | hover_name、hover_data、custom_data |
滑鼠移上去時顯示的資訊 |
| 誤差 | error_x、error_y、error_x_minus、error_y_minus |
誤差線 |
| 順序 | category_orders |
指定類別的排列順序 |
| 顏色 | color_discrete_sequence、color_discrete_map、color_continuous_scale、range_color、color_continuous_midpoint |
配色 |
| 座標軸 | log_x、log_y、range_x、range_y、orientation |
刻度與範圍 |
| 邊際圖 | marginal_x、marginal_y(scatter、histogram、density_*) |
在主圖邊緣加小分布圖 |
| 文字 | title、subtitle、labels |
標題、副標題、欄位顯示名稱 |
| 版面 | template、width、height |
風格模板與尺寸 |
並非每個函式都有所有參數,例如 px.pie 沒有 x、y,而是 names、values。實際可用參數請以 help(px.函式) 為準。
位置:x、y
最基本的用法是傳入欄位名稱字串:
也可以傳入 pandas Series 或 list(長度要與 DataFrame 相同),或者傳入欄位名稱的 list 來畫寬格式資料(見 長格式與寬格式資料)。
外觀對應:color、size、symbol
px.scatter(df, x="total_bill", y="tip",
color="time", # 類別欄位 → 每組一種顏色(離散)
size="size", # 數值欄位 → 點的大小
symbol="smoker") # 類別欄位 → 點的形狀
color 的行為取決於欄位型別:
- 類別欄位(字串、布林、
category):每個類別一種顏色,產生多條 trace,圖例可點擊篩選。 - 數值欄位:使用連續色階,右側出現色條(colorbar)。
想讓數值欄位被當成類別處理(例如 size 只有 1~6),先轉成字串:df["size"].astype(str)。
分面:facet_row、facet_col
facet_col 依欄位值把圖拆成左右排列的小圖,facet_row 拆成上下排列。類別很多時用 facet_col_wrap 自動換行:
詳細說明與範例見 分面與動畫。
懸停資訊:hover_name、hover_data
px.scatter(df, x="total_bill", y="tip",
hover_name="day", # 懸停框標題(粗體)
hover_data={"size": True, # 額外顯示 size
"sex": True,
"total_bill": ":.1f", # 改格式:小數一位
"tip": False}) # 不顯示 tip
hover_data 可以是欄位名稱的 list,或是 dict:值為 True/False 表示顯示/隱藏,值為字串則是 d3 格式 的數字格式(例如 ":.2f"、":,"、":.1%")。想完全自訂懸停框,可以用 fig.update_traces(hovertemplate=...),見 樣式與客製化。
顯示名稱:labels、title
labels 把欄位名稱換成要顯示的文字,同時套用到座標軸、圖例與懸停框:
px.scatter(df, x="total_bill", y="tip", color="sex",
labels={"total_bill": "帳單金額(美元)", "tip": "小費(美元)", "sex": "性別"},
title="小費與帳單金額", subtitle="資料來源:px.data.tips()")
類別順序:category_orders
類別預設依資料出現順序排列。星期、月份、等級這類有自然順序的資料,用 category_orders 指定:
配色參數
| 參數 | 用途 | 範例 |
|---|---|---|
color_discrete_sequence |
類別顏色依序使用的色盤 | px.colors.qualitative.Set2 |
color_discrete_map |
指定每個類別的顏色 | {"Male": "steelblue", "Female": "tomato"} |
color_continuous_scale |
連續色階 | "Viridis"、px.colors.sequential.Blues |
range_color |
連續色階的數值範圍 | [0, 100] |
color_continuous_midpoint |
發散色階的中點 | 0 |
px.scatter(df, x="total_bill", y="tip", color="sex",
color_discrete_map={"Male": "steelblue", "Female": "tomato"})
更多配色說明見 樣式與客製化。
座標軸:log_x、range_x、orientation
px.scatter(px.data.gapminder(), x="gdpPercap", y="lifeExp",
log_x=True, # X 軸改成對數刻度
range_y=[20, 90]) # 固定 Y 軸範圍
長條圖、箱形圖等可以用 orientation="h" 改成水平方向;通常只要把 x、y 對調,Plotly Express 也會自動判斷方向。
尺寸與模板:width、height、template
常用模板:plotly(預設)、plotly_white、plotly_dark、simple_white、ggplot2、seaborn、presentation、none。全域預設值可用 px.defaults 設定:
px.defaults.template = "plotly_white"
px.defaults.width = 700
px.defaults.height = 450
px.defaults.color_discrete_sequence = px.colors.qualitative.Safe
設定後,之後所有 px 函式都會套用這些預設值,適合放在 Notebook 第一格。
常見錯誤
| 錯誤訊息或狀況 | 原因與解法 |
|---|---|
ValueError: Value of 'x' is not the name of a column |
欄位名稱打錯(大小寫、空白),先 print(df.columns) 確認 |
| 數值被畫成類別、長條很奇怪 | 欄位型別是字串,用 pd.to_numeric 轉換 |
| 想要離散顏色卻出現色條 | color 欄位是數值,用 .astype(str) 轉成類別 |
| 星期、月份順序亂掉 | 用 category_orders 指定順序 |
| 長條圖有很多細橫線 | 同一個 x 有多筆資料,長條是逐筆堆疊;先 groupby().sum() 或改用 px.histogram(..., histfunc="sum") |
推薦影音
How to use Plotly Express to create professional graphs in minutes!(Analytics with Adam)
簡述:5 分鐘示範 Plotly Express 的基本模式:一個函式加上 color、size、hover_data、facet 等參數,快速做出專業的互動圖。適合讀完本頁後當成複習。
相關頁面
- 參數用在各類圖表:基本圖表
- 更細的外觀調整:樣式與客製化
- 官方說明:Plotly Express Arguments