Python - Spyder 忽略选择器启用的图
Python - Spyder ignoring picker enabled plot
我正在用 Spyder (Python 3.5) 编写这个脚本,我希望它这样做:
1)绘制一些东西
2) 请允许我从图中选取一些值
3)将这些值存储到变量中
4)用那个变量做点什么
我检查了这个线程:Store mouse click event coordinates with matplotlib 并为我自己的代码修改了其中显示的函数。我遇到的问题是 spyder 似乎忽略了交互式情节并且 运行 立即执行整个脚本,而不等我从情节中选择任何值。当我使用这些值进行进一步计算时,我显然从中得到了一个错误。我什至尝试在情节之后设置一个输入('Press enter to continue...'),看看它是否让它停下来等待我的选择,但它也不起作用。
当我 运行 逐步执行脚本时,它运行良好,我得到了绘图,选择了我的值,打印了变量并在其中找到所有这些变量,然后使用它们。所以问题是:当我 运行 整个脚本时如何让它工作?
这是我的代码:
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)
(这里是 Spyder 维护者) 我认为要解决这个问题你需要去
Preferences > IPython console > Graphics
并关闭名为 Activate support
的选项。这将使您的脚本在绘图为 运行 时阻止控制台,因此您可以捕获您需要的鼠标点击。
唯一的问题是您需要 运行
In [1]: %matplotlib qt5
在开始 运行 您的代码之前,因为 Spyder 不再适合您了。
我正在用 Spyder (Python 3.5) 编写这个脚本,我希望它这样做: 1)绘制一些东西 2) 请允许我从图中选取一些值 3)将这些值存储到变量中 4)用那个变量做点什么
我检查了这个线程:Store mouse click event coordinates with matplotlib 并为我自己的代码修改了其中显示的函数。我遇到的问题是 spyder 似乎忽略了交互式情节并且 运行 立即执行整个脚本,而不等我从情节中选择任何值。当我使用这些值进行进一步计算时,我显然从中得到了一个错误。我什至尝试在情节之后设置一个输入('Press enter to continue...'),看看它是否让它停下来等待我的选择,但它也不起作用。 当我 运行 逐步执行脚本时,它运行良好,我得到了绘图,选择了我的值,打印了变量并在其中找到所有这些变量,然后使用它们。所以问题是:当我 运行 整个脚本时如何让它工作?
这是我的代码:
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)
(这里是 Spyder 维护者) 我认为要解决这个问题你需要去
Preferences > IPython console > Graphics
并关闭名为 Activate support
的选项。这将使您的脚本在绘图为 运行 时阻止控制台,因此您可以捕获您需要的鼠标点击。
唯一的问题是您需要 运行
In [1]: %matplotlib qt5
在开始 运行 您的代码之前,因为 Spyder 不再适合您了。