在 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