28

matplotlib で、凡例のタイトルの配置を調整するにはどうすればよいですか? 常に中央に配置されますが、凡例ボックスに合わせて左に配置する必要があります。効果のないタイトルのテキスト アーティストの配置を変更しようとしました。詳細については、次の例を参照してください。

from pylab import *

x = linspace(0, 1)
plot(x, x, label="1")
plot(x, x**2, label="2")
plot(x, x**3, label="3")
plot(x, sqrt(x), label="square root")

l = legend(title="Title", loc="best")
l.get_title().set_ha("left")               # <== does not work

show()

問題は、タイトル アライメントのアンカー ポイントを制御するのは誰で、何に帰着するのでしょうか? 配置を「右」または「中央」に変更すると、顕著な効果があります。2 番目の観察: 長いタイトル文字列の場合、アンカー ポイントは凡例ボックスの左端に移​​動します ...

4

2 に答える 2

31

凡例ボックスの設定を完全に揃えることができますleg._legend_box.align。これにより、凡例ボックス内のすべてが整列されますが、ボックスの中央ではなく両側にタイトルを配置することが望ましい効果です。

  • 左揃え

    leg = plt.legend(title="Title")
    leg._legend_box.align = "left"
    

    ここに画像の説明を入力

  • 右揃え

    leg = plt.legend(title="Title")
    leg._legend_box.align = "right"
    

    ここに画像の説明を入力

于 2017-06-19T00:04:17.043 に答える
7

Textメソッドを使用して、オブジェクトを移動する必要があると思いますset_position((x, y))xとの単位yはピクセルであるため、適切に見える値を試すか、 を使用する必要がありTransformます。のどの組み合わせTransformsが最も役立つかはわかりません。

要するに、次のようなものが機能する可能性があります。

l.get_title().set_position((-10, 0)) # -10 is a guess
于 2013-03-26T13:49:38.050 に答える