Maison >développement back-end >Tutoriel Python >Comment mettre à jour efficacement les tracés Matplotlib sans superposition ?
Mise à jour des tracés dans Matplotlib
Redessiner des tracés dans Matplotlib peut être difficile, surtout lorsque vous devez les mettre à jour sans ajouter de tracés supplémentaires. Cette question explore comment surmonter ce problème.
Le problème provient de l'utilisation de Figure et FigureCanvasTkAgg, qui crée un nouveau tracé à chaque fois que la fonction plots() est appelée. Cela conduit à la superposition de plusieurs tracés les uns sur les autres au lieu d'être mis à jour.
Pour résoudre ce problème, deux options sont disponibles :
Option 1 : Effacer et retracer
C'est l'option la plus simple, mais c'est aussi la plus lente. Cela implique d’effacer les tracés existants avant de retracer les nouvelles données. Ceci peut être réalisé en ajoutant graph1.clear() et graph2.clear() au début de la fonction plots(). Bien que cette approche soit simple, elle nécessite beaucoup de calculs et peut ne pas convenir aux mises à jour en temps réel.
Option 2 : Mettre à jour les données
Une approche plus efficace consiste à mettre à jour les données des objets de tracé existants. Cela nécessite de modifier la fonction plots() pour mettre à jour les ydata des lignes plutôt que de créer de nouvelles lignes. Cette méthode est beaucoup plus rapide mais nécessite une gestion minutieuse de la forme des données et des limites des axes.
Par exemple :
# Update the y-data of the existing line line1.set_ydata(np.sin(x + phase)) # Draw the updated plot fig.canvas.draw() # Flush any pending events fig.canvas.flush_events()
Cette approche permet des mises à jour efficaces du tracé sans avoir besoin d'effacer et de retracer la figure entière. Il est particulièrement utile pour la visualisation en temps réel de données dynamiques.
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!