8

y 軸の目盛りラベルごとに、次のように変更したいと思います。 label -> 2^label

log-log データ (基数 2) をプロットしていますが、ラベルに元のデータ値を表示したいと考えています。

現在の y ラベルを取得できることはわかっています ylabels = plt.getp(plt.gca(), 'yticklabels')

これにより、リストが表示されます。<a list of 9 Text yticklabel objects> それぞれが<matplotlib.text.Text object at 0x...>

http://matplotlib.org/users/text_props.htmlでテキスト オブジェクトのドキュメントを見ましたが 、各テキスト ラベルの文字列を変更するための正しい構文がまだわかりません。

ラベルを変更したら、次を使用して軸にラベルを設定できます。

plt.setp(plt.gca(), 'yticklabels', ylabels)

4

2 に答える 2

11

一般的なケースでこれを行いたい場合は、使用できますFuncFormatter(参照: matplotlib軸ラベル形式、 imshow:画像インデックスの任意の関数としてのラベル。Matplotlib set_major_formatter AttributeError

あなたの場合、次のように動作するはずです:

import matplotlib as mpl
import matplotlib.pyplot as plt

def mjrFormatter(x, pos):
    return "$2^{{{0}}}$".format(x)

def mjrFormatter_no_TeX(x, pos):
    return "2^{0}".format(x)

ax = plt.gca()
ax.yaxis.set_major_formatter(mpl.ticker.FuncFormatter(mjrFormatter))
plt.draw()

アブスアード{}エスケープは、新しいスタイルの文字列 frommating の結果です。

于 2013-02-27T23:43:01.807 に答える
-1

http://matplotlib.org/api/axes_api.html#matplotlib.axes.Axes.set_yticksに従って

a = plt.gca()
a. set_yticks(list_of_labels)

于 2013-05-02T02:34:48.703 に答える