У меня есть три набора данных, которые я нарисовал на одном графике. Я хочу использовать интерактивную мышь, которая позволяет мне нажимать на точки на графике, и эти точки сохраняются в соответствующих списках. Я использовал эту ссылку в качестве руководства: Сохраните координаты событий щелчка мыши с помощью matplotlib. Я могу щелкнуть точки на графике, и он отобразит координаты, но значения не сохраняются в определенном мной списке (zradius, zangle и zamp). Значения, похоже, не добавляются в списки. Есть какие-нибудь предложения относительно того, почему это так? Есть ли другой способ сохранить координаты, если этот метод не работает?
fig1, ax = plt.subplots()
fig1 = plt.figure(figsize= (10,10))
radius = np.sqrt(actual_x**2 + actual_y**2)
angle = np.arctan2(actual_y,actual_x)
angle = angle/0.01745
amplitudez = amp0/10.
#plt.scatter(actual_z,actual_x, color = 'r', label = 'Experiment Trajectory(x_z)',marker =
'*',s = 20)
for i in range(len(actual_x)):
ax.scatter([actual_z],[radius], color = 'black',
label='ID: Z: {:.2f},Radius: {:.2f}'.format(actual_z,radius),marker =
'*',s = 20)
ax.scatter([actual_z],[angle], color = 'green',
label='ID: Z: {:.2f},Angle: {:.2f}'.format(actual_z,angle),marker = '*',s
= 20)
ax.scatter([actual_z],[amplitudez], color = 'brown',
label='ID: Z: {:.2f},AmpZ: {:.2f}'.format(actual_z,amplitudez),marker =
'x',s = 20)
ax.set_title('Experimental Data event:')
ax.set_xlabel('Z values')
ax.set_ylabel('Y/X values')
ax.set_xlim(100,700)
# # plt.ylim(-150,150)
#ax.legend()
ax.grid()
#print(' event number:',selected_event)
#print('Experimental Trajectory:','Theta:', exp_theta, 'Phi:', exp_phi, 'Energy:', exp_energy
)
datacursor(formatter='{label}'.format, bbox=dict(fc='yellow', alpha =10.0, snap =True))
zradius, zangle, zamp = [], [], []
def onclick(event):
global iz, iradius, iangle, iamplitudez
iz, iradius, iangle, iamplitudez = event.zdata, event.rdata, event.adata, event.ampdata
# print ('x = %d, y = %d'%(
# ix, iy))
global zradius, zangle, zamp
zradius.append((iz, iradius))
zangle.append((iz, iangle))
zamp.append((iz, iamplitudez))
if len(zradius) == len(actual_x):
fig.canvas.mpl_disconnect(cid)
return zradius, zangle, zamp
cid = fig.canvas.mpl_connect('button_press_event', onclick)
Вывод показывает следующее:
In[7]: zradius
Out[7]: []
Подробнее здесь: https://stackoverflow.com/questions/756 ... interactiv