Этот код создает 5 графиков, каждый со стрелкой и меткой. Первоначально хвосты стрелок выровнены по левой стороне этикетки. Но по мере выполнения последовательных итераций стрелок и меток хвост стрелы мигрирует к правой стороне метки. Как мне прикрепить его к левой стороне этикетки?
%matplotlib notebook
import numpy as np
import matplotlib.pyplot as plt
import time
segments=7
FIRST_max_Y=.25 *r
def logistic(r, x):
return r * x * (1 - x)
def iterateX(some_r):
x = np.linspace(0, 1,segments)
fig, ax = plt.subplots(1, 1)
plt.xlabel("X")
plt.ylabel("logistic(1,x)")
for i in range(6):
y=logistic(r, x)
max_Y=np.amax(y)
max_X=np.amax(x)
mid_X=x[int(segments/2)]
y_label_pos = max_Y * (1-(i/6))
label = f'r={r}\n'+ f'iteration = {i}'
print(f'\n\n mid_X= {round(mid_X,3)} max_x= {round(max_X,3)} max_Y={round(max_Y,3)}')
ax.plot(x, y, color='red',alpha=.1+i/6)
ax.annotate(label, xy=(max_X, max_Y), xycoords='data',
xytext=(1-(i*.15), y_label_pos), textcoords='data',
arrowprops=dict(facecolor='black',alpha=.15+i/6, shrink=0.05),
horizontalalignment='left', verticalalignment='bottom',
rotation_mode='anchor')
#df = pd.DataFrame(data=(x,y))
#df=df.applymap('{:,.3f}'.format)
#df.index = [ 'x', 'y']
#print(df)
print(f'data coordinates={max_X, max_Y}')
print(f'text coordinates={1-(i*.15), y_label_pos}')
x=y
fig.canvas.draw()
time.sleep(1)
r=2
iterateX(r)