Maison >développement back-end >Tutoriel Python >Comment mettre à jour dynamiquement les tracés Matplotlib sans redessiner complètement ?

Comment mettre à jour dynamiquement les tracés Matplotlib sans redessiner complètement ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-13 16:39:02431parcourir

How to Dynamically Update Matplotlib Plots without Complete Redraws?

Mise à jour dynamique des tracés dans Matplotlib sans redessins complets

Lors de la collecte de données à partir d'un port série et de leur traçage, il existe des inefficacités associées à la mise à jour commune méthodes. Effacer et redessiner l’intégralité de l’intrigue ou utiliser des animations chronométrées peut s’avérer peu pratique ou introduire des retards. Cet article présente une approche alternative qui permet des mises à jour incrémentielles du tracé uniquement lorsque de nouvelles données sont reçues.

Mises à jour incrémentielles du tracé

Matplotlib fournit une variété de techniques d'animation, notamment la Fonction FuncAnimation. Cette fonction permet l'animation d'une fonction spécifique dans le temps. Dans notre cas, nous pouvons utiliser cette fonction pour animer le processus d'acquisition de données.

Implémentation de la fonction de mise à jour

La méthode d'animation consiste à modifier la propriété "data" du objet tracé. Au lieu d'effacer l'écran ou la figure, nous pouvons simplement étendre la propriété data en ajoutant de nouveaux points de données aux points existants. Voici un exemple de fonction qui fait cela :

import matplotlib.pyplot as plt
import numpy

hl, = plt.plot([], [])

def update_line(hl, new_data):
    hl.set_xdata(numpy.append(hl.get_xdata(), new_data))
    hl.set_ydata(numpy.append(hl.get_ydata(), new_data))
    plt.draw()

Lorsque de nouvelles données arrivent du port série, appelez simplement la fonction update_line avec les nouvelles données. Cela mettra progressivement à jour l'intrigue sans entraîner la surcharge liée au redessin de la figure entière.

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!

Déclaration:
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