在 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