【发布时间】:2013-12-09 12:38:20
【问题描述】:
我使用 matplotlib 的 symlog 比例来覆盖大范围的参数,这些参数延伸到正向和负向。不幸的是,符号量表不是很直观,也可能不是很常用。因此,我想通过在主要刻度之间放置次要刻度来使使用的缩放更加明显。在刻度的对数部分,我想在 [2,3,…,9]*10^e 处放置刻度,其中 e 是附近的主要刻度。此外,0 到 0.1 之间的范围应该被均匀放置的小刻度覆盖,它们之间的距离为 0.01。我尝试使用matplotlib.ticker API 使用以下代码得出这样的刻度:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.ticker import LogLocator, AutoLocator
x = np.linspace(-5, 5, 100)
y = x
plt.plot(x, y)
plt.yscale('symlog', linthreshy=1e-1)
yaxis = plt.gca().yaxis
yaxis.set_minor_locator(LogLocator(subs=np.arange(2, 10)))
plt.show()
不幸的是,这并没有产生我想要的:
请注意,在 0 附近有许多次要刻度,这可能是由于 LogLocator。此外,负轴上没有小刻度。
如果我改用和AutoLocator,则不会出现小勾号。 AutoMinorLocator 只支持均匀缩放的轴。因此,我的问题是如何实现所需的刻度位置?
【问题讨论】:
-
我做了一些比接受的答案更简单的事情,这可能适用于我需要的示例。我使用了 ax.set_xticks 方法
标签: python matplotlib