使用 matplotlib 在除 10 次幂以外的对数刻度上显示起始值
Showing the starting value on log scale other than the power of 10 using matplotlib
我一直面临着用对数刻度在 x 轴上显示起始值的挑战。这不是 10 的幂。不幸的是,我找不到在 x 轴上显示此起始值的方法。我正在使用 matplotlib,主要的限制是我必须保持图表的格式,因此请提出一种解决问题而不改变现有格式的方法。
代码:
plt.plot(xdata,ydata)
plt.xscale("log")
plt.xlim([0.15, 30])
plt.ylim([-10, 80])
plt.minorticks_on()
plt.grid(which = 'minor', linestyle=':', linewidth = '0.5', color = 'black')
plt.grid(b = True, which = 'major', linestyle='-', linewidth = '1', color = '#666666')
plt.show()
当前输出
期望的输出
如果您不介意使用常规格式(非工程格式)的中间刻度标签,这可行:
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter
import numpy as np
xdata = np.logspace(np.log10(0.15), np.log10(30))
ydata = np.random.random(len(xdata))
fig, ax = plt.subplots()
ax.plot(xdata, ydata, '-s')
ax.set_xscale("log")
一旦你有了情节,你可以手动设置刻度:
ax.set_xticks([0.15, 1, 10, 30])
ax.get_xaxis().set_major_formatter(ScalarFormatter())
获得:
我一直面临着用对数刻度在 x 轴上显示起始值的挑战。这不是 10 的幂。不幸的是,我找不到在 x 轴上显示此起始值的方法。我正在使用 matplotlib,主要的限制是我必须保持图表的格式,因此请提出一种解决问题而不改变现有格式的方法。
代码:
plt.plot(xdata,ydata)
plt.xscale("log")
plt.xlim([0.15, 30])
plt.ylim([-10, 80])
plt.minorticks_on()
plt.grid(which = 'minor', linestyle=':', linewidth = '0.5', color = 'black')
plt.grid(b = True, which = 'major', linestyle='-', linewidth = '1', color = '#666666')
plt.show()
当前输出
期望的输出
如果您不介意使用常规格式(非工程格式)的中间刻度标签,这可行:
import matplotlib.pyplot as plt
from matplotlib.ticker import ScalarFormatter
import numpy as np
xdata = np.logspace(np.log10(0.15), np.log10(30))
ydata = np.random.random(len(xdata))
fig, ax = plt.subplots()
ax.plot(xdata, ydata, '-s')
ax.set_xscale("log")
一旦你有了情节,你可以手动设置刻度:
ax.set_xticks([0.15, 1, 10, 30])
ax.get_xaxis().set_major_formatter(ScalarFormatter())
获得: