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軸の目盛りに科学表記(つまり)を適用します。
ticklabel_format
は、Axesオブジェクトのメソッドでもあります。次のようなものを試すことができますax.ticklabel_format(style='sci', axis='x', scilimits=(0,0))
[0.1, 0.2, ...]
、[1, 2, ...]
指数を調整したほうがいいです。その解決策を見つけることができましたか?
これは、元の質問に対する回答ではなく、質問の本文にあるクエリの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.limits rcパラメーターによって制御されます。
あなたのテクニックは:
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)
このような結果を得るには:
useMathText=True
してScalarFormatterをインスタンス化しますx10^4
。