以上代码,强制水平刻度每隔5个单位步长呈现一次。此外,我们还添加了副刻度,副刻度的间隔为1个单位步长,步骤说明如下:
-
首先实例化一个Axes对象——用于管理图形中的坐标轴:
ax=plot.Axes()
。 -
然后使用
Locator
实例设置x轴(ax.xaxis)或y轴(ax.yaxis)的主刻度和副刻度。
也为副刻度添加辅助网格:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker
x = np.linspace(-20, 20, 1024)
y = np.sinc(x)
ax = plt.axes()
ax.xaxis.set_major_locator(ticker.MultipleLocator(5))
ax.xaxis.set_minor_locator(ticker.MultipleLocator(1))
plt.grid(True, which=‘both’, ls=‘dashed’)
plt.plot(x, y, c = ‘m’)
plt.show()
Tips:我们已经知道,可以使用plt.grid()添加辅助网格,但此函数还有一个可选参数which,它具有三个可选值:"minor"、"major"和"both",分别用于仅显示副刻度、仅显示主刻度、主副刻度同时显示。
是时候介绍刻度标签的设置了,刻度标签是图形空间中的坐标,虽然数字刻度标签对于大多说场景来说是足够的,但是却并不总是能够满足需求。例如,我们需要显示100个公司的营收情况,这时候我们就需要横坐标刻度标签为公司名,而非数字;同样对于时间序列,我们希望横坐标刻度标签为日期…。考虑到此类需求,我们需要使用Matplotlib为此提供了的API控制刻度标签。
可以按以下步骤为任何Matplotlib图形设置刻度标签:
import numpy as np
import matplotlib.ticker as ticker
import matplotlib.pyplot as plt
name_list = (‘Apple’, ‘Orange’, ‘Banana’, ‘Pear’, ‘Mango’)
value_list = np.random.randint(0, 99, size = len(name_list))
pos_list = np.arange(len(name_list))
ax = plt.axes()
ax.xaxis.set_major_locator(ticker.FixedLocator((pos_list)))
ax.xaxis.set_major_formatter(ticker.FixedFormatter((name_list)))
plt.bar(pos_list, value_list, color = ‘c’, align = ‘center’)
plt.show()
Tips:我们首先使用ticker.Locator实例来生成刻度的位置,然后使用ticker.Formatter实例将为刻度生成标签。FixedFormatter从字符串列表中获取标签,然后用Formatter实例设置坐标轴。同时,我们还使用了FixedLocator来确保每个标签中心都正好与刻度中间对齐。
更简单的设置方式
虽然使用上述方法可以控制刻度标签,但可以看出此方法过于复杂,如果刻度标签是固定的字符列表,那么可以用以下简单的设置方法: