Python 从交互式matplotlib绘图中获取数据

Python 从交互式matplotlib绘图中获取数据,python,matplotlib,Python,Matplotlib,我尝试使用matplotlib的交互式绘图来手动更正自动生成的散点图数据。(该程序尝试检测时间序列数据中的峰值,并在每个峰值上放置一个点,但时间序列数据中存在一些不正确检测峰值的瑕疵。) 我已经成功地编写了绘制时间序列和覆盖散点图数据的代码,然后用户可以通过单击添加或删除点。但是,我希望脚本将编辑的点序列保存为新数组,并将其传递给其他函数等。如果没有鼠标单击事件,我无法真正调用该函数,因此我不知道如何返回数据 代码从这里改编: 有趣的是,b.get_offsets()确实在函数之外保持更新,因此

我尝试使用matplotlib的交互式绘图来手动更正自动生成的散点图数据。(该程序尝试检测时间序列数据中的峰值,并在每个峰值上放置一个点,但时间序列数据中存在一些不正确检测峰值的瑕疵。)

我已经成功地编写了绘制时间序列和覆盖散点图数据的代码,然后用户可以通过单击添加或删除点。但是,我希望脚本将编辑的点序列保存为新数组,并将其传递给其他函数等。如果没有鼠标单击事件,我无法真正调用该函数,因此我不知道如何返回数据

代码从这里改编:

有趣的是,b.get_offsets()确实在函数之外保持更新,因此,如果在脚本完成后在命令行中手动重新分配newpeaks,我将获得正确的更新数据。但是如果我把任务

newpeaks = b.get_offsets()[:,0]

在脚本中的函数之后,它首先运行,并且在绘图关闭时不更新。我希望它要么在绘图关闭后自动更新,要么以某种方式更新全局变量,而不必手动进行更新。欢迎任何意见

我不确定我是否正确理解这一点。如果在plt.show()之后
print(newpeaks)
它是否不包含所需的点?否。如果我在plt.show()之后放置print(newpeaks),它只返回[]。为了澄清:我的意思是,当我的脚本运行完后,b.get_offset()会用正确的峰值更新,因此如果我在命令行中手动重新分配newpeaks,它起作用了。但是如果我尝试在脚本中执行此赋值,它将在调用函数之前运行,并且不会更新。我希望这会有所帮助。如果我复制您的代码,在最后添加一行
print(newpeaks)
,然后运行它,它会正确地将输出打印为
[5.15.25….,50.75.85.]
。您是对的。我的问题是如果我从Canopy命令行运行它。当我使用终端运行它时,它工作了。嗯,我现在觉得很傻,但是谢谢你的帮助。
newpeaks = b.get_offsets()[:,0]