使用matplotlib进行小鼠散射

时间:2018-03-06 16:39:22

标签: python matplotlib mouseevent scatter-plot interactive

我想使用matplotlib进行交互式绘图。我训练了一个神经网络来近似分布,我想手动查看它是否正确。 因此,一旦计算完成,我想:

  • 将鼠标鼠标悬停在窗口上。指针后面应该有一个点(plt.scatter)

  • 获取鼠标坐标并将其发送到我的网络

  • 使用网络输出,更改点的颜色

我可以效仿任何线索?

谢谢!!

1 个答案:

答案 0 :(得分:0)

Matplotlib有一个通用事件处理API,它适用于所有GUI后端,记录为here。您想要的事件称为" motion_notify"。

这是一个例子(运行它并在绘图窗口周围移动鼠标 - 鼠标信息将在终端中打印):

#!/usr/bin/env python3

from matplotlib import pyplot as plt
import numpy as np

fig, ax = plt.subplots()
ax.plot(np.random.rand(10))

def onmotion(event):
    print('%s dblclick: button=%s, x=%s, y=%s, xdata=%s, ydata=%s' %
          (event.dblclick, event.button,
           event.x, event.y, event.xdata, event.ydata))

cid = fig.canvas.mpl_connect('motion_notify_event', onmotion)

plt.show()

如果您将matplotlib嵌入到GUI框架中,那么您应该使用框架的API。