在对数pyp中同时使用yticks和ylim

2024-04-25 04:48:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我在对数比例的pyplot中使用ylimyticks时遇到了一些问题。请参见以下代码的输出:

将numpy作为np导入 从matplotlib导入pyplot作为plt

plt.figure(figsize=(5, 3))
x = np.linspace(0, 1, 101)
y = np.exp(-5*x)
plt.plot(x, y, 'o', c=blue, markersize=4)
plt.yscale('log')
plt.yticks([10**-1, 1/np.e, 10**0], [r'$10^{-1}$', r'$1/e$', r'$10^0$'])
plt.ylim(10**-1,10**0)

这给

enter image description here

很明显这里的虱子比我说的多。但是,如果我不使用ylimyscale,则会显示正确的3个记号。使用semilogy会导致相同的问题。以前有人遇到过这种情况吗?有人知道解决方法吗?这是针对matplotlib3.1的,但也发生在3.0中(我刚刚从中升级)。你知道吗


Tags: 代码numpyplotmatplotlibnppltbluefigure
1条回答
网友
1楼 · 发布于 2024-04-25 04:48:42

你看到的基本上是次要的记号标签。我认为它们在设置限制后出现的原因是因为你在一个小范围内放大。一个简单的解决方法是隐藏次要的记号标签。为了访问它们,我使用axis对象ax

fig, ax = plt.subplots(figsize=(5, 3)) # < - Define an axis object
x = np.linspace(0, 1, 101)
y = np.exp(-5*x)
plt.plot(x, y, 'o', c='blue', markersize=4)
plt.yscale('log')

plt.ylim(10**-1,10**0)
plt.setp(ax.get_yminorticklabels(), visible=False) # < - Hide the minors
plt.yticks([10**-1, 1/np.e, 10**0], [r'$10^{-1}$', r'$1/e$', r'$10^0$']);

enter image description here

相关问题 更多 >