1. ホーム
  2. python

[解決済み] matplotlib のプロットの左上隅にテキストを配置する

2022-06-01 05:51:44

質問

matplotlib の図の左上 (または右上) にテキストを置くにはどうしたらよいでしょうか。例えば、左上の凡例がある場所、または図の上ですが左上隅にある場所です。 例えば、それが plt.scatter() であるなら、散布図の四角の中にあるようなものを、左上の一番隅に置いてください。

私は、例えばプロットされる散布図のスケールを理想的に知ることなく、これを行いたいと思います。 私は、テキストが左上または右上にあることを望んでいます。凡例タイプの位置決めでは、とにかくどの散布図ポイントとも重ならないようにしなければなりません。

ありがとうございます。

どのように解決するのですか?

あなたは text .

text(x, y, s, fontsize=12)

text の座標は軸に対して相対的に与えることができますので、テキストの位置はプロットのサイズに依存しないでしょう。

デフォルトの変換はテキストがデータ座標で指定されます。 代わりに、軸の座標でテキストを指定することができます (0,0は左下 で、1,1 は右上です)。 以下の例では、テキストを軸の中央 に配置します。

text(0.5, 0.5,'matplotlib',
     horizontalalignment='center',
     verticalalignment='center',
     transform = ax.transAxes)

テキストが散布図のどの点にも干渉しないようにするのは、もっと難しいようです。より簡単な方法は、y_axis を設定することです (ymax は ylim((ymin,ymax)) の ymax) を点の最大 y 座標より少し高い値に設定することです。この方法では、テキストのために常にこの自由な空間を持つことになります。

編集:ここに例があります。

In [17]: from pylab import figure, text, scatter, show
In [18]: f = figure()
In [19]: ax = f.add_subplot(111)
In [20]: scatter([3,5,2,6,8],[5,3,2,1,5])
Out[20]: <matplotlib.collections.CircleCollection object at 0x0000000007439A90>
In [21]: text(0.1, 0.9,'matplotlib', ha='center', va='center', transform=ax.transAxes)
Out[21]: <matplotlib.text.Text object at 0x0000000007415B38>
In [22]:

<イグ

ha と va パラメータは、挿入点に対するテキストの配置を設定します。例えば、ha='left' は、手動でフレームを縮小(狭く)したときに、長いテキストが左軸から外れるのを防ぐために良い設定です。