Mehrere Kurven in einen Plot einfügen

Fragen zu Tkinter.
Antworten
Ramps
User
Beiträge: 3
Registriert: Mittwoch 14. März 2018, 22:36

Dienstag 1. Mai 2018, 19:11

Hallo,
ich möchte über ein GUI Daten eingeben und diese dann in ein Diagramm plotten lassen.
Der Code ist ein wenig unübersichtlich, deshalb möchte ich erstmal versuchen das Ganze grundsätzlich zu klären. Falls das nicht hilft versuche ich es irgendwie auf ein übersichtliches Minimalbeispiel herunter zu brechen.

Das zu plottende Diagramm hat 3-Achsen

x_Achse
y1_Achse
y2_Achse

Jede Achse hat eine eigene Dimension:

x_Achse - Zeit in Sekunden
y1_Achse -Drehmoment in Nm
y2_Achse - Strom in A

Nun habe ich sagen wir mal 10 Drehmomente die ich auf die y1_Achse plotten möchte und 10 Ströme, die auf die y1_Achse kommen. Das ganze Variiert, je nach dem welche Daten ich gegenüber stellen möchte. Statt jetzt 10 Textfelder mit tkinter einzufügen, habe ich nur ein Textfeld für die Drehmomente und ein Textfeld für die Ströme.

Die Daten werden aus der CSV-Datei ausgelesen, was auch ohne Probleme klappt. Nun möchte ich nacheinander alle werte eingeben können, also z.B. Drehmoment 1 und Strom 1 -> Button "Einfügen" drücke ... Drehmoment 2 und Strom 2 Eingeben -> Button "Einfügen" Drücken ...

Wenn ich fertig bin, habe ich noch einen zweiten Button, der mir dann die eingefügten Daten plottet.


Bei Matlab würde ich das einfach per "hold on" befehl machen. Einen Plot erzeugen, hold on und dann alle kurven einfügen. Ich habe gelesen, dass es den Befehl bei Python nicht gibt und man einfach nur den Plotbefehl x-mal ausführen muss, dadurch werden dann die Daten eingefügt. Mit plt.show(), werden dann alle Kurven geplottet.

Das habe ich nun versucht. Ich habe eine Funktion "insert_data()" erzeugt, welche die Daten aus dem Textfeld ließt und den Plot-Befehl bei betätigung des "Einfüge" buttons ausführt. Zum Darstellen selbst habe ich noch eine Funktion "zeige_plot()" erstellt, die im wesentlichen nur den plt.show() Befehl enthält, um die zuvor eingefügten Daten zu plotten.

Leider funktioniert das nicht. Wenn ich zwei Daten eingebe, wird es odnungsgemäß geplottet. Gebe ich danach weitere Daten ein und drücke zum schluss "Plotten", dann öffnet er mir nur mehrere Fenster mit seperaten plots. Hat Jemand ein einfaches Beispiel an welchem ich mir das Vorgehen herleiten kann?

Danke im Voraus!
Ramps
User
Beiträge: 3
Registriert: Mittwoch 14. März 2018, 22:36

Dienstag 1. Mai 2018, 19:20

Ok, ich glaube ich bin schon einen Schritt weiter.
Ich glaube ein Problem war, dass ich den Graphen in der Funktion und nicht global definiert habe, dann erzeugt er nämlich bei jedem "Daten Einfügen" einen neuen Graphen. Wenn ich den Graphen global definiere, werden in der Funktion nur die Daten in den bestehenden Graphen eingefügt, anstatt immer einen neuen zu erzeugen.
Nun müsste ich nur noch wissen ob ich für jede Kurve eine eigene Legende erstellen könnte bzw. automatisch eine neue Kurven Farbe?
Benutzeravatar
MagBen
User
Beiträge: 768
Registriert: Freitag 6. Juni 2014, 05:56
Wohnort: Bremen
Kontaktdaten:

Dienstag 1. Mai 2018, 19:22

Meinst du sowas:
Bild
https://stackoverflow.com/questions/548 ... le_rich_qa
Ramps hat geschrieben:Das zu plottende Diagramm hat 3-Achsen
2 Achsen kenne ich, bei 3 Achsen weiß ich nicht, wohin du die 3. Achse plotten willst.
a fool with a tool is still a fool, www.magben.de, YouTube
Antworten