首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在对数pyplot中同时使用yticks和ylim

在对数pyplot中同时使用yticks和ylim
EN

Stack Overflow用户
提问于 2019-06-13 21:30:23
回答 1查看 291关注 0票数 2

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

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

代码语言:javascript
代码运行次数:0
运行
复制
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)

这给了我们

显然,有比我指定的更多的刻度。但是,如果我不使用ylimyscale,则会显示正确的3个刻度。使用semilogy会导致相同的问题。以前有没有人遇到过这种情况,有谁知道解决办法吗?这是针对matplotlib 3.1的,但在3.0 (我刚刚从3.0升级)中也发生了这种情况。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-13 21:42:07

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

代码语言:javascript
代码运行次数:0
运行
复制
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$']);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56581665

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档