我正在使用python2.7在pyqt程序中使用matplotlib绘制一些大的数字。(通常)。我希望看到每个刻度线以科学计数法显示值,并保留2位小数。例如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()
2条答案
按热度按时间4urapxun1#
如果你使用
matplotlib.ticker.FormatStrFormatter
而不是LogFormatter
,这真的很容易做到。下面的代码将用'%.2e'
标记所有内容:prdp8dxp2#
为了得到科学记数法中格式良好的标签,可以使用
ScalarFormatter
的格式化功能,它使用MathText(Latex)并将其应用于标签。虽然这在很多情况下可能很有用,但它实际上并不符合问题的要求。为了在所有标签上都有相等的数字,可以使用更定制的版本。