im new here,以及python和matplotlib上的新功能。
我想创建一个代码,允许我从函数define中获取坐标(event.xdata),以便我以后可以使用该数据。但是到目前为止,我已经能够阅读,一些变量是局部的(函数内部的变量),而另一些变量是全局变量(我们想要“稍后”使用的变量)。我尝试了'全局'选项,我也读到它不是最好的,它没有用...解决方案当然可能是从定义的拣货功能返回值...问题是我必须创建一个从函数接收返回的变量...但由于这是一个事件(不是一个简单的函数),我不能要求变量接收返回,因为它是在绘制绘图后发生的事件。可能(?)应该类似于:
import matplotlib.pyplot as plt
import numpy as np
asd = () #<---- i need to create a global variable before i can return a value in it?
fig = plt.figure()
def on_key(event):
print('you pressed', event.key, event.xdata, event.ydata)
N=event.xdata
return N in asd #<---- i want to return N into asd
cid = fig.canvas.mpl_connect('key_press_event', on_key)
lines, = plt.plot([1,2,3])
NAAN=on_key(event) #<---- just to try if return alone worked... but on_key is a function which happens in the plot event... so no way to take the info from the return
plt.show()
答案 0 :(得分:3)
您可以使用可变对象和闭包执行此操作:
mutable_object = {}
fig = plt.figure()
def on_key(event):
print('you pressed', event.key, event.xdata, event.ydata)
N=event.xdata
mutable_object['key'] = N
然后您可以使用
取回您的价值N = mutable_object['key']
使用此功能,您也可以使用list
和append
执行此操作,或创建自己的类,等等。