2016-12-22 4 views
0

Hallo liebe Python comunity developper, Ich mag würde wissen, ob es einen Weg gibt verschiedene Callback für jeden subplot2grid (matplotlib) zu haben, Zum Beispiel: Zum ersten subplot2grid Ich möchte eine Funktion ausführen, die sich von dem zweiten subplot2grid unterscheidet, das eine andere Funktion ausführt.Verschiedene Rückruf für jeden subplot mit subplot2grid

Ich gebe an, dass ich subplot2grid benutze und in matplotlib nicht subplot. Vielen Dank,

+0

Sie wickeln vielleicht könnte Ihre Funktion und dann die Anzahl der Zeit zählen Sie Führen Sie die Funktion bereits aus. Mit diesen Informationen könnten Sie einen anderen Rückruf aufrufen? – iFlo

+0

Thnx für Antwort, Haben Sie bitte ein Beispiel? –

+0

Ich denke nicht, dass das möglich ist, aber Sie könnten es wahrscheinlich in zwei Schritten tun: Die Callback-Funktion ermittelt aus Ax (Subplot) das Ereignis wurde generiert und basierend darauf eine zweite Funktion aufrufen, die für jedes der beiden unterschiedlich ist Nebenhandlungen. Alles hängt davon ab, welche Art von Event Sie bearbeiten möchten –

Antwort

1

Wenn Ihr Ziel ist, eine widget.Button für jedes Teilplot verwenden, dann ist die Situation sehr einfach. Um eine Schaltfläche zu erstellen, müssen Sie ihr eine Axes Instanz übergeben und die Schaltfläche belegt diesen Bereich. Sie müssen daher so viele neue Achsen erstellen, wie Sie Unterplots haben, und ihre Koordinaten entsprechend angeben. Erstellen Sie dann Ihre Schaltflächen, die verschiedene Callback-Funktionen haben können.

zum Beispiel:

from matplotlib.widgets import Button 

def callback1(event): 
    print "you've clicked button 1" 

def callback2(event): 
    print "you've clicked button 2" 

fig = plt.figure() 
ax1 = plt.subplot2grid((2,2),(0, 0)) 
ax2 = plt.subplot2grid((2,2),(1,1)) 

# create axes to receive the buttons 
# adjust the coordinates to suit your needs 
# coordinates are [left, bottom, width, height] 
b1ax = plt.axes([0.5, 0.8, 0.2, 0.1]) 
b1 = Button(b1ax, 'Button 1') 
b1.on_clicked(callback1) 
b2ax = plt.axes([0.7, 0.5, 0.2, 0.1]) 
b2 = Button(b2ax, 'Button 2') 
b2.on_clicked(callback2) 
plt.show() 

enter image description here

Dokumentation für widget.Button: http://matplotlib.org/api/widgets_api.html#matplotlib.widgets.Button

Umsetzungsbeispiel: http://matplotlib.org/examples/widgets/buttons.html

+0

Ah thnx viel, das ist, was ich suchte, Eine andere Frage ^^: Gibt es eine Möglichkeit, andere Parameter mit Ereignisparameter in der aufgerufenen Funktion zu setzen .. ^^ –

+0

Ich fand die Lösung für meine letzte Frage: b2ax_outgoing plt.axes = ([0,4, 0,4, 0,01, 0,02]) bouttonni2 = buttonn (b2ax_outgoing, '', color = 'rot') bouttonni2.on_clicked (lambda event: taux_outgoing2 (Leser, val1, val2, val3, val4, val5, tech, Ereignis)) THNX A LOS –

+0

Gern geschehen. Wenn die Antwort für Sie nützlich ist, ziehen Sie in Betracht, sie zu akzeptieren, indem Sie auf das Häkchen auf der linken Seite klicken –

Verwandte Themen