我正在使用 python 2.7 在 pyqt 程序中使用 matplotlib 绘制一些大数字。我的 y 轴范围为 1e+18 到 3e+18(通常)。我希望看到每个刻度线以科学计数法显示值并保留两位小数。例如,2.35e+18 而不是 2e+18,因为对于一些刻度线,2e+18 和 3e+18 之间的值仍然仅读取 2e+18。这是该问题的一个示例。
import numpy as np
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.add_subplot(111)
x = np.linspace(0, 300, 20)
y = np.linspace(0,300, 20)
y = y*1e16
ax.plot(x,y)
ax.get_xaxis().set_major_formatter(plt.LogFormatter(10, labelOnlyBase=False))
ax.get_yaxis().set_major_formatter(plt.LogFormatter(10, labelOnlyBase=False))
plt.show()
如果您使用的话,这真的很容易做到matplotlib.ticker.FormatStrFormatter
与LogFormatter
。以下代码将以格式标记所有内容'%.2e'
:
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mtick
fig = plt.figure()
ax = fig.add_subplot(111)
x = np.linspace(0, 300, 20)
y = np.linspace(0,300, 20)
y = y*1e16
ax.plot(x,y)
ax.yaxis.set_major_formatter(mtick.FormatStrFormatter('%.2e'))
plt.show()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)