設定圖表標籤
使用 matplotlib 繪製圖表時,可以透過設定圖表的標籤,顯示 xy 軸的文字、xy 軸的位置或圖表標題,這篇教學會介紹如何設定圖表的標籤。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
常用方法
下方列出使用 plt 設定圖表標籤常用的方法,如果是 subplots() 方法建立的座標軸 axes,則前方要加上 set_,例如 title() 會變成 set_title()。
方法 | 必填參數 | 說明 |
---|---|---|
title() | label | 標題文字。 |
xlabel()、ylabel() | label | xy 軸說明文字。 |
xlim()、ylim() | min, max | xy 軸邊界值。 |
xticks()、yticks() | ticks | xy 軸刻度。 |
tick_params() | 刻度顯示設定。 | |
grid() | 網格設定。 | |
legend() | 圖例標籤設定。 |
title()
title() 方法可以設定圖表的標題文字,下面兩種方法,會建立相同的圖表,如果是使用 subplots() 的方法,改用 set_title() 方法設定標題。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
fig = plt.figure()
plt.plot(x)
plt.title('test') # 設定 title
plt.show()
x = [1,2,3,4,5]
fig, ax = plt.subplots()
ax.set_title('test') # 設定 title
ax.plot(x)
plt.show()
如果有多個子圖表,title() 方法會設定子圖表的標題,主標題則使用 suptitle() 方法設定。
x = [1,2,3,4,5]
y = [5,4,3,2,1]
fig = plt.figure()
plt.subplot(121)
plt.plot(x)
plt.title('xxx') # 設定子圖表 title
plt.subplot(122)
plt.plot(y)
plt.title('yyy') # 設定子圖表 title
plt.suptitle('test') # 設定圖表主 title
plt.show()
x = [1,2,3,4,5]
y = [5,4,3,2,1]
fig, ax = plt.subplots(1,2)
plt.suptitle('test') # 設定圖表主 title
ax[0].set_title('xxx') # 設定子圖表 title
ax[1].set_title('yyy') # 設定子圖表 title
ax[0].plot(x)
ax[1].plot(y)
plt.show()
使用 title() 設定標題時,除了必填的 label 文字參數,還有下列幾個參數:
參數 | 說明 |
---|---|
fontdict | 文字設定字典檔,可設定 fontsize 大小、fontweight 粗細、color 顏色...等 ( 參考:完整屬性 )。 |
loc | 擺放位置,預設 center,可設定 left 和 right。 |
y | 垂直位置,預設 1 為最上方,0 在下方。 |
pad | 距離圖表的位置,預設 6。 |
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
fig = plt.figure()
plt.plot(x)
plt.title('test',{'fontsize':20,'color':'red'}, loc='left', pad=10) # 設定 title 文字樣式
plt.show()
同一個圖表可以同時出現左、右、中三個位置的標籤。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
fig = plt.figure()
plt.plot(x)
plt.title('right',loc='right')
plt.title('test',loc='center')
plt.title('left',loc='left')
plt.show()
xlabel()、ylabel()
xlabel()、ylabel() 方法可以設定 xy 軸的標籤,除了必填的 label 文字參數,還有下列幾個參數:
參數 | 說明 |
---|---|
fontdict | 文字設定字典檔,可設定 fontsize 大小、fontweight 粗細、color 顏色...等 ( 參考:完整屬性 )。 |
loc | 擺放位置,xlabel() 預設 center,可設定 left 和 right,ylabel() 預設 center,可設定 top 和 bottom。 |
pad | 距離圖表的位置,預設 6。 |
rotation | 旋轉角度。 |
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
fig = plt.figure()
plt.plot(x)
plt.xlabel('x-axis',{'fontsize':20,'color':'red'}) # 設定 x 軸標籤
plt.ylabel('y-axis',{'fontsize':20,'color':'green'}) # 設定 y 軸標籤
plt.show()
xlim()、ylim()
xlabel()、ylabel() 方法可以設定 xy 軸邊界值,如果沒有設定,預設採用資料的最大值和最小值。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
fig = plt.figure()
plt.plot(x)
plt.xlim(0,10) # 設定 x 軸邊界為 0~10
plt.ylim(0,10) # 設定 y 軸邊界為 0~10
plt.show()
xticks()、yticks()
xticks()、yticks() 方法可以設定 xy 軸的刻度,參數包含 ticks 和 labels 兩種,使用串列作為資料型態,參數支援文字屬性 ( 參考:完整屬性 )。
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
fig = plt.figure()
plt.plot(x)
plt.xticks([0,2,4,6,8],['a','b','c','d','e'],fontsize=20) # 設定 x 軸刻度為 2,4,6,8,10 對應的 a,b,c,d,e
plt.yticks([0,2,4,6,8],fontsize=20) # 設定 x 軸刻度為 2,4,6,8,10
plt.show()
tick_params()
tick_params() 方法可以設定刻度的顯示樣式,下方列出常用的參數 ( 更多參考:tick_params ):
參數 | 說明 |
---|---|
axis | 針對哪個軸做設定,預設 both,可以設定 x 或 y。 |
color | 刻度顏色。 |
colors | 刻度和刻度文字的顏色。 |
width | 刻度寬度。 |
length | 刻度長度。 |
direction | 刻度位置,預設 out,可以設定 in 或 inout。 |
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
fig = plt.figure()
plt.plot(x)
plt.tick_params(
axis='x',
color='red',
width=5,
length=10,
direction='inout',
colors='red')
plt.show()
grid()
grid() 方法可以設定圖表的網格,下方列出常用的參數 ( 更多參考:grid ):
參數 | 說明 |
---|---|
visible | 是否顯示網格,預設 False 不顯示,設定 True 則顯示。 |
axis | 顯示哪個軸,預設 both,可以設定 x 或 y。 |
which | 顯示哪種隔線,預設 both,可以設定 major 或 minor。 |
color | 隔線顏色。 |
dashes | 虛線,內容使用 ( 長度, 間隔 )。 |
linestyle | 隔線樣式,使用 -、--、-.、: 等線條格式。 |
linewidth | 隔線粗細,預設 1。 |
alpha | 隔線透明度,預設 1 完全不透明,設定 0 完全透明。 |
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
fig = plt.figure()
plt.plot(x)
plt.grid(
visible=True,
axis='x',
color='#c00',
dashes=(3,3),
linewidth=5,
alpha=0.2)
plt.show()
legend()
如果繪圖的時候,有加入 label 標籤,就能使用 legend() 方法,在圖表上產生數據對應的圖例標籤,,下方列出常用的參數 ( 更多參考:legend ):
參數 | 說明 |
---|---|
loc | 放置位置,預設 best 表示會自動出現在最適合的位置 ( 最不會遮住數據線條 )。 |
fontsize | 字體大小。 |
shadow | 是否有陰影,預設 False 無陰影,可設定 True 有陰影。 |
facecolor | 底色。 |
edgecolor | 邊框顏色。 |
title | 圖例標題。 |
title_fontsize | 圖例標題字體大小。 |
import matplotlib.pyplot as plt
x = [1,2,3,4,5]
y = [5,4,3,2,1]
fig = plt.figure()
plt.plot(x, label='x')
plt.plot(y, label='y')
plt.legend(
loc='best',
fontsize=20,
shadow=True,
facecolor='#ccc',
edgecolor='#000',
title='test',
title_fontsize=20)
plt.show()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~