Matplotlib整数刻度和轴乘数为10

时间:2017-10-30 19:20:33

标签: python matplotlib figure

我想用matplotlib.pyplot绘图。对于x轴上的刻度,我想得到整数乘以10的幂。但是,我得到的是整数乘以浮点数和10的幂,如下图所示。 / p>

enter image description here

使用以下命令停用此行为:

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])

此外,另一个使用相同代码但没有相同问题的情节。 enter image description here

1 个答案:

答案 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)

enter image description here

useOffset=False 将切换到科学记数法而不是偏移记数法。而 useMathText=True 将幂格式化为 x10 而不是 1e。