101

Matlabを使用してこのプロットを作成しました

ここに画像の説明を入力してください

matplotlibを使用すると、x軸は100000、200000、300000などの大きな数値を描画します。1、2、3、10 ^ 5のようなものを使用して、実際には100000、200000、300000であることを示します。

matplotlibでそのようなスケールを作成する簡単な方法はありますか?

4

4 に答える 4

156

使用してみてくださいmatplotlib.pyplot.ticklabel_format

import matplotlib.pyplot as plt
...
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))

a x 10^bこれにより、x軸の目盛りに科学的記数法(つまり)が適用されます

于 2012-07-20T12:56:25.280 に答える
18

これは、元の質問に対する回答ではなく、質問の本文にある質問の1つに対する回答です。

私の命名が奇妙に見えないように、少し前文:

import matplotlib
from matplotlib import rc
from matplotlib.figure import Figure
ax = self.figure.add_subplot( 111 )

前述のように、ticklabel_formatを使用して、matplotlibが大きい値または小さい値に科学的記数法を使用するように指定できます。

ax.ticklabel_format(style='sci',scilimits=(-3,4),axis='both')

rcParamsのフラグ(matplotlib import rcParamsから)を使用するか、フラグを直接設定することで、これが表示される方法に影響を与えることができます。「1e」と「x10^」の科学的記数法を変更するためのよりエレガントな方法は、次のとおりです。

ax.xaxis.major.formatter._useMathText = True

これにより、より多くのMatlab-escが得られ、間違いなく見栄えが良くなります。私は以下が同じことをするべきだと思います:

rc('text', usetex=True)
于 2013-03-25T13:53:50.890 に答える
11

スカラーフォーマッタは、指数の収集をサポートします。ドキュメントは次のとおりです。

クラスmatplotlib.ticker.ScalarFormatter(useOffset = True、useMathText = False、useLocale = None)ベース:matplotlib.ticker.Formatter

ダニの場所は昔ながらの数字です。useOffset == Trueであり、データ範囲がデータ平均よりもはるかに小さい場合、目盛りラベルが意味を持つようにオフセットが決定されます。科学的記数法は、データ<10^-nまたはデータ>=10 ^ mに使用されます。ここで、nおよびmは、set_powerlimits((n、m))を使用して設定された電力制限です。これらのデフォルトは、axes.formatter.limitsrcパラメーターによって制御されます。

あなたのテクニックは次のようになります:

from matplotlib.ticker import ScalarFormatter
xfmt = ScalarFormatter()
xfmt.set_powerlimits((-3,3))  # Or whatever your limits are . . .
{{ Make your plot }}
gca().xaxis.set_major_formatter(xfmt)

指数を形式x10^5で表示するには、ScalarFormatterをでインスタンス化しますuseMathText=True

残像

次のものも使用できます。

xfmt.set_useOffset(10000)

このような結果を得るには:

ここに画像の説明を入力してください

于 2012-07-20T13:00:14.770 に答える
8

私は簡単な解決策を見つけます

pylab.ticklabel_format(axis='y',style='sci',scilimits=(1,4))
于 2012-12-21T06:17:17.663 に答える