我在y轴上有一个用科学符号表示的图表。我想特别地抑制偏移量/ sci符号文本,即轴顶部的1e6:

这与简单地关闭科学符号是不一样的,因为科学符号会使轴勾标签2500000、2000000等。我想保留它们的标签,但只需将小1e6隐藏在顶部(因为轴标签上已经写着“百万/年”)。有一个简单或‘正确’的方法来做这件事吗?
(我能想到的最明显的黑客就是简单地将所有由1e6绘制的数据除以,但这并不是那么容易概括,我想知道是否有一种不太像黑客的解决方案。)
发布于 2021-07-05 16:23:16
为了避免1e7或更高的公共乘数出现错误,最好将值除以100万。一种方便的方法是使用滴答程序:
import matplotlib.pyplot as plt
fig, (ax1, ax2) = plt.subplots(ncols=2, figsize=(12, 4))
ax1.plot([0, 1.5e6])
ax1.yaxis.set_major_formatter(lambda x, pos: f'{x / 1e6:.1f}')
ax1.set_ylabel('incidents (millions/year)')
ax2.plot([0, 1.5e7])
ax2.yaxis.set_major_formatter(lambda x, pos: f'{x / 1e6:.1f}')
ax2.set_ylabel('incidents (millions/year)')
plt.tight_layout()
plt.show()

注意,在较早的matplotlib版本中,您不能直接设置格式化程序函数,因此需要显式的FuncFormatter。
https://stackoverflow.com/questions/68258827
复制相似问题