Python - Spyder忽略了选择器启用的情节

时间:2018-03-07 14:25:18

标签: python-3.x mouseevent spyder

我在Spyder(Python 3.5)中编写此脚本,我希望它能够这样做: 1)绘制一些东西 2)允许我从图中选择一些值 3)将这些值存储到变量中 4)用变量做某事

我已经检查了这个帖子:Store mouse click event coordinates with matplotlib并修改了我自己的代码所提供的函数。我遇到的问题是spyder似乎忽略了交互式绘图并立即运行整个脚本,而没有等待我从绘图中选择任何值。当我使用这些值进行进一步计算时,我显然从中得到了一个错误。我甚至试图在情节之后设置一个输入('按Enter继续......'),看它是否停止并等待我的选择,但它也不起作用。 当我一步一步地运行脚本时,它工作正常,我得到绘图,选择我的值,打印变量并在那里找到所有这些并在之后使用它们。所以问题是:当我运行整个脚本时,如何才能使它工作?

这是我的代码:

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import plot as plot

def onpick(event):

    ymouse = event.ydata

    print ('y of mouse: {:.2f}'.format(ymouse))

    times.append(ymouse)

    if len(times)==5:
        f.canvas.mpl_disconnect(cid)

    return times
#

t=np.arange(1000)
y=t**3

f=plt.figure(1)
ax=plt.gca()

ax.plot(t,y,picker=5)

times=[]
cid=f.canvas.mpl_connect('button_press_event',onpick)

plt.show()

#Now do something with times
mtimes=np.mean(times)
print(mtimes)

1 个答案:

答案 0 :(得分:0)

Spyder维护者在这里)我认为要解决这个问题你需要去

Preferences > IPython console > Graphics

并关闭名为Activate support的选项。这将使您的脚本在运行绘图时阻止控制台,因此您可以捕获所需的鼠标单击。

唯一的问题是你需要运行

In [1]: %matplotlib qt5

在开始运行你的代码之前,因为Spyder不再适合你了。