如何防止图表中的数字被转换为指数形式
我在用Python的Matplotlib库来绘制简单的x-y数据集。这能生成看起来不错的图表,不过当我在图表的某些部分“放大”得太近时(通过执行plt.show()
后出现的图形视图),x轴的数值就会从普通的数字形式(比如1050、1060、1070等)变成科学计数法的形式(例如1、1.5、2.0,x轴的标签显示为+1.057e3
)。
我希望我的图表能保持简单的数字格式,而不是使用科学计数法。有没有办法可以强制Matplotlib这样做呢?
6 个回答
20
你可以使用类似下面的代码:
from matplotlib.ticker import ScalarFormatter, FormatStrFormatter
ax.xaxis.set_major_formatter(FormatStrFormatter('%.0f'))
37
你可以用一个更简单的命令来关闭它:
plt.ticklabel_format(useOffset=False)
105
刻度标签的格式是由一个叫做 Formatter
的对象来控制的。通常情况下,如果你没有做什么特别的设置,它会默认使用 ScalerFormatter
。这个格式器会在数值变化很小的时候使用一个固定的偏移量。为了避免这种情况,你只需要把它关掉:
plt.plot(arange(0,100,10) + 1000, arange(0,100,10))
ax = plt.gca()
ax.get_xaxis().get_major_formatter().set_useOffset(False)
plt.draw()
如果你想要避免使用科学计数法,
ax.get_xaxis().get_major_formatter().set_scientific(False)
可以通过 axes.formatter.useoffset
这个全局设置来控制。