Seite 1 von 1

matplotlib Funktionsgraph verschieben

Verfasst: Donnerstag 15. September 2016, 19:50
von zarathustra
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

Re: matplotlib Funktionsgraph verschieben

Verfasst: Sonntag 2. Oktober 2016, 18:07
von zarathustra
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

Re: matplotlib Funktionsgraph verschieben

Verfasst: Montag 19. März 2018, 18:56
von zarathustra
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

Re: matplotlib Funktionsgraph verschieben

Verfasst: Montag 19. März 2018, 20:43
von zarathustra
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