Maison > développement back-end > Tutoriel Python > Comment mettre à jour efficacement les tracés Matplotlib sans superposition ?

Comment mettre à jour efficacement les tracés Matplotlib sans superposition ?

Mary-Kate Olsen
Libérer: 2024-12-15 10:42:15
original
632 Les gens l'ont consulté

How to Efficiently Update Matplotlib Plots Without Overlaying?

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()
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal