首页 > 解决方案 > 了解 LogLocator 中的 subs 参数

问题描述

我试图理解类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()

这会产生以下图表:

在此处输入图像描述

但是,我想要做的是在 y 轴上为所有这些刻度添加标签,而不仅仅是在 10^0、10^1、10^2 处。我相信这样做的方法是使用 a 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 ... 上显示标签

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

在此处输入图像描述

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

标签: matplotlib

解决方案


只需在plt.plot(). 由于日志间距,您将在次要刻度之间存在一些空间问题。但是您可以通过fontsize次要刻度标签来控制它。

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

输出

在此处输入图像描述


推荐阅读