在 Matplotlib 中設定 Ticks 刻度數量

Suraj Joshi 2023年1月30日 2020年11月24日
  1. 使用 Matplotlib.ticker.MaxNLocator 類設定刻度 ticks 數
  2. 使用 Matplotlib.axis.Axis.set_ticks() 方法設定 ticks 數
在 Matplotlib 中設定 Ticks 刻度數量

本教程解釋了我們如何使用 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 圖中的預設刻度數。我們將使用不同的方法改變圖中的刻度 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()

輸出:

使用 Matplotlib.ticker.MaxNLocator 類設定繪圖 ticks 數

它將圖中 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()

輸出:

使用 if 條件設定繪圖 ticks 的數量

它只為 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()

輸出:

使用 set_ticks 方法設定繪圖 ticks 的數量

它設定 ticks 的數量和在 set_ticks() 方法中指定的 ticks 值。我們向 set_ticks() 傳遞一個 NumPy 陣列或列表,根據這些陣列或列表來設定刻度值。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

相關文章 - Matplotlib Ticks