我有一个简单的图形,其中对象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()
答案 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()