どのようにすれば、matplotlibの図の左上(または右上)の隅にテキストを配置できますか。たとえば、それがplt.scatter()の場合は、スキャッターの2乗内にあるものを左上隅に配置します。
データセットからデータセットに変わるので、たとえば、プロットされている散布図のスケールを理想的に知らなくても、これを実行したいと思います。テキストを大体左上、または大体右上にしたいだけです。凡例タイプの配置では、散布図のポイントと重ならないようにします。
ありがとう!
どのようにすれば、matplotlibの図の左上(または右上)の隅にテキストを配置できますか。たとえば、それがplt.scatter()の場合は、スキャッターの2乗内にあるものを左上隅に配置します。
データセットからデータセットに変わるので、たとえば、プロットされている散布図のスケールを理想的に知らなくても、これを実行したいと思います。テキストを大体左上、または大体右上にしたいだけです。凡例タイプの配置では、散布図のポイントと重ならないようにします。
ありがとう!
回答:
使用できます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))
)を、ポイントの最大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'は、フレームを手動で縮小(狭く)したときに長いテキストが左軸から外れるのを防ぐための適切なセットです。
from pylab import figure, text, scatter, show
答えのコードは、明示的なインポートが必要ないpylabモードのipythonコンソールで実行されました。クリーンな環境では、上記をインポートしshow()
てプロットを表示する必要があります
1つの解決策はplt.legend
、実際の凡例が必要ない場合でも、関数を使用することです。loc
キータームを使用して、凡例ボックスの配置を指定できます。詳細はこのWebサイトにありますが、凡例を配置する方法を示す例も含めました。
ax.scatter(xa,ya, marker='o', s=20, c="lightgreen", alpha=0.9)
ax.scatter(xb,yb, marker='o', s=20, c="dodgerblue", alpha=0.9)
ax.scatter(xc,yc marker='o', s=20, c="firebrick", alpha=1.0)
ax.scatter(xd,xd,xd, marker='o', s=20, c="goldenrod", alpha=0.9)
line1 = Line2D(range(10), range(10), marker='o', color="goldenrod")
line2 = Line2D(range(10), range(10), marker='o',color="firebrick")
line3 = Line2D(range(10), range(10), marker='o',color="lightgreen")
line4 = Line2D(range(10), range(10), marker='o',color="dodgerblue")
plt.legend((line1,line2,line3, line4),('line1','line2', 'line3', 'line4'),numpoints=1, loc=2)
ためloc=2
、凡例はプロットの左上隅にあります。また、テキストがプロットと重なっている場合は、を使用してテキストを小さくできます。これによりlegend.fontsize
、凡例が小さくなります。