Plots in Matplotlib für Tkinter aktualisieren
Sie sind auf Schwierigkeiten beim Aktualisieren von Plots in Matplotlib innerhalb einer Tkinter-Anwendung gestoßen. Sie ermöglichen Benutzern, die Zeitskaleneinheiten anzupassen, was eine Neuberechnung und Aktualisierung des Plots erfordert, ohne neue Plots zu erstellen.
Ansatz 1: Löschen und erneutes Plotten
Ein einfacher Weg Methode besteht darin, das vorhandene Diagramm durch Aufrufen von graph1.clear() und graph2.clear() zu löschen und dann die Daten erneut darzustellen. Es ist zwar einfacher, aber auch langsamer.
Ansatz 2: Plotdaten aktualisieren
Ein alternativer Ansatz, der deutlich schneller ist, beinhaltet die Aktualisierung der Daten vorhandener Plotobjekte. Dies erfordert eine leichte Anpassung Ihres Codes:
def plots(): global vlgaBuffSorted cntr() result = collections.defaultdict(list) for d in vlgaBuffSorted: result[d['event']].append(d) result_list = result.values() f = Figure() graph1 = f.add_subplot(211) graph2 = f.add_subplot(212, sharex=graph1) # Create plot objects vds_line, = graph1.plot([], [], 'bo', label='a') vgs_line, = graph1.plot([], [], 'rp', label='b') isub_line, = graph2.plot([], [], 'b-', label='c') for item in result_list: # Update plot data vds_line.set_data([], []) vgs_line.set_data([], []) isub_line.set_data([], []) tL = [] vgsL = [] vdsL = [] isubL = [] for dict in item: tL.append(dict['time']) vgsL.append(dict['vgs']) vdsL.append(dict['vds']) isubL.append(dict['isub']) # Update plot data vds_line.set_data(tL, vdsL) vgs_line.set_data(tL, vgsL) isub_line.set_data(tL, isubL) # Draw the plot f.canvas.draw() f.canvas.flush_events()
Bei diesem Ansatz erstellen Sie Plotobjekte (z. B. vds_line) und aktualisieren dann deren Daten bei jeder Iteration. Die Methoden „draw()“ und „flush_events()“ werden verwendet, um den aktualisierten Plot im Tkinter-Fenster anzuzeigen.
Durch die Wahl des geeigneten Ansatzes können Sie Plots in Matplotlib innerhalb Ihrer Tkinter-Anwendung effektiv aktualisieren.
Das obige ist der detaillierte Inhalt vonWie kann ich Matplotlib-Plots in einer Tkinter-Anwendung effizient aktualisieren, nachdem ich die Zeitskala geändert habe?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!