2016-05-12 4 views
1

Ich habe eine Reihe von Daten in meinem Forschungsprojekt, und jeder Datenpunkt enthält viele verwandte Informationen und es ist unmöglich, sie alle in einer Abbildung zu zeigen. Was ich tun möchte, um diese Daten zu visualisieren, ist, die Datenpunkte mit ihren zwei Schlüsselparametern zu plotten, und wenn der Mauszeiger über einen Datenpunkt schwebt, zeigt er alle Informationen zu diesem Datenpunkt an. Ich frage mich, ob es Möglichkeiten gibt, dies umzusetzen?Python: Entsprechende Informationen von Datenpunkten interaktiv mit Maus erhalten

Danke!

Antwort

1

Sie haben ein Matplotlib-Beispiel, das etwas wie das, was Sie fragen, here bietet. @root gab ein answer hier, die eine grundlegende Schnittstelle mit Ausgang für die Konsole (per Mausklick über die Punkte) bestimmt:

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() 

Dennoch würde ich mpldatacursor vorschlagen. @moooeeeep gab ein Beispiel dafür verwenden, ist 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() 

Mit diesem Ergebnis:

mpldatacursor example

Verwandte Themen