如何防止在Python matplotlib图中将数字改变为指数forms

我在Python中使用Matplotlib来绘制简单的xy数据集。 这会产生漂亮的graphics,但是当使用graphics视图(在执行plt.show()时出现)在绘制graphics的各个部分上“放大”时,x轴值将从标准数字forms(1050,1060,1070等)以指数符号(例如+1.057e3 ,x轴标签给出为+1.057e3 )科学forms。

我宁愿我的数字保留轴的简单编号,而不是使用指数forms。 有没有办法强制Matplotlib做到这一点?

刻度标签的格式由Formatter对象控制,假设你没有做任何事情,默认情况下是ScalerFormatter 。 如果可见值的分数变化非常小,则此格式化程序将使用常量移位。 为了避免这种情况,只需closures它:

 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 rcparam全局控制。

你可以使用像这样的东西:

 from matplotlib.ticker import ScalarFormatter, FormatStrFormatter ax.xaxis.set_major_formatter(FormatStrFormatter('%.0f')) 

您可以使用一个更简单的命令来closures它:

 plt.ticklabel_format(useOffset=False)