matplotlib Funktionsgraph verschieben

mit matplotlib, NumPy, pandas, SciPy, SymPy und weiteren mathematischen Programmbibliotheken.
Antworten
zarathustra
User
Beiträge: 33
Registriert: Samstag 17. April 2010, 23:02

Donnerstag 15. September 2016, 19:50

Hallo und Guten Abend an alle Leser meiner Frage,

ich suche nach einer Möglichkeit einen kompletten Funktionsgraphen (z.B. Parabel oder Sinus) mit der Maus innerhalb der figure zu verschieben. Das ganze soll eine "Graphische Lösung" für Weg-Zeit Probleme werden.

Ich finde im Netz aber keinen richtigen Zugang. Die Beispiele aus "Event Handling an Picking" bringen mich nicht wirklich weiter.

Kann mir jemand helfen?

Grüße

Zarathustra
zarathustra
User
Beiträge: 33
Registriert: Samstag 17. April 2010, 23:02

Sonntag 2. Oktober 2016, 18:07

Hallo,

Ich hab's selbst rausbekommen. Hier:

http://stackoverflow.com/questions/2088 ... ost-artist

gab's den Hinweis. Das Beispiel auf Line2D umgemodelt und mann kann eine Kurve beliebig innerhalb der Figure verschieben.

Zarathustra
zarathustra
User
Beiträge: 33
Registriert: Samstag 17. April 2010, 23:02

Montag 19. März 2018, 18:56

Guten Abend,

ich versuche es mal in einem von mir eröffneten Thema.

Gibt es eine Möglichkeit mit "markevery" oder einem anderen Befehl einen einzelnen Datenpunkt, z.B. x[20] zu markieren? Ich weiß, dass man es mit einem zweiten Plotbefehl kann, indem man dann an der Stelle einen gefüllten Kringel oder ähnliches plottet. Das will ich gerade nicht, denn jeder plot stellt einen eigenen Funktionsgraphen dar.

Ich verschiebe mit der Maus aber meine Kurven auf der Diagrammfläche und da soll(en) sich die Markierung(en) mitbewegen. Wenn der Marker ein separater "Graph" ist, dann bleibt er zurück denke ich. Oder gibt es die Möglichkeit den Marker an den Funktionsgraph "anzukleben"?

Bei Matlab scheint das mit "MarkerIndices" zu funktionieren, bei Scilab habe ich es mal über Datatips gemacht, indem ich diesen entsprechende Marker zuwies.

Gibt es unter Matplotlib auch eine Möglicheit?

Vielen Dank für Eure Hilfe.

Viele Grüße

Zarathustra
zarathustra
User
Beiträge: 33
Registriert: Samstag 17. April 2010, 23:02

Montag 19. März 2018, 20:43

Guten Abend,

ich hab's hier https://stackoverflow.com/questions/840 ... -on-a-line herausgefunden

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt

xs = np.linspace(-np.pi, np.pi, 30)
ys = np.sin(xs)
markers_on = [12, 17, 18, 19]
plt.plot(xs, ys, '-gD', markevery=markers_on)
plt.show()
Das kann man z.B. so umbauen:

Code: Alles auswählen

import numpy as np
import matplotlib.pyplot as plt

xs = np.linspace(-np.pi, np.pi, 30)
ys = np.sin(xs)
i, = np.where(ys==max(ys))
markers_on = [i]
plt.plot(xs, ys, '-gD', markevery=markers_on)
plt.show()
dann bekommt man das Maximum des Sinus markiert.

Viele Grüße

Zarathustra
Antworten