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

如何在Matplotlib双对数图中隐藏Y轴次要刻度标签并保留X轴次要刻度

解决Matplotlib双对数图Y轴刻度标签问题

直接调整两处关键设置就能解决你的问题,无需依赖mticker模块:

  • 关闭Y轴次要刻度标签:通过yaxis.set_tick_params()直接禁用次要刻度的标签显示,不影响X轴的次要刻度。
  • 正确绑定Y轴主刻度与标签:在plt.yticks()中同时指定刻度位置和对应标签,避免对数轴自动套用科学计数法格式。

修改后的完整代码:

import numpy as np
from matplotlib import pyplot as plt

# data
x = np.linspace(0,4,31)
y1 = 1.7 - 0.3*x
y1min = y1-0.05
y1max = y1+0.05

# ticks
yticks = [1,1.2,1.4,1.6]
yticklabels = [str(yt) for yt in yticks]

# figure
plt.figure()
plt.plot(x,y1,color='r')
plt.ylim([0.9,1.6])
plt.xlabel('x')
plt.xscale('log')
plt.yscale('log')
plt.ylabel('y')

# 同时设置主Y轴刻度和对应标签,避免科学计数法
plt.yticks(yticks, yticklabels)
# 关闭Y轴次要刻度的标签,保留X轴次要刻度不变
plt.gca().yaxis.set_tick_params(labelminor=False)

plt.show()

关键改动说明:

  1. 把plt.yticks(yticks)和plt.gca().set_yticklabels(...)合并为plt.yticks(yticks, yticklabels),这样Matplotlib会直接使用你指定的标签,不会自动对对数轴刻度应用科学计数法格式。
  2. 添加plt.gca().yaxis.set_tick_params(labelminor=False),仅关闭Y轴次要刻度的标签显示,X轴的次要刻度不受影响,依然保留。

这样运行后,Y轴只会显示你指定的[1,1.2,1.4,1.6]标签,次要刻度无标签,X轴次要刻度正常保留,完全符合你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 00:35:17