You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python的Matplotlib中获取次要刻度(minor ticks)的数据?

获取Matplotlib图表中次要刻度(Minor Ticks)的数据

要获取图表里次要刻度的位置和标签数据,直接用Matplotlib轴对象的两个方法就能实现:

获取次要刻度的位置

调用轴对象的get_minorticklocs()方法,可直接拿到对应轴上所有次要刻度的数值位置。针对X轴和Y轴的示例代码如下:

# 获取X轴次要刻度位置
x_minor_locs = ax.xaxis.get_minorticklocs()
# 获取Y轴次要刻度位置
y_minor_locs = ax.yaxis.get_minorticklocs()

print("X轴次要刻度位置:", x_minor_locs)
print("Y轴次要刻度位置:", y_minor_locs)

获取次要刻度的标签文本

如果要提取次要刻度显示的标签内容,先用get_minorticklabels()方法获取标签对象列表,再遍历每个对象调用.get_text()即可拿到文本内容:

# 获取X轴次要刻度标签文本
x_minor_labels = [label.get_text() for label in ax.xaxis.get_minorticklabels()]
# 获取Y轴次要刻度标签文本
y_minor_labels = [label.get_text() for label in ax.yaxis.get_minorticklabels()]

print("X轴次要刻度标签:", x_minor_labels)
print("Y轴次要刻度标签:", y_minor_labels)

整合到你的代码中

把上述代码加到你原有代码的plt.show()之前即可,完整示例如下:

from matplotlib import pyplot as plt
from matplotlib.ticker import MultipleLocator
import numpy as np
from numpy import random

weeks = np.arange(1,11)
cm = random.randint(10, size=(10))
plt.rcParams["figure.figsize"] = (15,10)
fig, ax = plt.subplots()
ax.grid(which='major', linestyle='-', linewidth='1', color='red')
ax.set_ylabel("cm")
ax.set_xlabel("weeks")
ax.minorticks_on()

plt.plot(weeks, cm)
ax.xaxis.set_minor_locator(MultipleLocator(1 / 9))
ax.yaxis.set_minor_locator(MultipleLocator(1 / 9))

ax.xaxis.set_minor_formatter(lambda x, pos: '123456789'[int(round(x * 9)) % 9])
ax.yaxis.set_minor_formatter(lambda x, pos: '123456789'[int(round(x * 9)) % 9])

ax.tick_params(axis='x', which='minor', labelsize=5)
ax.tick_params(axis='y', which='minor', labelsize=5)

ax.grid(True, which='both')
plt.xlim(1,10)
plt.ylim(1,10)
ax.yaxis.tick_right()
ax.yaxis.tick_left()

plt.plot(weeks, cm, marker='*', markersize=10, markeredgecolor='blue')
print("Value of get_minorticklines() :", ax.xaxis.get_minorticklines())
plt.vlines(weeks, 0, cm, linestyle="solid")
plt.hlines(cm, 0, weeks, linestyle="solid")

# 新增:获取次要刻度数据
# 获取刻度位置
x_minor_locs = ax.xaxis.get_minorticklocs()
y_minor_locs = ax.yaxis.get_minorticklocs()
print("\nX轴次要刻度位置:", x_minor_locs)
print("Y轴次要刻度位置:", y_minor_locs)

# 获取刻度标签文本
x_minor_labels = [label.get_text() for label in ax.xaxis.get_minorticklabels()]
y_minor_labels = [label.get_text() for label in ax.yaxis.get_minorticklabels()]
print("\nX轴次要刻度标签:", x_minor_labels)
print("Y轴次要刻度标签:", y_minor_labels)

plt.show()

注:因为你设置了自定义的次要刻度格式化函数,所以标签文本会是你定义的'123456789'中的对应字符,而刻度位置则是根据MultipleLocator(1/9)生成的连续数值。

内容的提问来源于stack exchange,提问作者aparna podili

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 22:54:34