matplotlib日志轴:仅显示10的幂

时间:2014-07-13 14:32:00

标签: python matplotlib plot

我有一个对数 - 对数图,其x轴范围为10 ^ 9到10 ^ 12。 (这是我第一次发帖,所以我无法发布我的情节图像)

我想更改x和y轴,以便仅显示10的幂。像x轴上的9,10,11,12这样的东西。

我使用了matplotlib.ticker.LogFormatterExponent(base=10.0, labelOnlyBase=True),但它不能完成这项工作。有什么建议吗?

2 个答案:

答案 0 :(得分:2)

在半对数图上以线性比例绘制X数据是否容易?

plt.semilogy(np.log10(x), y)

然后你将X比例作为十的幂。

例如:

import numpy as np
import matplotlib.pyplot as plt

# create some data
x = 10**np.linspace(0,9,100)
y = np.sqrt(100 + x)

# plot the figure
fig = plt.figure()
ax = fig.add_subplot(111)
ax.semilogy(np.log10(x), y)

ax.set_xlabel("$10^x$")
ax.set_ylabel("$\sqrt{100 + x}$")

这给出了:

enter image description here

答案 1 :(得分:0)

LogFormatterExponent(base=10.0, labelOnlyBase=True)按预期工作。

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

x = 10**np.linspace(8.5,12.6)
y = np.sin(x)

fig,ax = plt.subplots()
ax.scatter(x,y)
ax.set_xscale('log')
ax.set_xlabel("Quantity [$10^{x}]$")

logfmt = matplotlib.ticker.LogFormatterExponent(base=10.0, labelOnlyBase=True)
ax.xaxis.set_major_formatter(logfmt)

plt.show()

enter image description here