Hi all. I'm using matplotlib to draw some graph in a pyqt application. Is there a way to show infos only when the mouse hover the plot nodes? At the moment I'm stuck using this (ugly, and conceptually wrong) piece of code, written by me...
basically I add hidden annotations where I need, then (ab)use the fig.canvas.mpl_connect function with the 'motion_notify_event' option. Is there a "motion_mouse_enter_plot" / "motion_mouse_exit_plot" or something similar? I see there is the "pick_event" interface, but I don't want to show infos "on click", but "on hovering" #!/usr/bin/env python class show_annotation(object): def __init__(self, annotations): '''"fake" class, mostly a "function with memory"''' self.annotations = annotations def __call__(self, mouse_event): ax = mouse_event.inaxes if not ax: return line = ax.get_lines()[0] contained, infos = line.contains(mouse_event) if not contained: # eventually exited for annotation in self.annotations.values(): annotation.set_visible(False) else: xdata, ydata = line.get_data() ind = infos['ind'][0] annotation = self.annotations[xdata[ind], ydata[ind]] if not annotation.get_visible(): # is entered annotation.set_visible(True) ax.figure.canvas.draw() if __name__ == '__main__': from random import randint x = range(10) y = [ randint(0, i) for i in x ] labels = [ 'label_%d' % i for i in x ] from matplotlib import pyplot fig = pyplot.figure() ax = fig.add_subplot(1, 1, 1) ax.plot(x, y) # waiting for a "dict comprehension" sintax annotations = {} for label, xe, ye in zip(labels, x, y): annotations[xe,ye] = ax.annotate(label, (xe,ye), visible=False) fig.canvas.mpl_connect('motion_notify_event', show_annotation(annotations)) pyplot.show() -- By ZeD ------------------------------------------------------------------------------ This SF.net email is sponsored by: High Quality Requirements in a Collaborative Environment. Download a free trial of Rational Requirements Composer Now! http://p.sf.net/sfu/www-ibm-com _______________________________________________ Matplotlib-users mailing list Matplotlib-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/matplotlib-users