Seite 1 von 1

Matplotlib und Checkbox

Verfasst: Sonntag 2. Oktober 2016, 19:43
von rmanske
Ich habe einen komischen Effekt bei den Checkboxen der Matplotlib und finde den Fehler nicht.

Wenn ich das Beispiel von der Matplotlibseite nehme, funktioniert alles. Die Checkbox wird angeklickt und der Graph wird angezeigt und umgekehrt. Hier der Code.

Code: Alles auswählen

mport numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import CheckButtons

t = np.arange(0.0, 2.0, 0.01)
s0 = np.sin(2*np.pi*t)
s1 = np.sin(4*np.pi*t)
s2 = np.sin(6*np.pi*t)

fig, ax = plt.subplots()
l0, = ax.plot(t, s0, visible=False, lw=2)
l1, = ax.plot(t, s1, lw=2)
l2, = ax.plot(t, s2, lw=2)
plt.subplots_adjust(left=0.2)

rax = plt.axes([0.05, 0.4, 0.1, 0.15])
check = CheckButtons(rax, ['2 Hz', '4 Hz', '6 Hz'], [False, True, True])


def func(label):
    if label == '2 Hz':
        l0.set_visible(not l0.get_visible())
    elif label == '4 Hz':
        l1.set_visible(not l1.get_visible())
    elif label == '6 Hz':
        l2.set_visible(not l2.get_visible())
    plt.draw()
check.on_clicked(func)

plt.show()
Wenn ich aber dasselbe in dem untenstehenden Code versuche, dann passiert beim Ersten Anklicken der Checkbox gar nichts. Erst beim nächsten Anklicken, wenn der Haken dann aber gesetzt ist, ist der Graph nicht mehr sichtbar. Beim nächsten Anklicken (Häckchen weg) erscheint der Graph dann wieder und immer so weiter. Ich bin der Meinung, dass dies dem Beispiel entspricht.

Code: Alles auswählen

from matplotlib.widgets import CheckButtons
import matplotlib.pyplot as plt
import numpy as np
 

t = np.arange(0.0, 2.0, 0.01)
s = np.sin(2*np.pi*t)
s1 = np.sin(4*np.pi*t)


ax = plt.subplot(111)
l0, = ax.plot(s, t, visible=True, lw=2)
l1, = ax.plot(t, s1, lw=2)

rax = plt.axes( [.05, .4, .1, .15] )
check = CheckButtons(rax, ('Graph1', 'Graph2'), (True, True))

def fnx(checkbox_label):
    if checkbox_label == 'Graph1': 
        l0.set_visible(not l0.get_visible())
    elif checkbox_label == 'Graph2': 
        l1.set_visible(not l1.get_visible())

check.on_clicked(fnx)

plt.show()
Könnte mir jemand sagen, was ich falsch mache?

Danke im Voraus

Re: Matplotlib und Checkbox

Verfasst: Sonntag 2. Oktober 2016, 20:00
von BlackJack
@rmanske: Du zeichnest die Grafik nicht neu‽

Re: Matplotlib und Checkbox

Verfasst: Montag 3. Oktober 2016, 08:22
von rmanske
Shit :mrgreen:

Vielen Dank.

Das steht jetzt noch drin.

Code: Alles auswählen

plt.draw()
Dann klappt es auch mit dem Ausblenden.