如何在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()
关键改动说明:
- 把
plt.yticks(yticks)和plt.gca().set_yticklabels(...)合并为plt.yticks(yticks, yticklabels),这样Matplotlib会直接使用你指定的标签,不会自动对对数轴刻度应用科学计数法格式。 - 添加
plt.gca().yaxis.set_tick_params(labelminor=False),仅关闭Y轴次要刻度的标签显示,X轴的次要刻度不受影响,依然保留。
这样运行后,Y轴只会显示你指定的[1,1.2,1.4,1.6]标签,次要刻度无标签,X轴次要刻度正常保留,完全符合你的需求。
内容的提问来源于stack exchange,提问作者gammarayon
相关产品推荐
相关产品推荐

