Matlabを使用してこのプロットを作成しました
matplotlibを使用すると、x軸は100000、200000、300000などの大きな数値を描画します。1、2、3、10 ^ 5のようなものを使用して、実際には100000、200000、300000であることを示します。
matplotlibでそのようなスケールを作成する簡単な方法はありますか?
Matlabを使用してこのプロットを作成しました
matplotlibを使用すると、x軸は100000、200000、300000などの大きな数値を描画します。1、2、3、10 ^ 5のようなものを使用して、実際には100000、200000、300000であることを示します。
matplotlibでそのようなスケールを作成する簡単な方法はありますか?
使用してみてくださいmatplotlib.pyplot.ticklabel_format
:
import matplotlib.pyplot as plt
...
plt.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
a x 10^b
これにより、x軸の目盛りに科学的記数法(つまり)が適用されます
これは、元の質問に対する回答ではなく、質問の本文にある質問の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)
スカラーフォーマッタは、指数の収集をサポートします。ドキュメントは次のとおりです。
クラス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)
このような結果を得るには:
私は簡単な解決策を見つけます
pylab.ticklabel_format(axis='y',style='sci',scilimits=(1,4))