2016-07-25 6 views
0

Ich habe eine Figur mit vier Unterplots, von denen zwei binded auf ein Pick-Ereignis, indem Sie canvas.mpl_connect('pick_event', onpick) wo Onpick onpick (Event) Handler.Holen Sie sich das Subplot von Pick-Ereignis mit Matplotlib und Python

Jetzt, basierend auf welcher der zwei suplot der Klick kommen, muss ich ein anderes Verhalten aktivieren (dh wenn Pick von 1. Subplot tun dies tun, sonst, wenn es von zweiten suplot das tun), aber ich don ' Ich weiß, wie es geht. Kann mir jemand helfen?

Antwort

1

Hier ist ein kurzes Beispiel:

import matplotlib.pyplot as plt 
from random import random 

def onpick(event): 
    if event.artist == plt1: 
     print("Picked on top plot") 
    elif event.artist == plt2: 
     print("Picked on bottom plot") 

first = [random()*i for i in range(10)] 
second = [random()*i for i in range(10)] 

fig = plt.figure(1) 
plt1 = plt.subplot(211) 
plt.plot(range(10), first) 

plt2 = plt.subplot(212) 
plt.plot(range(10), second) 

plt1.set_picker(True) 
plt2.set_picker(True) 
fig.canvas.mpl_connect('pick_event', onpick) 

plt.show() 

Beachten Sie, dass Sie haben set_picker(True) auf den Nebenhandlungen zu nennen, die dieses Ereignis ausgelöst werden soll! Wenn Sie dies nicht tun, wird nichts passieren, obwohl Sie das Ereignis auf der Leinwand festgelegt haben.

Für weitere Informationen, hier ist die PickEvent documentation und eine pick handling demo von der Matplotlib-Website.

+0

also die diskriminante Information, nach der ich suchte, war in event.artist, danke. Du hast mein Problem wirklich gelöst –

Verwandte Themen