は、ランダムなオフセットを持つ注釈付きランダム散布図を取る:Matplotlib:注釈ボックスの座標軸を直接取得する方法?
import matplotlib.pyplot as mpp
import random as rd
X = [1,3,2,5,4,2,3,1,2,3]
Y = [4,1,3,2,6,5,2,5,1,5]
L = ['A','B','C','D','E','F','G','H','I','J']
fig,ax = mpp.subplots()
ax.scatter(X,Y)
for i,txt in enumerate(L):
r1 = rd.choice([-10,5])
r2 = rd.choice([-10,5])
a = ax.annotate(txt,(X[i],Y[i]),size=8,textcoords='offset points',xytext=(r1,r2))
fig.show()
は、私はそれらの注釈の軸座標を見つけることを試みたが、私は変なふうに十分なテキスト・インスタンスのいずれかの運、ほとんどの変数を持っていませんでした
print(ax.texts[0].xy)
print(ax.texts[0].xyann)
print(ax.texts[0]._x,ax.texts[0]._y)
print(ax.texts[0].get_position())
print(ax.texts[0].get_unitless_position())
print(ax.texts[0]._get_xy_display())
print(ax.texts[0].clipbox)
戻り値:オフセットを返す
(1, 4)
(-10, 5)
-10 5
(-10, 5)
(-10.0, 5.0)
[-10. 5.]
None
を私はTHIのような変換を用いて、軸の座標を得ることができることを知っていますS:
ax.figure.canvas.draw()
bb = ax.texts[0].get_window_extent()
co = ax.transAxes.inverted().transform(bb)
しかし、それらを得るための直接的な方法があった場合、私は、私は座標がuserland-して表示するので、テキストインスタンス内のどこかに書かれていない軸を信じることができない、特に以来、それを好みます - 座標もそこにあります。
しかし、表示座標が不明であると軸座標が不明であることがどのように説明されますか?軸と図形座標は0と1の間の相対座標であるため、表示サイズとは無関係であり、いくつかの変数に簡単に保存できます。 axesの 'ax.get_position()'は軸のFigure座標を正確に返しますが、text-objectsの同じメソッドは、ユーザランド座標 'xy'の最初の位置からオフセット' xyann'を返します。 – Khris
テキストはオフセットポイントに配置されているため、その座標はオフセットポイントになります。したがって、変換チェーンはオフセット - >データ - >表示 - >軸になります。私は、座標軸を格納している軸(軸の位置を定義しているので便利です)がテキストと関係しているかどうかわかりません。つまり、オフセット座標で軸の位置を定義すると、その座標も認識されません。 – ImportanceOfBeingErnest
軸の位置をオフセット座標で定義すると、定義された点からオフセットされてしまい、図の座標を簡単に得ることができます。 もう一つ気になるのは、ここで展示を変えなければならないということです。なぜデータから軸へ直接変換できないのですか? – Khris