Seite 1 von 1

Radiobuttons mit matplotlib

Verfasst: Freitag 15. August 2008, 13:21
von Grunzer
Hallo Allerseits!

Mit Hilfe von Matplotlob kann man auch Radiobuttons benutzen (http://matplotlib.sourceforge.net/matpl ... dgets.html). Allerdings gelingt es mir nicht den aktuellen Status des Radiobuttons bzw. welche Auswahlmöglichkeit aktiviert ist abzurufen.

Code: Alles auswählen

from pylab import *
from matplotlib.widgets import RadioButtons

rax = axes([0.025, 0.5, 0.15, 0.15], axisbg=axcolor)
radio = RadioButtons(rax, ('red', 'blue', 'green'), active=0)
def Aktion(label):
    print label
radio.on_clicked(Aktion)
Bei diesem Beispielcode kann man nur beim Drücken eines Radiobuttons sofort eine Aktion ausführen. Allerdings ist es nicht möglich das label des gedrücktn Radiobuttons "label" einer globalen Variable zu übergeben.

Wär super, wenn mir jemand helfen kann.

Re: Radiobuttons mit matplotlib

Verfasst: Freitag 15. August 2008, 13:43
von CM
Hallo und willkommen im Forum,

Das verstehe ich nicht:
Grunzer hat geschrieben: Allerdings ist es nicht möglich das label des gedrücktn Radiobuttons "label" einer globalen Variable zu übergeben.
Mal abgesehen davon, dass Dein Snippet nicht funktioniert, wird ein String übergeben. Und diesen kannst Du beispielsweise dazu verwenden, um Deinen Plot zu färben. Oder Du entscheidest Dich, je nach übergebenem String, eine bestimmte Aktion auszuführen.
Dein 'Aktion()' entspricht also 'colorfunc()' im Beispiel.

Vielleicht magst Du Deine Frage mal anders formulieren?

Und im Übrigen würde ich überhaupt nicht mit globalen Variablen arbeiten wollen - keine gute Idee.

Gruß,
Christian

Verfasst: Freitag 15. August 2008, 14:33
von Grunzer
Ich möchte nicht sofort, wenn der Radiobutton gedrückt wird, sondern erst später, wenn ich zum Beispiel auf einen normalen Button drücke, eine Aktion entsprechend der Radiobuttonauswahl durchführen.

Zum Beispiel wäre dies das plotten der Farbe im Beispiel. Ich weiß aber nicht, wie ich diesen String, der bei radio.on_clicked übergeben wird, bei einer anderen Routine benutzen kann.

Verfasst: Freitag 15. August 2008, 15:28
von CM
Ah, jetzt hab' ich's! Kapiere, etwas unorthodox, aber:

Code: Alles auswählen

from pylab import *
from matplotlib.widgets import RadioButtons

t = arange(0.0, 2.0, 0.01)
s0 = sin(2*pi*t)
ax = subplot(111)
l, = ax.plot(t, s0, lw=2, color='red')

states = {}

rax = axes([0.025, 0.5, 0.15, 0.15], axisbg='white')
radio = RadioButtons(rax, ('red', 'blue', 'green'), active=0)

def Aktion(label):
    l.set_color(label)
    draw()
    states['current_label'] = label
radio.on_clicked(Aktion)
show()
print states['current_label']
D.h. Du mußt denn den Zustand von 'current_label' abfragen. Das dict kann natürlich noch viel mehr Schlüssel für alle Deine anderen Buttonzustände haben.

Gruß,
Christian

Verfasst: Freitag 15. August 2008, 20:55
von Grunzer
Echt toll, jetzt klappt's. Vielen Dank, ich hatte schon ewig dran rumprobiert und war kurz vorm Aufgeben, bis mir die Idee kam, mal im Forum zu fragen.

Gruß,
Matti