0

matplotlib がグラフに自動的に配置するオフセットを削除しようとしています。たとえば、次のコードを使用します。

x=np.array([1., 2., 3.])
y=2.*x*1.e7
MyFig = plt.figure()
MyAx = MyFig.add_subplot(111)
MyAx.plot(x,y)

次の結果が得られます(申し訳ありませんが、画像を投稿できません):y軸の目盛りは2、2.5、3、...、6で、y軸の上部に一意の「x10 ^ 7」があります。

軸の上から「x10 ^ 7」を削除し、各目盛り(2x10 ^ 7、2.5x10 ^ 7など)で表示されるようにしたいと思います。他のトピックで見たことをよく理解していれば、use_Offset 変数をいじる必要があります。そこで、次のことを試しました。

MyFormatter = MyAx.axes.yaxis.get_major_formatter()
MyFormatter.useOffset(False)
MyAx.axes.yaxis.set_major_formatter(MyFormatter)

成功せずに (結果は変更されません)。私は何か間違ったことをしていますか?この動作を変更するにはどうすればよいですか? または、目盛りを手動で設定する必要がありますか?

助けてくれてありがとう!

4

1 に答える 1

0

モジュールの を使用してFuncFormatterticker目盛りラベルを好きなようにフォーマットできます。

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.ticker import FuncFormatter

x=np.array([1., 2., 3.])
y=2.*x*1.e7

MyFig = plt.figure()
MyAx = MyFig.add_subplot(111)

def sci_notation(x, pos):
    return "${:.1f} \\times 10^{{6}}$".format(x / 1.e7)

MyFormatter = FuncFormatter(sci_notation)

MyAx.axes.yaxis.set_major_formatter(MyFormatter)

MyAx.plot(x,y)

plt.show()

ここに画像の説明を入力


余談ですが; 軸の上部に表示される「x10^7」の値はオフセットではなく、科学表記法で使用される係数です。この動作は、 を呼び出すことで無効にできますMyFormatter.use_scientific(False)。数値は小数として表示されます。

後者はscaleであるため、オフセットは、乗算するのではなく、 tickvaluesに加算(または減算) する必要がある値です。

参考までに、ライン

MyFormatter.useOffset(False)

する必要があります

MyFormatter.set_useOffset(False)

最初のものは a bool(値Trueまたはのみを持つことができますFalse) であるため、メソッドとして呼び出すことはできません。後者は、オフセットを有効/無効にするために使用される方法です。

于 2013-07-17T15:03:50.207 に答える