在 Matplotlib 中設定 Ticks 刻度數量
Suraj Joshi
2023年1月30日
2020年11月24日
本教程解釋了我們如何使用 Matplotlib.ticker.MaxNLocator
類和 set_ticks()
方法來設定 Matplotlib 圖中的 ticks 刻度數量。
import math
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,2*math.pi,100)
y=np.sin(x)
fig,axes=plt.subplots(1,1)
axes.plot(x, y)
axes.set_title("Sinx Function")
axes.set_xlabel("X")
axes.set_ylabel("sinX")
plt.show()
輸出:
它顯示的是 Matplotlib 圖中的預設刻度數。我們將使用不同的方法改變圖中的刻度 ticks 數。
使用 Matplotlib.ticker.MaxNLocator
類設定刻度 ticks 數
Matplotlib.ticker.MaxNLocator
類定義了一個名為 nbins
的引數,它代表了最大的 bins 數量。ticks 的數量將比 bins 的數量多一個。所以 Matplotlib.ticker.MaxNLocator
類中的 nbins
引數意味著 ticks 的數量不能超過 nbins+1
。
import math
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import MaxNLocator
x=np.linspace(0,2*math.pi,100)
y=np.sin(x)
fig,axes=plt.subplots(1,1)
axes.plot(x, y)
axes.yaxis.set_major_locator(MaxNLocator(5))
axes.set_title("Sinx Function")
axes.set_xlabel("X")
axes.set_ylabel("sinX")
plt.show()
輸出:
它將圖中 Y 軸的最大分格數設定為 5,這意味著最大的 ticks 數是 6。同樣,我們也可以為 X 軸設定刻度 ticks。
另外,我們也可以用 if
語句使用某些條件,只選擇滿足條件的特定 ticks。
import math
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,2*math.pi,100)
y=np.sin(x)
fig,axes=plt.subplots(1,1)
axes.plot(x, y)
for i, tick in enumerate(axes.xaxis.get_ticklabels()):
if i % 2 != 0:
tick.set_visible(False)
for i, tick in enumerate(axes.yaxis.get_ticklabels()):
if i % 2 != 0:
tick.set_visible(False)
axes.set_title("Sinx Function")
axes.set_xlabel("X")
axes.set_ylabel("sinX")
plt.show()
輸出:
它只為 X 軸和 Y 軸上偶數位置的刻度線設定刻度線標籤。雖然它刪除了刻度線標籤,但刻度線仍然存在。我們可以改變條件來定製刻度標籤。
使用 Matplotlib.axis.Axis.set_ticks()
方法設定 ticks 數
我們也可以使用 Python 中的 Matplotlib.axis.Axis.set_ticks()
來設定軸。
import math
import numpy as np
import matplotlib.pyplot as plt
x=np.linspace(0,2*math.pi,100)
y=np.sin(x)
fig,axes=plt.subplots(1,1)
axes.plot(x, y)
axes.xaxis.set_ticks([0,1,3,4,5,6])
axes.yaxis.set_ticks(np.linspace(-1,1,5))
axes.set_title("Sinx Function")
axes.set_xlabel("X")
axes.set_ylabel("sinX")
plt.show()
輸出:
它設定 ticks 的數量和在 set_ticks()
方法中指定的 ticks 值。我們向 set_ticks()
傳遞一個 NumPy 陣列或列表,根據這些陣列或列表來設定刻度值。
Author: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn