我在对数规模的pyplot中同时使用ylim
和yticks
时遇到了一些问题。请参见以下代码的输出:
将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)
这给了我们
显然,有比我指定的更多的刻度。但是,如果我不使用ylim
或yscale
,则会显示正确的3个刻度。使用semilogy
会导致相同的问题。以前有没有人遇到过这种情况,有谁知道解决办法吗?这是针对matplotlib 3.1的,但在3.0 (我刚刚从3.0升级)中也发生了这种情况。
发布于 2019-06-13 21:42:07
您看到的基本上是次要的刻度标签。我认为它们在设置限制后出现的原因是因为您是在小范围内放大。一种简单的解决方法是隐藏次要刻度标签。为了访问它们,我使用了轴对象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$']);
https://stackoverflow.com/questions/56581665
复制相似问题