📅  最后修改于: 2023-12-03 15:07:44.328000             🧑  作者: Mango
当我们创建一个 matplotlib 图表时,有时候需要控制刻度之间的间距。尤其是在绘制比例图或者需要精确控制图表样式的时候,调整刻度之间的间距可以达到更好的效果。
在 matplotlib 中,可以通过 xticks
和 yticks
设置横纵坐标的刻度,其中 xticks
和 yticks
均可接受一个包含刻度值的列表,以及一个包含刻度对应的标签的列表。
下面是一个绘制正弦曲线的例子,我们通过 np.arange
生成了 -10 到 10 的值域范围,并通过 np.sin(x)
得到了正弦值。我们希望将 x 轴的刻度间隔设置为2,y 轴的刻度间隔设置为1。代码如下:
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(-10, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
plt.xticks(np.arange(-10, 10, 2))
plt.yticks(np.arange(-1, 1.5, 1))
plt.show()
运行结果如下图所示:
上述代码中,我们通过 np.arange(-10, 10, 2)
和 np.arange(-1, 1.5, 1)
设置了 x 轴和 y 轴的刻度。其中 np.arange
函数的第一个参数表示最小值,第二个参数表示最大值,第三个参数表示步长。
除了设置主要刻度之间的间隔,有时候我们还需要设置次要刻度之间的间隔,以及次要刻度的显示方式。
在 matplotlib 中,可以通过 matplotlib.ticker
模块提供的 MultipleLocator
和 FormatStrFormatter
类来实现次要刻度的设置。其中,MultipleLocator
可以用来设置次要刻度之间的间隔,FormatStrFormatter
可以用来设置刻度的显示方式。
下面是一个绘制正弦曲线的例子,我们通过 np.arange
生成了 -10 到 10 的值域范围,并通过 np.sin(x)
得到了正弦值。我们希望将 x 轴的刻度间隔设置为2,y 轴的刻度间隔设置为1,并在 x 轴上设置每个主要刻度之间有 5 个次要刻度。代码如下:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
x = np.arange(-10, 10, 0.1)
y = np.sin(x)
plt.plot(x, y)
# 设置 x 轴刻度
x_major_locator = ticker.MultipleLocator(2)
x_minor_locator = ticker.MultipleLocator(0.4)
x_major_formatter = ticker.FormatStrFormatter('%d')
plt.xaxis.set_major_locator(x_major_locator)
plt.xaxis.set_minor_locator(x_minor_locator)
plt.xaxis.set_major_formatter(x_major_formatter)
# 设置 y 轴刻度
y_major_locator = ticker.MultipleLocator(1)
y_minor_locator = ticker.MultipleLocator(0.2)
y_major_formatter = ticker.FormatStrFormatter('%.1f')
plt.yaxis.set_major_locator(y_major_locator)
plt.yaxis.set_minor_locator(y_minor_locator)
plt.yaxis.set_major_formatter(y_major_formatter)
plt.show()
运行结果如下图所示:
上述代码中,我们通过 import matplotlib.ticker as ticker
导入了 ticker
模块,并分别创建了 x_major_locator
、y_major_locator
、x_minor_locator
和 y_minor_locator
四个对象。其中 MultipleLocator(2)
表示 x 轴上每个主要刻度之间有 5 个次要刻度,FormatStrFormatter('%d')
表示 x 轴的刻度显示为整数。
通过以上示例,我们介绍了在 matplotlib 中设置刻度之间的间隔和次要刻度的方式。在实际应用中,除了以上介绍的方式外,还可以根据具体的需求使用其他调整刻度的方法,例如 IndexLocator
、AutoLocator
等。