設定座標軸刻度文字
matplotlib 可以使用多種方法建立圖表 ( plt、ax...等 ),但在每種方法中設定座標軸文字方式都有所不同,這篇教學會整理並介紹四種設定座標軸刻度文字的方式。
本篇使用的 Python 版本為 3.7.12,所有範例可使用 Google Colab 實作,不用安裝任何軟體 ( 參考:使用 Google Colab )
import matplotlib
要進行本篇的範例,必須先載入 matplotlib 函式庫的 pyplot 模組,範例將其獨立命名為 plt。
import matplotlib.pyplot as plt
設定座標軸刻度文字的方式
下方列出四種設定座標軸刻度文字的方式。
方式 | 說明 |
---|---|
plt.xticks() | 針對使用 plt.subplot() 建立的圖表,同性質還有 yticks()、zticks()。 |
ax.set_xticklabels() | 使用時需要搭配 plt.xticks() 方法,同性質還有 set_yticklabels()、set_zticklabels()。 |
plt.setp(ax.get_xticklabels()) | 透過 ax.get_xticklabels() 取得座標軸標籤物件後,進行對應的屬性設定,同性質還有 ax.get_yticklabels()、ax.get_zticklabels()。 |
ax.tick_params(axis='x') | 針對某個座標軸做完整的屬性設定,同性質還有 axis='y'、axis='z'。 |
plt.xticks()
使用 plt.subplot() 建立的圖表,可以透過對應的方法修改座標軸的標籤,常用的屬性如下 ( 完整屬性參考:matplotlib.text ):
屬性 | 說明 |
---|---|
ticks | 標籤內容,使用串列資料。 |
labels | 標籤顯示文字,使用串列資料。 |
fontsize | 文字大小 |
color | 文字顏色 |
rotation | 旋轉角度 |
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(4,4))
x = range(5)
y = [1,2,3,4,5]
labels = ['x'+str(i) for i in x]
plt.subplot()
plt.xticks(ticks=x,
labels=labels,
color='#f00',
fontsize=20,
rotation=30) # 設定大小 20,紅色、旋轉 30 度的標籤文字
plt.plot(x,y)
plt.show()
ax.set_xticklabels()
使用 ax.set_xticklabels() 建立的圖表需要搭配 plt.xticks() 方法,除了不支援 ticks 和 labels 屬性,其他屬性都和 plt.xticks() 相同 ( 類似覆寫樣式的概念 ),如果單獨使用,會出現標籤位置錯誤的狀況。
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(4,4))
x = range(5)
y = [1,2,3,4,5]
labels = ['x'+str(i) for i in x]
ax = plt.subplot()
plt.xticks(ticks=x,
color='#f00',
fontsize=20,
rotation=30) # 先設定標籤文字樣式
ax.set_xticklabels(
labels=labels,
color='#00f',
fontsize=20,
rotation=0) # 覆寫樣式
plt.plot(x,y)
plt.show()
plt.setp(ax.get_xticklabels())
透過 ax.get_xticklabels() 取得座標軸標籤物件後,就能進行對應的屬性設定,常用的屬性如下 ( 完整屬性參考:matplotlib.text ):
屬性 | 說明 |
---|---|
ticks | 標籤內容,使用串列資料。 |
labels | 標籤顯示文字,使用串列資料。 |
fontsize | 文字大小 |
color | 文字顏色 |
rotation | 旋轉角度 |
import matplotlib.pyplot as plt
fig = plt.figure(figsize=(4,4))
x = range(5)
y = [1,2,3,4,5]
labels = ['x'+str(i) for i in x]
ax = plt.subplot()
plt.setp(ax.get_xticklabels(),
color='#00f',
fontsize=20,
rotation=-30) # 設定 x 軸
plt.setp(ax.get_yticklabels(),
color='#f00',
fontsize=20,
rotation=-30) # 設定 y 軸
plt.plot(x,y)
plt.show()
ax.tick_params(axis='x')
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()
意見回饋
如果有任何建議或問題,可傳送「意見表單」給我,謝謝~