此書被預約須還, 今天拿去投還書箱 :
此書改寫自 iThome 鐵人賽冠軍作品, 著重在 React 底層原理與核心觀念的介紹, 是非常新 (2024) 且能鍛鍊前端基本功的好書. 但我最近並沒時間學習 React, 前陣子借的 React 書幾乎都還回去了, 只剩 "從Hooks開始 讓你的網頁React起來" 這本 :
等有空再回借吧!| 參數名稱 | 說明 |
|---|---|
| rows | 子圖的列數(預設為 1) |
| cols | 子圖的欄數(預設為 1) |
| shared_xaxes | 是否共用 X 軸(True / False / 'all' / 'rows' / 'columns') |
| shared_yaxes | 是否共用 Y 軸(True / False / 'all' / 'rows' / 'columns') |
| start_cell | 子圖起始位置('top-left' 或 'bottom-left') |
| subplot_titles | 每個子圖的標題(list) |
| specs | 自訂每個子圖的型態與配置(例如 type='xy', 'domain', 'scene' 等) |
| row_heights | 各列高度比例(list,例如 [0.7, 0.3]) |
| column_widths | 各欄寬度比例(list,例如 [0.6, 0.4]) |
| horizontal_spacing | 子圖之間的水平間距(0~1) |
| vertical_spacing | 子圖之間的垂直間距(0~1) |
| insets | 設定內嵌子圖(inset charts)的位置與大小 |
| column_titles | 每一欄的標題(list) |
| row_titles | 每一列的標題(list) |
| x_title | 整體 X 軸標題 |
| y_title | 整體 Y 軸標題 |
| figure | 將子圖加入既有的 Figure 物件 |
| 參數名稱 | 說明 |
|---|---|
| x | 時間序列數據(通常為日期字串或 datetime 物件)。 |
| open | 開盤價序列 (Open prices)。 |
| high | 最高價序列 (High prices)。 |
| low | 最低價序列 (Low prices)。 |
| close | 收盤價序列 (Close prices)。 |
| increasing_line_color | 上漲時 K 線外框與影線的顏色(例:'red')。 |
| decreasing_line_color | 下跌時 K 線外框與影線的顏色(例:'green')。 |
| name | 此數據序列在圖例中顯示的名稱。 |
| text | 滑鼠懸停時顯示的額外文字內容。 |
| hoverinfo | 設定懸停顯示的資訊內容(如 'all', 'x+y' 等)。 |
| opacity | 設定 K 線圖層的透明度(0.0 到 1.0)。 |
| whiskerwidth | 設定上下影線相對於 K 線實體寬度的比例。 |
| 參數名稱 | 說明 |
|---|---|
| title | 圖表標題。可傳入字串或 dict(包含 text, font, x, y 等屬性)。預設為 None。 |
| width / height | 設定畫布的寬度與高度(像素)。預設通常隨容器自動縮放。 |
| xaxis / yaxis | 設定座標軸屬性(如標題、範圍、網格)。例如 xaxis_title='時間'。 |
| xaxis_rangeslider_visible | 設定 X 軸下方的範圍滑桿是否顯示。預設值 True。 |
| showlegend | 是否顯示圖例。預設值:當有多組數據序列時為 True。 |
| legend | 設定圖例的位置與外觀(如 x, y 位置、orientation 'h' 或 'v')。 |
| margin | 設定圖表與邊界的距離。傳入 dict(l, r, t, b) 分別代表左、右、上、下邊距。 |
| template | 設定圖表主題(如 'plotly_dark', 'ggplot2', 'seaborn' 等)。預設為 'plotly'。 |
| hovermode | 設定懸停資訊的觸發模式('x', 'y', 'closest', False)。預設為 'closest'。 |
| font | 設定圖表全域字體(family, size, color)。預設字體依環境而定。 |
| paper_bgcolor | 設定整張畫布(紙張)的背景顏色。預設為 '#fff'。 |
| plot_bgcolor | 設定繪圖區域(座標軸內)的背景顏色。預設為 '#E5ECF6'。 |
| 參數名稱 | 說明 |
|---|---|
| title | X 軸標題。可傳入字串或 dict(text='...', font=...)。 |
| type | 座標軸類型:'linear' (數值), 'date' (時間), 'category' (類別), 'log' (對數)。 |
| range | 設定顯示範圍 [min, max],對於時間軸 ['2026-01-01', '2026-05-01']。 |
| rangebreaks | 隱藏特定時間區段(如週末或收盤時段)。常用於金融圖表。 |
| rangeslider_visible | 是否顯示底部的時間範圍滑桿(True/False)。 |
| showgrid | 是否顯示垂直網格線(True/False)。預設為 True。 |
| gridcolor / gridwidth | 設定網格線的顏色與寬度。 |
| tickformat | 設定刻度文字格式(如 '%Y-%m-%d' 顯示日期,'.2f' 顯示兩位小數)。 |
| tickangle | 刻度文字的旋轉角度(例如 -45 代表順時針旋轉 45 度)。 |
| side | X 軸的位置。可設定為 'bottom' (預設) 或 'top'。 |
| nticks | 設定刻度的最大數量(Plotly 會嘗試在此範圍內自動分配)。 |
| fixedrange | 是否鎖定縮放(True 代表禁止使用者縮放該軸)。 |
| showspikes | 是否顯示 Y 軸輔助線。預設 False (不顯示)。 |
| spikemode | X 軸輔助線模式 : 'toaxis' (預設指向坐標軸)、'across' (橫跨整個繪圖區)。 |
| spikecolor | X 軸輔助線顏色 : 顏色名稱或色碼 (預設 None 視資料點自動指配)。 |
| spikethickness | X 軸輔助線厚度 : 預設 3px。 |
| spikedash | X 軸輔助線樣式 : 'dash' (預設), 'dot', 'solid'。 |
| 參數名稱 | 說明 |
|---|---|
| title | Y 軸標題。可設定為字串或 dict(text='...', font=...)。 |
| type | 座標軸類型:'linear' (預設)、'log' (對數軸)、'date'。 |
| range | 設定 Y 軸顯示數值範圍。例如 [0, 1000]。 |
| autorange | 是否自動縮放範圍:True, False 或 'reversed'(數值由大到小反轉)。 |
| showgrid | 是否顯示水平網格線(True/False)。 |
| zeroline | 是否加粗顯示數值為 0 的那條基準線。預設為 True。 |
| tickformat | 刻度數值格式。例如 ',d' (千分位整數)、'.2f' (兩位小數)、'%' (百分比)。 |
| tickprefix / ticksuffix | 在刻度數值前後加上符號(如 tickprefix='$' 或 ticksuffix='元')。 |
| side | Y 軸的位置。可設定為 'left' (預設) 或 'right' (常見於雙 Y 軸設計)。 |
| secondary_y | 多軸圖表中指定此資料是否為第二個 Y 軸(配合 make_subplots 使用)。 |
| fixedrange | 是否固定 Y 軸。設為 True 時,使用者無法透過滑鼠縮放 Y 軸方向。 |
| showspikes | 是否顯示 Y 軸輔助線。預設 False (不顯示)。 |
| spikemode | Y 軸輔助線模式 : 'toaxis' (預設指向坐標軸)、'across' (橫跨整個繪圖區)。 |
| spikecolor | Y 軸輔助線顏色 : 顏色名稱或色碼 (預設 None 視資料點自動指配)。 |
| spikethickness | Y 軸輔助線厚度 : 預設 3px。 |
| spikedash | Y 軸輔助線樣式 : 'dash' (預設), 'dot', 'solid'。 |
| Figure 物件的檔案匯出方法 | 說明 |
|---|---|
| fig.write_image(file, **kwargs) | 匯出為靜態圖片(PNG、JPEG、SVG、PDF 等),需安裝 kaleido |
| fig.write_html(file, **kwargs) | 匯出為互動式 HTML 檔,可直接用瀏覽器開啟 |
| fig.to_html(full_html=True, include_plotlyjs='cdn') | 將圖表轉為 HTML 字串(用於網頁內嵌或 API 回傳) |
| fig.to_json() | 將圖表轉為 JSON 格式(適合儲存、API 傳遞、版本控管) |
| fig.write_json(file) | 將圖表 JSON 結構直接寫入檔案 |
| fig.to_dict() | 將圖表轉為 Python 字典格式,可進一步程式操作 |
| 模板語法元素 | 說明 |
| {{ 變數 }} | 來自 views.py 的變數用來直接替換該位置內容 |
| {% 標籤 %} | 標籤用來控制資料顯示邏輯 (判斷 & 迴圈) |
| {# 註解 #} | 註解會被模板引擎忽略 |
| 單一分支 | 雙重分支 | 多重分支 |
| {% if 條件式 %} 輸出網頁 (% endif %} | {% if 條件式 %} 輸出網頁1 {% else %} 輸出網頁2 (% endif %} | {% if 條件式 %} 輸出網頁1 {% elif %} 輸出網頁2 {% elif %} 輸出網頁3 {% else %} 輸出網頁4 (% endif %} |
| 順序迭代 | 倒序迭代 |
| {% for 變數 in 可迭代變數 %} 輸出網頁 1 {% empty %} 迴圈為空時之輸出網頁 2 {% endfor %} | {% for 變數 in 可迭代變數 reversed %} 輸出網頁 1 {% empty %} 迴圈為空時之輸出網頁 2 {% endfor %} |
| 迴圈變數 loop 的屬性 | 說明 |
| loop.counter | 迴圈計數器 (1 起始) |
| loop.counter0 | 迴圈計數器 (0 起始) |
| loop.revcounter | 倒數之迴圈計數器 (由總圈數遞減至 1) |
| loop.revcounter0 | 倒數之迴圈計數器 (由總圈數遞減至 0) |
| loop.first | 是否為第一個迴圈 (True/False) |
| loop.last | 是否為最後一個迴圈 (True/False) |
| loop.parentloop | 上一層迴圈的 loop 變數 |
| 常用模板過濾器 | 說明 | 範例 |
| add | 加上一個數值或做字串串接 | {{ var | add:"2" }} |
| addslashes | 跳脫特殊字元 (前面加上倒斜線 \) | {{ var | addslashes }} |
| capfirst | 將字串變數的首字元轉為大寫 | {{ var | capfirst }} |
| center | 將字串變數冠上指定空格後置中 | {{ var | center: "5" }} |
| cut | 從字串變數中刪除指定子字串 | {{ var | cut: " " }} 刪除空白字元 |
| date | 將 datetime 變數以指定格式顯示 | {{ var | date: "D d M Y" }} |
| default | 當變數為空字串時輸出預設字串 | {{ var | default: "預設值" }} |
| dictsort | 將串列變數中的字典依指定鍵遞增排序 | {{ var | dictsort: "鍵" }} |
| dictsortreversed | 將串列變數中的字典依指定鍵遞減排序 | {{ var | dictsortreversed: "鍵" }} |
| divisibleby | 測試數值變數是否可被指定數整除 | {{ var | divisibleby: "7" }} |
| escape | 跳脫字串變數內的 HTML 標籤 | {{ var | escape }} |
| filesizeformat | 以 KB/MB 等單位顯示檔案大小 | {{ var | fileformat }} |
| first | 取出串列變數中的第一個元素 | {{ var | first }} |
| join | 將串列變數中的元素以指定字串串接 | {{ var | join: "," }} |
| last | 取出串列變數中的最後一個元素 | {{ var | last }} |
| length | 傳回串列變數的元素個數 (長度) | {{ var | length }} |
| length_is | 測試變數的長度是否為指定之長度 | {{ var | length_is: "5" }} |
| linebreaks | 將字串中的 \n 轉成 HTML 之 br 與 p | {{ var | linebreaks }} |
| linebreaksbr | 將字串中的 \n 轉成 HTML 之 br | {{ var | linebreaksbr }} |
| linenumbers | 將顯示之文字加上行號 | {{ var | linenumbers }} |
| ljust | 將字串變數冠上指定空格後置左 | {{ var | ljust: "5" }} |
| lower | 將字串變數轉成小寫 | {{ var | lower }} |
| make_list | 將字串拆成字元串列 | {{ var | make_list }} |
| random | 隨機取出串列中的一個元素 | {{ var | random }} |
| rjust | 將字串變數冠上指定空格後置右 | {{ var | rjust: "5" }} |
| safe | 以 HTML 格式讀取字串 (不須跳脫) | {{ var | safe }} |
| slice | 取出字串中的指定切片 | {{ var | slice:":2" }} |
| slugify | 將字串中的空白以 dash '-' 取代 | {{ var | slugify }} |
| stringformat | 以科學表示法顯示數字 | {{ var | stringformat: "E" }} |
| striptags | 移除字串中的 HTML 標籤 | {{ var | striptags }} |
| title | 將字串中每個字的第一字元大寫 | {{ var | title }} |
| truncatechars | 將字串中超出指定長度部分以 ... 取代 | {{ var | truncatechars:"5" }} |
| upper | 將字串轉成大寫 | {{ var | upper }} |
| wordcount | 傳回字串中的字數 | {{ var | wordcount }} |
| yesno | 依變數值為 True/False/None 轉成指定值 | {{ var | yesno:"是, 否, 取消" }} |
| 功能/模組 | plotly.graph_objs | plotly.express |
|---|---|---|
| 抽象層級 | 低階,需自行設定圖表細節 | 高階,簡化流程,快速繪圖 |
| 程式碼簡潔度 | 較冗長,需組裝圖形元素 | 非常簡潔,幾行即可完成 |
| 彈性與客製化 | 高度可自訂,適合複雜圖形 | 中等,適用常見圖形設定 |
| 資料來源格式 | list、dict、DataFrame 皆可 | 建議使用 pandas DataFrame |
| 支援圖形種類 | 完整支援所有圖表 | 僅支援常見圖表(如 bar, line, scatter) |
| 使用場景 | 需要精細控制、Dash 整合 | 資料探索、快速視覺化 |
| 動畫與互動支援 | 完全支援,自訂自由度高 | 部分支援,設定較簡單 |
| plotly.express 模組的繪圖函式 | 說明 |
|---|---|
| scatter(data_frame, x, y, **kwargs) | 散點圖 |
| line(data_frame, x, y, **kwargs) | 折線圖 |
| area(data_frame, x, y, **kwargs) | 面積圖(堆疊折線圖) |
| bar(data_frame, x, y, **kwargs) | 長條圖 |
| funnel(data_frame, x, y, **kwargs) | 漏斗圖 |
| timeline(data_frame, x, y, **kwargs) | 時間軸圖(Gantt 類型) |
| pie(data_frame, names, values, **kwargs) | 圓餅圖 |
| sunburst(data_frame, path, values, **kwargs) | 旭日圖 |
| treemap(data_frame, path, values, **kwargs) | 樹狀圖 |
| icicle(data_frame, path, values, **kwargs) | 冰柱圖 |
| scatter_matrix(data_frame, dimensions, **kwargs) | 散點矩陣圖 |
| parallel_coordinates(data_frame, dimensions, **kwargs) | 平行座標圖 |
| parallel_categories(data_frame, dimensions=None, **kwargs) | 平行分類圖 |
| density_contour(data_frame, x, y, **kwargs) | 密度等高線圖 |
| density_heatmap(data_frame, x, y, **kwargs) | 密度熱力圖 |
| histogram(data_frame, x=None, y=None, **kwargs) | 直方圖 |
| box(data_frame, x=None, y=None, **kwargs) | 箱型圖 |
| violin(data_frame, x=None, y=None, **kwargs) | 小提琴圖 |
| strip(data_frame, x=None, y=None, **kwargs) | 條帶圖 |
| scatter_3d(data_frame, x, y, z, **kwargs) | 3D 散點圖 |
| line_3d(data_frame, x, y, z, **kwargs) | 3D 折線圖 |
| scatter_geo(data_frame, locations, **kwargs) | 地理散點圖 |
| choropleth(data_frame, locations, color, **kwargs) | 地圖著色圖 |
| scatter_mapbox(data_frame, lat, lon, **kwargs) | Mapbox 地圖散點圖 |
| choropleth_mapbox(data_frame, geojson, locations, color, **kwargs) | Mapbox 地圖著色圖 |
| density_mapbox(data_frame, lat, lon, **kwargs) | Mapbox 熱力圖 |
| scatter_polar(data_frame, r, theta, **kwargs) | 極座標散點圖 |
| line_polar(data_frame, r, theta, **kwargs) | 極座標折線圖 |
| bar_polar(data_frame, r, theta, **kwargs) | 極座標長條圖 |
| imshow(img_array, **kwargs) | 影像資料視覺化(2D array) |
| Figure 物件常用方法 | 說明 |
|---|---|
update_layout() |
設定整體圖表外觀 (標題, 大小, 背景, 圖例, 座標軸標籤等) |
update_traces() |
調整資料圖層樣式(線型、顏色、標記大小、hover 樣式等) |
update_xaxes() |
調整 x 軸屬性(網格、刻度、方向等) |
update_yaxes() |
調整 y 軸屬性(網格、刻度、方向等) |
add_annotation() |
在圖中加上註解文字(標註最大值、最低點、特殊事件等, 可搭配箭頭) |
show() |
在互動環境中(Jupyter Notebook 或瀏覽器)顯示圖表 |
| fig.update_layout() 參數 | 說明 |
|---|---|
| title | 設定圖表標題(可為字串或字典,支援位置、字體等設定) |
| xaxis | 設定 x 軸配置,例如範圍、網格、標籤、顏色等 |
| yaxis | 設定 y 軸配置,例如範圍、網格、標籤、顏色等 |
| width | 圖表寬度(以像素為單位) |
| height | 圖表高度(以像素為單位) |
| plot_bgcolor | 繪圖區背景顏色(如 'white'、'#f0f0f0') |
| paper_bgcolor | 整個圖表區域(含標題、圖例)的背景色 |
| font | 整體字體設定(字型、大小、顏色),為字典型態 |
| legend | 圖例位置與樣式設定(如位置、方向、字體) |
| margin | 圖表四邊邊距,設定 top/right/bottom/left 整數像素值 |
| showlegend | 是否顯示圖例,布林值(True/False) |
| template | 使用內建或自定義的主題風格(如 'plotly_white') |
| hovermode | 設定滑鼠懸停時的行為,如 'closest' 或 'x unified' |
| barmode | 設定長條圖類型(如 'group'、'stack') |
| fig.update_layout() 參數 | 說明 |
|---|---|
| marker | 控制點或條狀的外觀字典(包含顏色、大小、邊框、透明度等) |
| marker.color | 設定資料點或長條的顏色(可為單一色碼或一組顏色) |
| marker.line.color | 設定資料點邊框或長條邊框的顏色 |
| marker.line.width | 設定資料點或長條邊框的粗細 |
| opacity | 設定圖形透明度(0.0 ~ 1.0) |
| text | 每個點/條所顯示的文字標籤 |
| textposition | 設定文字顯示位置,如 'inside'、'outside'、'top right' 等 |
| texttemplate | 進階格式的文字模板,可用 %{value}、%{x}、%{y} 插入變數 |
| hoverinfo | 設定 hover 時顯示哪些資訊,如 'x+y+text' |
| hovertemplate | 自訂 hover 顯示內容,支援變數與 HTML |
| mode | (僅限 scatter)設定模式,如 'lines'、'markers'、'lines+markers' |
| line.color | (折線圖用)設定線條顏色 |
| line.width | (折線圖用)設定線條粗細 |
| orientation | 長條方向:'v'(垂直)或 'h'(水平) |
| visible | 設定圖形是否顯示,可為 True、False 或 'legendonly' |
| plotly.express.data 資料集 | 說明 |
|---|---|
gapminder() |
全球國家的人口、壽命與人均 GDP(1952–2007) |
iris() |
經典 150 筆鳶尾花資料集 (分類與散佈圖分析) |
tips() |
餐廳消費與小費資料 (回歸分析和相關性分析) |
titanic() |
鐵達尼號乘客資料(性別、年齡、船艙、存活與否) |
election() |
美國 2013 年地方選舉資料(地圖應用範例) |
wind() |
風向與風速資料,適用於極座標圖與玫瑰圖 |
carshare() |
共乘密度資料,含地點與時間等欄位,適合地圖或時間熱度圖 |
medals_long() |
奧運金銀銅牌資料(長格式),適合繪製堆疊直條圖 |
medals_wide() |
奧運獎牌資料(寬格式),可用於分組直條圖 |
stocks() |
模擬的股票價格資料,適合時間序列折線圖 |
| gapminder() 欄位名稱 | 說明 |
|---|---|
| country | 國家名稱(類別型資料) |
| continent | 洲別,如 Asia、Europe(類別型資料) |
| year | 年份,從 1952 到 2007,每隔 5 年(數值型資料) |
| lifeExp | 預期壽命(數值型資料) |
| pop | 人口總數(數值型資料) |
| gdpPercap | 人均 GDP(數值型資料) |
| plotly.express.bar() 參數 | 說明 |
|---|---|
| data | 資料來源,可為 DataFrame 或 dict 格式 ✅ 必要參數 |
| x | x 軸欄位名稱 ✅ 必要參數 |
| y | y 軸欄位名稱 ✅ 必要參數 |
| color | 根據欄位值區分長條顏色 |
| text | 在長條上顯示的文字內容(例如數值) |
| barmode | 長條排列模式:'group'(並列)或 'relative'(堆疊),預設為 'relative' |
| orientation | 'v' 垂直長條(預設)、'h' 水平長條 |
| facet_row / facet_col | 依欄位分成多個子圖(小 multiples) |
| width / height | 設定圖表寬度與高度(單位為像素) |
| title | 設定圖表標題 |
| template | 設定樣式主題,如 'plotly_white'、'simple_white'、'plotly_dark' |
| labels | 自訂軸標籤顯示文字,格式為字典 |
| category_orders | 自訂類別軸的順序 |
| **kwargs | 其他可選參數,如 hover_name、opacity、log_y 等 |
| title 參數字典的鍵 | 說明 |
|---|---|
| text | 設定標題的文字內容。 |
| x | 設定標題的水平位置,範圍為 0(左)到 1(右),預設為 0.5。 |
| xanchor | 設定標題的水平對齊方式,可為 'left' (預設)、'center' 或 'right'。 |
| y | 設定標題的垂直位置,範圍為 0(底)到 1(頂),預設約為 0.95。 |
| yanchor | 設定標題的垂直對齊方式,可為 'top'、'middle' (預設) 或 'bottom'。 |
| font | 設定字型的字典,含有 family、size 與 color 三個鍵。 |