"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Por qué Matplotlib en tiempo real no se actualiza en Loop?

¿Por qué Matplotlib en tiempo real no se actualiza en Loop?

Publicado el 2025-04-21
Navegar:924

Why Doesn't My Matplotlib Real-Time Plot Update Inside a While Loop?

en tiempo real trazado en un bucle de tiempo: una guía de solución de problemas

al intentar crear gráficos en tiempo real, es esencial comprender por qué las actualizaciones de la trama pueden no ocurrir como se esperaba durante un bucle while. En esta instancia específica, el problema surge con la implementación de trazado en tiempo real usando matplotlib para visualizar los datos recuperados de una cámara en OpenCV.

para aislar el problema, se presentó un código de ejemplo simplificado:

fig = plt.figure()
plt.axis([0, 1000, 0, 1])

i = 0
x = list()
y = list()

while i  

con la expectativa de ver 1000 puntos trazados individualmente, el código sorprendentemente solo muestra el primer punto y luego espera a que el bucle se complete antes de completar el resto del gráfico. Este comportamiento surge porque el comportamiento predeterminado de Matplotlib es esperar hasta el final del programa para dibujar el gráfico completo.

para superar esta limitación y lograr trazado en tiempo real, el fragmento de código debe modificarse de la siguiente manera:

import numpy as np
import matplotlib.pyplot as plt

plt.axis([0, 10, 0, 1])

for i in range(10):
    y = np.random.random()
    plt.scatter(i, y)
    plt.pause(0.05)

plt.show()

La diferencia clave aquí es la inclusión de plt.Pause (0.05). Esta función se detiene la ejecución del programa durante 0.05 segundos, lo que permite que ambos puntos de datos se trazcan y el bucle de evento de la GUI se ejecute (haciendo posible las interacciones del mouse).

con esta modificación, el diagrama se actualizará en tiempo real, mostrando cada punto a medida

Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3