如何防止在对数对数图中出现不需要的Matplotlib y轴次要刻度标签(并保留x轴次要刻度)[duplicate]

k4ymrczo  于 2022-11-30  发布在  其他
关注(0)|答案(1)|浏览(138)

此问题在此处已有答案

How to disable the minor ticks of log-plot in Matplotlib?(3个答案)
2天前关闭。
此帖子已在2天前编辑并提交审核,无法重新打开帖子:
原始关闭原因未解决
在Matplotlib中,双对数图会为次要刻度生成不需要的y轴刻度标签。我尝试了以下代码,它将(主要)y轴刻度指定为[1,1.2,1.4,1.6],并期望任何y轴次要刻度都没有标签。

# imports
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')
plt.yticks(yticks)
plt.gca().set_yticklabels(minor='off',labels=yticklabels)
plt.show()

这产生了下面的曲线。

令人惊讶的是,次要y轴刻度具有为主要刻度指定的标签(即,具有不正确的值),而主要y轴刻度具有正确的值,但是以科学(指数)记法而不是所需的正常记法。
如何删除y轴上的次要刻度标签(希望不使用mticker),* 同时保留x轴的次要刻度标签,* 并使y轴的主要刻度标签遵循使用yticklabels指定的值?

vdgimpew

vdgimpew1#

要在matplotlib中禁用对数图的次要刻度,我们可以使用minorticks_off()方法。

相关问题