等待 python 2.7 中的 matplotlib 事件
Waiting for a matplotlib event in python 2.7
我在 Whosebug 上找到了这段代码并稍作修改。
import numpy as np
import matplotlib.pyplot as plt
import time
x = np.arange(-10,10)
y = x**2
x1 = 0
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y)
plt.show()
def onclick(event):
global x1, go
x1 = event.xdata
print x1
fig.canvas.mpl_disconnect(cid)
cid = fig.canvas.mpl_connect('button_press_event', onclick)
print x1
我想知道如何stop/wait这个程序,直到我点击这个图。
因为正如我调用 mpl_connect 时写的那样,我可以点击该图,但我在点击步骤后立即获得输出 x1 = 0 而不是正确的值。
如何解决才能得到正确的值?
非常感谢,
卢卡
删除fig.canvas.mpl_disconnect(cid)
从点击。
Cid = fig.canvas.mpl_connect('button_press_event', onclick)
事件与函数之间是否存在联系。它也应该在 plt 之前。展示()。
问题中提供的示例,几乎没问题。 show 语句应该在所有设置图形和连接回调函数的调用之后。此外,断开连接可能不是您想要的。
这是您的代码,经过编辑以重复生成图形和 运行 连接的函数。
#!/usr/bin/python
import numpy as np
import matplotlib.pyplot as plt
import time
x = np.arange(-10,10)
y = x**2
x1 = 0
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y)
def onclick(event):
global x1, go
x1 = event.xdata
print x1
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()
我在 Whosebug 上找到了这段代码并稍作修改。
import numpy as np
import matplotlib.pyplot as plt
import time
x = np.arange(-10,10)
y = x**2
x1 = 0
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y)
plt.show()
def onclick(event):
global x1, go
x1 = event.xdata
print x1
fig.canvas.mpl_disconnect(cid)
cid = fig.canvas.mpl_connect('button_press_event', onclick)
print x1
我想知道如何stop/wait这个程序,直到我点击这个图。
因为正如我调用 mpl_connect 时写的那样,我可以点击该图,但我在点击步骤后立即获得输出 x1 = 0 而不是正确的值。
如何解决才能得到正确的值?
非常感谢,
卢卡
删除fig.canvas.mpl_disconnect(cid)
从点击。
Cid = fig.canvas.mpl_connect('button_press_event', onclick)
事件与函数之间是否存在联系。它也应该在 plt 之前。展示()。
问题中提供的示例,几乎没问题。 show 语句应该在所有设置图形和连接回调函数的调用之后。此外,断开连接可能不是您想要的。
这是您的代码,经过编辑以重复生成图形和 运行 连接的函数。
#!/usr/bin/python
import numpy as np
import matplotlib.pyplot as plt
import time
x = np.arange(-10,10)
y = x**2
x1 = 0
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x,y)
def onclick(event):
global x1, go
x1 = event.xdata
print x1
cid = fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()