Im Anschluss an my previous question habe ich die Koordinaten der Textbeschriftungsbox in Abbildung Bruchkoordinaten und versuchte, die Koordinaten des Pfeilfeldes in der gleichen Weise zu erhalten.Ermitteln der Koordinaten des Pfeils in einer Matplotlib-Annotation
Aber die Koordinaten ich nicht auf den Pfeil entsprechen, denn wenn ich eine Linie zeichnen über die gleichen Koordinaten nicht auf es nicht liegen:
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')
Wie kann Ich bekomme dieKoordinaten des Annotationspfeils in Zahlenbrucheinheiten und was ist bei meinem Versuch hier schiefgelaufen?
Ich denke, es macht genau das, was Sie sagen: Zeichnen Sie eine Linie von links unten nach oben rechts von der Pfeilbegrenzungsbox. Wenn Sie möchten, dass die Linie mit dem Pfeil ausgerichtet ist, können Sie einfach '[:: - 1]' setzen, um entweder xdata oder ydata umzukehren. Sind das nicht die Koordinaten, nach denen du gesucht hast? Wo soll die Linie geplottet werden? – whrrgarbl
Hmm - Ich denke du hast Recht. Was ich wirklich will, sind die Koordinaten des Schwanzes und der Kopf des Pfeils selbst. – xnx