2016-07-04 22 views
2

デフォルトでは、matplotlibは軸のラベルを軸の中心にプロットします。私はそれが水平軸と垂直軸の両方の軸の端に揃えられるようにラベルを移動したいと思います。例えば、横軸のために私が見たい:軸のラベルを右に揃える方法

+--------------------+ 
|     | 
|     | 
|     | 
|     | 
|     | 
+--------------------+ 
       label 

は、matplotlibののグローバル設定でそれを行うためにpossibileですか?私は控えめに言って、あまり理解していない魔法の値25を紹介

答えて

7

OK、私は一人で私の他の回答(1)を残しておきますが、これは

... 
plt.xlabel('x_description', horizontalalignment='right', x=1.0) 
plt.ylabel('y_description', horizontalalignment='right', y=1.0) 
... 

あなたが見ることができるように良いもの、これ以上のマジックナンバーで、両方xlabelylabelのために動作します。両方のケースで、我々は、私が最初ylabelに垂直方向の配置を変更したときに私に最終的に透明であった理由のために、水平方向の配置を変更しようとしている

注...


(1)ので、オブジェクトを取得し、そのオブジェクトを修正し、それを元に戻すアイデアは、それ自体で良いアイデアですね。

+1

6文字の制限で編集できません。plt.xlabel( 'x description'、horizo​​ntalalignment = 'right'、x = 1.0) ' – anatol

+0

@anatol exchange' horizo​​ntalalignment'と 'x' /' y'(両方のステートメントで) - 6文字以上です...私の間違いをキャッチしてくれてありがとう! – gboffi

2

アドホックソリューションは、

plt.xlabel('pollo', horizontalalignment='right', position=(1,25)) 

より賢明なアプローチはaxes.xaxisが持っている方y位置を使用することです次に選び...心の中でこのアイデアで正気の手順は、親コンテナの.get_object(...)方法を使用してオブジェクトを取得する通常

  1. ようです
  2. 私たちの場合はその.set_object(...)方法

を使用してオブジェクト

  • 更新親を変更し、我々は、我々は位置と合わせ私たちが望むlabel含まxaxisが含まれている現在の軸axをプロットをプレゼント変更する。 matplotlibのデフォルト値に直接作用するのに関しては

    ... 
    plt.xlabel('...') 
    ... 
    ax = plt.gca() 
    label = ax.xaxis.get_label() 
    x_lab_pos, y_lab_pos = label.get_position() 
    label.set_position([1.0, y_lab_pos]) 
    label.set_horizontalalignment('right') 
    ax.xaxis.set_label(label) 
    ... 
    plt.show() 
    

    、私はplt.rcParamsデータ構造を閲覧しましたが、私は有益な何かを発見していません。もちろん、それは不可能ではありません、私は実行可能な解決策を見ることができないということだけではありません。

  • +0

    matplotlibのグローバル設定で可能かどうか疑問に思う –

    関連する問題