Python matplotlib由于日志范围而在y轴上缺少次刻度>;十年

Python matplotlib由于日志范围而在y轴上缺少次刻度>;十年,python,python-3.x,matplotlib,jupyter-notebook,Python,Python 3.x,Matplotlib,Jupyter Notebook,首先,这个问题直接关系到我们的利益 对于1E-15到1E-4范围内的值,我尝试在y轴上获得相同的结果 我还没有足够的声誉在引用的问题中发表评论-抱歉加倍! Testsetup:我使用Jupyter 4.3.0和matplotlib 2.0.2以及numpy 1.13.1 以下代码(来自参考问题)在我的Jupyter安装上的x轴上未显示小刻度。我需要y轴,但应该是相同的程序 谢谢你的帮助,让我朝着正确的方向前进 import matplotlib.pyplot as plt import mat

首先,这个问题直接关系到我们的利益
对于1E-15到1E-4范围内的值,我尝试在y轴上获得相同的结果
我还没有足够的声誉在引用的问题中发表评论-抱歉加倍!

Testsetup:我使用Jupyter 4.3.0和matplotlib 2.0.2以及numpy 1.13.1

以下代码(来自参考问题)在我的Jupyter安装上的x轴上未显示小刻度。我需要y轴,但应该是相同的程序

谢谢你的帮助,让我朝着正确的方向前进

import matplotlib.pyplot as plt
import matplotlib.ticker
import numpy as np

#Used this to reset any changes to the rc params
#plt.rcParams.update(plt.rcParamsDefault)

x = np.arange(10) # np.arange(9) is working as expected - well documented issue with >10 range for ticker.LocLocator
y = 10.0**x

fig, ax=plt.subplots()
ax.plot(y,x)
ax.set_xscale("log")

locmaj = matplotlib.ticker.LogLocator(base=10.0, subs=(0.1,1.0, ))
ax.xaxis.set_major_locator(locmaj)

locmin = matplotlib.ticker.LogLocator(base=10.0, subs=(0.1,0.2,0.4,0.6,0.8,1,2,4,6,8,10 )) 
ax.xaxis.set_minor_locator(locmin)
ax.xaxis.set_minor_formatter(matplotlib.ticker.NullFormatter())

plt.show()
结果图-


需要更改的参数ind
numticks
,该参数限制将发出的滴答声的数量

import matplotlib.pyplot as plt
import matplotlib.ticker
import numpy as np

#Used this to reset any changes to the rc params
#plt.rcParams.update(plt.rcParamsDefault)

x = np.arange(10) 
y = 10.0**x

fig, ax=plt.subplots()
ax.plot(y,x)
ax.set_xscale("log")

locmaj = matplotlib.ticker.LogLocator(base=10.0, subs=(1.0, ), numticks=100)
ax.xaxis.set_major_locator(locmaj)

locmin = matplotlib.ticker.LogLocator(base=10.0, subs=np.arange(2, 10) * .1,
                                      numticks=100)
ax.xaxis.set_minor_locator(locmin)
ax.xaxis.set_minor_formatter(matplotlib.ticker.NullFormatter())

plt.show()

一旦定位器决定开始跳过几十年,如果
subs
不是
(1),
所有刻度都将被抑制,以防止一些非常混乱的刻度标签


也不是说刻度将位于
[s*base**i处,用于在范围内(最小十年、最大十年、十年、步幅)i的subs中的s
因此,在
subs
中放入仅由
base
的倍数不同的值,只需重新勾选相同的点。

好的,我看到了问题。链接问题的解决方案在matplotlib 2.0.0(或更低版本)中有效,但它在matplotlib 2.0.2上似乎不起作用。原因目前尚不清楚,正在调查中。我打开了一个功能请求,以使12月10日的限制超出范围。我想问题现在已经解决了,因此我将其标记为原始帖子的副本。是的,从现在起它将是一个副本。非常感谢您对Feingernest和tacaswell的重视st解决方案!我更新了我的原始答案。