了解LogLocator中的subs参数

时间:2018-08-20 11:44:28

标签: matplotlib

我试图理解subs类中的LogLocator参数,该参数确定在MatPlotLib图上主要/次要刻度线应该位于何处。

这是我的代码:

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

x = np.arange(30)
y = np.power(x, 1.5)

fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.set_yscale("log")
ax.plot(x, y)

plt.show()

这将产生以下图形:

enter image description here

但是,我要做的是在所有这些刻度线的y轴上都有标签,而不是仅仅在10 ^ 0、10 ^ 1、10 ^ 2处。我相信这样做的方法是使用LogLocator,因此我尝试在代码中插入以下内容:

ax.yaxis.set_major_locator(ticker.LogLocator(base=10, subs=np.arange(2, 10) * 0.1))

这里的想法是它将在0.1、0.2、0.3 .... X 10 ^ 0、10 ^ 1、10 ^ 3 ...上显示标签

但是,该图似乎完全删除了所有标签:

enter image description here

那么我应该在subs参数中使用什么来获得所需的行为?

1 个答案:

答案 0 :(得分:0)

只需在plt.plot()之后添加以下行。由于对数间隔,您会在较小的刻度之间有一些空间问题。但是您可以通过次要刻度标签的fontsize进行控制。

ax.yaxis.set_minor_formatter(FormatStrFormatter("%.1f"))

输出

enter image description here