web-dev-qa-db-ja.com

Python matplotlib figureで数値が指数形式に変更されるのを防ぐ方法

MatplotlibをPythonで使用して、単純なxyデータセットをプロットします。これにより、見栄えの良いグラフが生成されます。 plt.show())を実行すると表示されます。x軸の値は、標準の数値形式(1050、1060、1070など)から指数表記の科学形式(たとえば、x- +1.057e3)として指定された軸ラベル。

指数形式を使用するのではなく、軸の単純な番号付けを保持するフィギュアを好むでしょう。 Matplotlibにこれを強制する方法はありますか?

69
IanRoberts

目盛りラベルのフォーマットは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 rcparamを介してグローバルにこれを制御できます。

92
tacaswell

より簡単なコマンドを使用して、オフにすることができます。

plt.ticklabel_format(useOffset=False)
22
Eki

次のようなものを使用できます。

from matplotlib.ticker import ScalarFormatter, FormatStrFormatter

ax.xaxis.set_major_formatter(FormatStrFormatter('%.0f'))
13
Animesh Saxena