Punkt mit Slider bewegen
Verfasst: Dienstag 24. April 2018, 10:12
Hallo,
ich bin neu hier und lerne seit einigen Wochen Python (2.7). Jetzt bin ich leider auf ein Problem gestoßen, welches ich alleine nicht lösen kann.
Ich möchte einen Punkt plotten und seinen Y-Wert über einen Slider steuern. Das Plotten und der Slider funktioniert, nur leider bewegt sich der Punkt nicht, weil der Wert des Sliders nicht an die Plot-Funktion übergeben wird.
Hier mein Code:
Der "Sollwert" ist der Y-Wert, der vom Slider an den Punkt übergeben werden soll. Wieso funktioniert das so nicht?
Ich habe das ganze auch noch mit der FuncAnimation versucht, leider mit dem selben Ergebnis. Hier der Code:
Hoffentlich kann mir jemand helfen. Danke!
Gruß
Martin
ich bin neu hier und lerne seit einigen Wochen Python (2.7). Jetzt bin ich leider auf ein Problem gestoßen, welches ich alleine nicht lösen kann.
Ich möchte einen Punkt plotten und seinen Y-Wert über einen Slider steuern. Das Plotten und der Slider funktioniert, nur leider bewegt sich der Punkt nicht, weil der Wert des Sliders nicht an die Plot-Funktion übergeben wird.
Hier mein Code:
Code: Alles auswählen
import matplotlib.pyplot as plt
import time
from matplotlib.widgets import Slider
plt.ion()
fig, ax = plt.subplots()
punkt, = ax.plot(0,0,marker='o')
plt.show()
sollwert=0
def slidevent(value):
sollwert = value
return sollwert
sliderax = fig.add_axes([0.2, 0.02, 0.6, 0.03], axisbg='white')
slider = Slider(sliderax, 'Value', 0, 10, valinit=5)
slider.on_changed(slidevent)
slider.drawon = False
while True:
plt.pause(1)
punkt.set_ydata(sollwert)
plt.draw()
Ich habe das ganze auch noch mit der FuncAnimation versucht, leider mit dem selben Ergebnis. Hier der Code:
Code: Alles auswählen
import matplotlib.pyplot as plt
import matplotlib.animation as animation
from matplotlib.widgets import Slider
fig, ax = plt.subplots()
ax.set_xlim(0, 5)
ax.set_ylim(0, 5)
punkt, = ax.plot(2.5,2.5,marker='o')
global sollwert
sollwert = 2.5
def slidevent(value):
sollwert = value
return sollwert
sliderax = fig.add_axes([0.2, 0.02, 0.6, 0.03], axisbg='white')
slider = Slider(sliderax, 'Value', 0, 10, valinit=2.5)
slider.on_changed(slidevent)
slider.drawon = False
def update(i, soll):
punkt.set_ydata(soll)
return punkt,
ani = animation.FuncAnimation(fig, update, fargs=(sollwert,), interval=100)
plt.show()
Gruß
Martin