我想用matplotlib.pyplot绘图。对于x轴上的刻度,我想得到整数乘以10的幂。但是,我得到的是整数乘以浮点数和10的幂,如下图所示。 / p>
使用以下命令停用此行为:
ax.get_xaxis().get_major_formatter().set_useOffset(False)
表示刻度标签仅为整数。
例如,我希望数字35000为35,轴上的乘数为10 ^ 3或3.5,乘数为10 ^ 4。不是25而乘数是1.4 * 10 ^ 3.
更新: 我用来生成图的代码:
fig = plt.figure(figsize=(5, 5), dpi=80)
ax = fig.add_subplot(111)
data = read_data(filename)
ax.hist(data, bins=50)
x_median = np.median(data)
x_std = np.std(data)
ax.set_xlim([x_median - 4*x_std, x_median + 4*x_std])
答案 0 :(得分:0)
对我来说,它看起来像预期的那样工作。您的值不会相乘,而是偏移 1.007x10^5。一开始你说你想要整数乘以 10 的幂,但你如何以这种方式表示 10750?没有四舍五入的唯一方法是 1075*10^1。在您允许浮点数乘以 10 的幂的示例中,它变得更加清晰。您只需要一种科学格式。最初是从 https://stackoverflow.com/a/6654046/15237183 并阅读了一些https://matplotlib.org/stable/api/ticker_api.html#matplotlib.ticker.ScalarFormatter,我建议您尝试
from matplotlib.ticker import ScalarFormatter
y_formatter = ScalarFormatter(useOffset=False, useMathText=True)
ax.yaxis.set_major_formatter(y_formatter)
useOffset=False 将切换到科学记数法而不是偏移记数法。而 useMathText=True 将幂格式化为 x10 而不是 1e。