Matplotlib - 刻度与刻度标签
在图表和绘图的上下文中,ticks(刻度)是显示 x 轴和 y 轴比例的小线条,为每个刻度关联的值提供清晰的表示。而 tick labels(刻度标签)则是与轴上每个刻度关联的文本或数字注释,为每个刻度关联的值提供清晰的表示。
下图展示了图表上的刻度和刻度标签 —
可视化中有两种类型的刻度:major(主刻度)和 minor(次刻度)。Major(主刻度)标记是可放置标签的位置,提供重要的参考点。另一方面,minor(次刻度)标记表示主刻度之间的值。请参阅下图作为参考 —
Matplotlib 中的刻度和刻度标签
Matplotlib 提供了多种工具来控制轴上的刻度和刻度标签,允许您通过指定自定义位置和标签来自定义刻度和刻度标签。
Matplotlib 的默认行为是根据所绘制数据的范围和比例自动确定刻度的数量及其位置,这种灵活性有助于提供额外信息或根据偏好格式化标签。
使用默认刻度和标签的基本绘图
默认情况下,Matplotlib 会根据提供的数据确定合适的刻度位置和标签。
示例 - 默认刻度和标签的使用
此示例生成一个带有默认刻度和标签的简单正弦波图。
import matplotlib.pyplot as plt
import numpy as np
# 示例数据
t = np.linspace(0.0, 2.0, 201)
s = np.sin(2 * np.pi * t)
# 创建图表
fig, ax = plt.subplots(figsize=(7,4))
# 绘制数据
plt.plot(t, s)
plt.title('Sine Wave')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# 显示图表
plt.show()
输出
执行上述程序后,您将得到以下示例 —

自定义刻度和刻度标签
自定义刻度和刻度标签可以通过使用诸如 axes.set_xticks() 和 axes.set_yticks() 等函数,以及 plt.xticks() 和 plt.yticks() 来实现。
刻度和刻度标签的基本自定义可能涉及使用自定义字符串标记刻度、旋转自定义刻度标签等操作。
示例 - 自定义刻度和标签
以下示例演示了如何使用特定位置、标签和旋转来自定义 x 轴刻度。它会转换或缩放轴值并重新定义刻度频率。
import matplotlib.pyplot as plt
import numpy as np
# Create plot
fig, ax = plt.subplots(figsize=(7,4))
# Sample data
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
# Plotting the data
plt.plot(x, y)
plt.title('Sine Wave')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# Custom ticks and tick labels
custom_ticks = [0, np.pi/2, np.pi, (3*np.pi)/2, 2*np.pi]
custom_tick_labels = ['0', '$\\pi/2$', '$\\pi$', '3$\\pi/2$', '2$\\pi$']
ax.set_xticks(custom_ticks, custom_tick_labels, rotation='vertical')
# Display the plot
plt.show()
输出
执行上述程序后,您将得到以下示例 −
示例 - 自定义刻度标签位置
此示例演示了如何自定义刻度标签的位置和可见性,调整刻度标签与轴标签之间的间距,并在 Matplotlib 图轴上关闭刻度和标记。
import numpy as np
import matplotlib.pyplot as plt
# Create subplots
fig, ax = plt.subplots(1, 1)
# Plot some data
plt.plot([1, 2, 3, 4, 5])
# Set tick positions and labels
plt.xticks([1, 2, 3, 4, 5])
# show the tick labels on top of the plot?
ax.xaxis.set_tick_params(labeltop=True)
# set gap between the tick labels and axis labels
plt.xlabel("X-axis", labelpad=25)
# turn off the ticks and marks on botton x axis
ax.tick_params(axis='both', which='both', bottom=False, top=True, left=True, right=False, labelbottom=True, labelleft=True)
# Displaying the plot
plt.show()
输出
执行上述代码后,您将得到以下输出 −
添加次要刻度
次要刻度最初是禁用的,但可以通过配置次要定位器来启用它们而无需标签。Matplotlib 库中的 ticker 模块提供了两个类,即 MultipleLocator 和 AutoMinorLocator。这些类分别支持在指定基数的倍数处放置刻度,并允许您为每个主要间隔指定固定数量的次要间隔。作为替代方法,可以使用 minorticks_on() 方法来启用它们。
示例 - 次要刻度的使用
以下示例演示了如何向图表添加次要刻度。这里我们将使用 minorticks_on() 方法。
import matplotlib.pyplot as plt
import numpy as np
# Sample data
x = np.linspace(0, 2 * np.pi, 100)
y = np.sin(x)
fig, ax = plt.subplots(figsize=(7,4))
# Plotting the data
plt.plot(x, y)
plt.title('Sine Wave')
plt.xlabel('X-axis')
plt.ylabel('Y-axis')
# Adding minor ticks
plt.minorticks_on()
# Display the plot
plt.show()
输出
执行上述程序后,您将得到以下示例 −
