Maison >développement back-end >Tutoriel Python >Comment puis-je mettre à jour efficacement les tracés Matplotlib dans une application Tkinter après avoir modifié l'échelle de temps ?
Mise à jour des tracés dans Matplotlib pour Tkinter
Vous avez rencontré des difficultés lors de la mise à jour des tracés dans Matplotlib au sein d'une application Tkinter. Vous permettez aux utilisateurs d'ajuster les unités de l'échelle de temps, ce qui nécessite de recalculer et de mettre à jour le tracé sans créer de nouveaux tracés.
Approche 1 : Effacement et retraçage
Une méthode simple La méthode consiste à effacer le tracé existant en appelant graph1.clear() et graph2.clear(), puis à retracer les données. Bien que ce soit plus simple, c'est également plus lent.
Approche 2 : mise à jour des données de tracé
Une approche alternative, nettement plus rapide, consiste à mettre à jour les données des objets de tracé existants. Cela nécessite d'ajuster légèrement votre code :
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()
Dans cette approche, vous créez des objets de tracé (par exemple, vds_line), puis mettez à jour leurs données à chaque itération. Les méthodes draw() et flush_events() sont utilisées pour afficher le tracé mis à jour sur la fenêtre Tkinter.
En choisissant l'approche appropriée, vous pouvez efficacement mettre à jour les tracés dans Matplotlib au sein de votre application Tkinter.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!