HOWTO · Plotly

Plotly 長條圖

使用 Plotly Express 的 `px.bar` API 建立長條圖。

本頁內容

Plotly Express 可在 Python 中建立互動式長條圖。使用 px.bar 將類別標籤和數值對應到圖表,再依資料調整方向、色彩、標籤和軌跡。執行範例前,請先在 Python 環境中安裝 Plotly。

使用 Plotly Express 建立基本長條圖

將類別名稱傳給 x,並將對應的數值傳給 y。Plotly Express 會為每一列資料或每一組相互對應的值建立一個長條。在互動式環境中呼叫 fig.show() 可顯示圖表;此範例會列印簡短摘要,因此即使環境無法透過瀏覽器顯示圖表,也能執行。

執行此範例。程式碼與輸出中的標籤保留英文:

本節中的程式碼以及顯示的標籤或輸出仍為英文。

import plotly.express as px

labels = ["One", "Two", "Three"]
values = [10, 50, 100]
fig = px.bar(x=labels, y=values, height=400, width=500)
print(f"Categories: {len(labels)}; values: {values}")
Categories: 3; values: [10, 50, 100]

圖表尺寸的單位是像素。此圖表有三個類別,長條高度分別為 10、50 和 100。呈現結果應顯示這些標籤和數值;下方圖片是提供的基本圖表素材。

Plotly 長條圖,包含 One、Two、Three 三個類別,長條高度分別為 10、50、100

呈現結果:三個類別標籤及其對應的長條高度。

使用資料框時,可傳入欄位名稱,例如 px.bar(data_frame, x="category", y="value")。這樣能明確指定資料對應方式,並讓 Plotly 將每一列視為一筆觀測資料。

選擇長條方向並設定座標軸

預設情況下,px.bar 會繪製垂直長條:x 值代表類別,y 值決定長條高度。設定 orientation="h" 可改為水平長條。繪製水平長條時,將數值測量值對應到 x,類別標籤對應到 y;Plotly 會依方向設定決定長條方向,因此不必盲目交換欄位。

例如,使用 px.bar(x=values, y=labels, orientation="h") 可建立水平圖表。使用 fig.update_layout(title="Sales by category") 設定圖表標題;此範例中的標題文字保留英文。預設的垂直圖表以 y 軸呈現數值;若適合使用對數數值軸,可呼叫 fig.update_yaxes(title_text="Sales", type="log")。若水平圖表的數值位於 x 軸,則使用 fig.update_xaxes(...) 設定該軸。對數軸無法呈現非正數,因此只有在資料特性和比較目的都適合時才使用。height 和 width 控制整張圖表的尺寸,不會改變個別長條的大小。若要顯示圖表,請在已設定 Plotly renderer 的環境中呼叫 fig.show()。

自訂長條色彩

若要讓不同類別使用不同色彩,可將類別欄位傳給 color。color_discrete_map 可為類別值指定特定色彩;未列入對應表的類別會使用 Plotly 的色彩序列,而非隨機色彩。例如,傳入 color=labels 和 color_discrete_map={"One": "green", "Two": "cyan", "Three": "yellow"},即可為這三個標籤明確指定色彩。

若要以連續色彩比例呈現數值大小,可將數值欄位傳給 color。例如,px.bar(x=labels, y=values, color=values, color_continuous_scale=px.colors.sequential.Rainbow) 會依數值指定色彩。連續色彩比例表示有順序的數值範圍;離散色彩對應則用於具名類別。可參閱 Plotly 內建色彩比例,了解可用的色彩比例和序列。

新增標籤並設定長條樣式

將序列傳給 text,即可在長條上顯示數值或其他標籤。使用 textposition 調整標籤位置,例如 "outside" 或 "inside";可用空間可能會影響標籤位置。建立圖表後,可透過 fig.update_traces 設定長條軌跡的選項。例如,先建立包含 text=["First", "Second", "Third"] 的圖表,再呼叫 fig.update_traces(textposition="outside", textfont_size=16, marker=dict(line=dict(color="green", width=3))),即可新增標籤並加上綠色外框。此範例中的 First、Second 和 Third 標籤文字保留英文。

fig.update_traces 可設定軌跡屬性,例如文字位置、標記線條、不透明度和誤差線。在 px.bar 中,error_x 和 error_y 分別表示沿對應資料軸的不確定性,base 則設定每個長條的起始位置。只有在這些設定能準確表示資料時才使用。完整的軌跡屬性請參閱 Plotly 長條圖參考文件。