matplotlib 図の左上 (または右上) 隅、たとえば左上の凡例がある場所にテキストを配置するには、またはプロットの上にある左上隅にテキストを配置するには、どうすればよいでしょうか。たとえばplt.scatter()
、 の場合は、散布図の四角形内に収まるものを左上隅に配置します。
たとえば、プロットされる散布図のスケールはデータセットごとに変わるため、理想的にはスケールを知らなくてもこれを実行したいと思います。テキストを大まかに左上または右上に配置したいだけです。凡例タイプの配置では、散布図のポイントと重ならないようにする必要があります。
ベストアンサー1
使用できますtext
。
plt.text(x, y, s, fontsize=12)
text
座標は軸に対して相対的に指定できるため、テキストの位置はプロットのサイズに依存しません。
デフォルトの変換では、テキストがデータ座標にあることを指定しますが、代わりに、軸座標でテキストを指定することもできます (0,0 は左下、1,1 は右上)。次の例では、テキストを軸の中央に配置します。
plt.text(0.5, 0.5, 'matplotlib',
horizontalalignment='center',
verticalalignment='center',
transform = ax.transAxes)
テキストが散布図のどの点にも干渉しないようにするのは、私の知る限りでは困難です。より簡単な方法は、y_axis (ymax in ylim((ymin,ymax))
) を、ポイントの最大 y 座標よりも少し高い値に設定することです。こうすることで、テキスト用の空きスペースが常に確保されます。
編集: ここに例があります:
from matplotlib import pyplot as plt
f, ax = plt.subplots()
plt.scatter([3,5,2,6,8],[5,3,2,1,5])
plt.text(.01, .99, 'matplotlib', ha='left', va='top', transform=ax.transAxes)
f.tight_layout()
およびパラメータha
はva
、挿入ポイントに対するテキストの配置を設定します。つまり、ha='left'
フレームを手動で縮小 (狭く) したときに長いテキストが左軸から外れないようにするには、 を設定するのが適切です。