Matplotlib:将Y轴更改为对数刻度后,将Y轴设置为无科学计数法

时间:2020-03-14 18:02:21

标签: python matplotlib

我有一个简单的图形,其中对象axs为轴。在更改Y轴以对数缩放之前,格式只是常规数字。

使用以下命令将Y轴更改为对数刻度后:axs.set_yscale('log') ...然后尝试使用

将数字改回

axs.set_yticklabels(['{:,}'.format(int(x)) for x in axs.get_yticks().tolist()])

这不起作用...标签仍然保留为科学计数法。

我只想返回常规数字。

我正在使用:

fig = plt.figure(figsize=(30, 15))
axs = fig.add_subplot(1, 1, 1)
axs.plot()

1 个答案:

答案 0 :(得分:1)

如前所述,here您可以设置ScalarFormatter来省略科学计数法。还需要.set_scientific(False)来抑制大量的科学计数法。

如果要处理负面权力,您可能需要axs.yaxis.set_major_formatter(ticker.FuncFormatter(lambda y, _: '{:g}'.format(y)))

from matplotlib import pyplot as plt
from matplotlib.ticker import ScalarFormatter

fig = plt.figure(figsize=(30, 15))
axs = fig.add_subplot(1, 1, 1)
axs.plot()
axs.set_ylim(100000, 100000000)
axs.set_yscale('log')
formatter = ScalarFormatter()
formatter.set_scientific(False)
axs.yaxis.set_major_formatter(formatter)
plt.show()

resulting plot