my previous questionから続きます。テキストラベルボックスの座標がFigureの小数点座標にあり、同じ方法で矢印パッチの座標を取得しようとしました。Matplotlib注釈の矢印の座標を取得
しかし、私は同じで、それはそれの上に位置しない座標上で、私はラインをプロットするときので、矢印に対応していない取得座標:
import numpy as np
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt
def f(x):
return 10 * np.sin(3*x)**4
x = np.linspace(0, 2*np.pi, 100)
y = f(x)
fig, ax = plt.subplots()
ax.plot(x,y)
xpt = 1.75
ypt = f(xpt)
xy = ax.transData.transform([xpt, ypt])
xy = fig.transFigure.inverted().transform(xy)
xytext = xy + [0.1, -0.1]
rdx, rdy = 0, 1
ann = ax.annotate('A point', xy=xy, xycoords='figure fraction',
xytext=xytext, textcoords='figure fraction',
arrowprops=dict(arrowstyle='->', connectionstyle="arc3",
relpos=(rdx, rdy)),
bbox=dict(fc='gray', edgecolor='k', alpha=0.5),
ha='left', va='top'
)
fig.canvas.draw()
leader_line_box = ann.arrow_patch.get_extents()
print(leader_line_box)
leader_line_box = fig.transFigure.inverted().transform(leader_line_box)
print(leader_line_box)
from matplotlib.lines import Line2D
line = Line2D(leader_line_box.T[0], leader_line_box.T[1],transform=fig.transFigure, lw=2, color='m')
ax.add_line(line)
plt.savefig('test.png')
どのようにすることができます注釈の矢印の座標が図の小数点以下の桁で((x0,y0), (x1,y1))
になってしまいましたが、ここでは何が間違っていましたか?
私はそれがあなたの言うことを正確にしていると思います。矢印の境界ボックスの左下から右上に線をプロットします。線を矢印と揃えたい場合は、 '[:: - 1]'を入れてxdataまたはydataのどちらかを反転させることができます。それらはあなたが探していた座標ではありませんか?あなたはどこに線を描きたいのですか? – whrrgarbl
Hmm - あなたが正しいと思います。私が本当に望むのは、尾の座標と矢自体の頭です。 – xnx