【发布时间】:2020-07-31 23:15:10
【问题描述】:
我正在尝试重现此图 - 特别是对数刻度 x 轴:
主要目标是让我能够将 x 轴显示为等间距的对数刻度。
我目前正在使用 matplotlib 中的 semilogx,但是这不包括 0(当然,log(0) 将是未定义的)。但是,我在 0 处有一个数据点,需要显示它。实际上,我的代码如下所示:
dt = 0.01
t = np.arange(0, 1, 0.1)
x = [0, 10**-6, 10**-5, 10**-4, 10**-3, 10**-2, 1]
dfy = list(averages.iloc[0, :]) # where averages is a row with 7 entries
plt.plot(x, dfy, marker = 'o', linestyle = '') # plots graph
plt.semilogx(t, np.exp(-t/5.0), linestyle = '')
生成的图表看起来像这样,除了缺少 0,我很满意:
我试过了:
plt.xscale('symlog')
plt.xscale('log')
但是,这不会产生所需的均匀间隔的对数刻度。此外,我尝试过使用 0, 10^-16 代替,但这仅包括 -6 和 -16 之间的所有幂。我需要它从 0 开始,然后立即变为 10^-6。
感谢任何建议。提前致谢。
【问题讨论】:
-
调用
plt.xscale('symlog')在 matplotlib 3.3.0 中以您的示例为我工作。你的版本是什么? -
好的,我更新了 matplotlib,但它仍然没有相等的间距。您是否使用了任何其他参数?
-
在你上面的例子中,你实际上并没有在任何地方使用
x,这是故意的吗? -
更新了代码以包含我如何使用 x。谢谢。
标签: python matplotlib graph axis logarithm