Python:用鼠标交互获取数据点的相应信息

时间:2016-05-12 17:27:21

标签: python

我的研究项目中有一组数据,每个数据点都包含大量相关信息,并且不可能在图中显示所有数据。我想要对这些数据进行可视化的方法是使用它们的两个关键参数绘制数据点,当鼠标光标悬停在一个数据点上时,它会显示与该数据点相关的所有信息。我想知道是否有任何方法可以实现这一点?

谢谢!

1 个答案:

答案 0 :(得分:3)

你有一个matplotlib示例提供了类似于你所要求的内容here。 @root在这里给了一个answer,它提供了一个基本界面和控制台输出(通过鼠标点击点):

from matplotlib.pyplot import figure, show
import numpy as npy
from numpy.random import rand

if 1: # picking on a scatter plot (matplotlib.collections.RegularPolyCollection)

    x, y, c, s = rand(4, 100)
    def onpick3(event):
        ind = event.ind
        print 'onpick3 scatter:', ind, npy.take(x, ind), npy.take(y, ind)

    fig = figure()
    ax1 = fig.add_subplot(111)
    col = ax1.scatter(x, y, 100*s, c, picker=True)
    #fig.savefig('pscoll.eps')
    fig.canvas.mpl_connect('pick_event', onpick3)

show()

但我建议mpldatacursor。 @moooeeeep给出了一个使用here的例子:

import matplotlib.pyplot as plt
from mpldatacursor import datacursor
import random

fig, ax = plt.subplots()
ax.set_title('Click on a dot to display its label')

# Plot a number of random dots
for i in range(1, 1000):
    ax.scatter([random.random()], [random.random()], label='$ID: {}$'.format(i))

# Use a DataCursor to interactively display the label for a selected line...
datacursor(formatter='{label}'.format)

plt.show()

结果如下:

mpldatacursor example