忽略matplotlib绘图上的所有鼠标单击



我最近构建了一个python脚本,它可以与Arduino和一个使用激光雷达绘制房间地图的硬件交互。一切都很好,但每当你点击用maptotlib生成的情节时,计算机就会崩溃,并破坏正在运行的脚本。这在一定程度上是因为我得到了一台300美元的电脑来运行它,所以它的功能不是很强大。然而,我觉得即使是一台300美元的电脑也应该能够处理鼠标点击。

如何使用matplotlib完全忽略鼠标点击,这样计算机就不会抓狂并破坏脚本?

如果这不是正确的解决方案,还有什么更好的解决方案呢?

编辑:这是一个交互式绘图会话(有点像,我只是用新数据替换旧数据,没有调用plot.ion()命令)。所以,我不能只保存情节并显示出来。Arduino不断地传输数据。

您可以尝试绕过绘图上的点击事件:

import matplotlib.pyplot as plt
fig = plt.figure()
plt.axes(xlim = (0, 3), ylim = (0, 3))
def onclick(event):
    pass
fig.canvas.mpl_connect('button_press_event', onclick)
plt.show()

,但我怀疑这是否可行。我建议的解决方案(如果上面的东西不起作用)是制作你的绘图并将其保存到文件中(不显示):

plt.savefig('fname.png')
plt.close()

然后让python在操作系统中使用您喜欢的任何外部工具打开图像(例如使用subprocess)。

我这么说是因为我怀疑你可能有某种包不兼容,导致你的脚本崩溃(可能是mpl的后端或你在mpl上使用的任何其他库)。如果是这种情况,则需要更多的信息来尝试解决问题。

我觉得通过改变硬件可以更容易地解决这个问题——你能暂时拔掉鼠标的插头,或者用胶带粘在触控板上以防止人们摆弄它吗?

我建议这样做是因为你的崩溃脚本总是会以某种方式处理鼠标点击,如果你不知道是什么导致了崩溃,那么你最好确保没有点击。

相关内容

  • 没有找到相关文章

最新更新