"If a worker wants to do his job well, he must first sharpen his tools." - Confucius, "The Analects of Confucius. Lu Linggong"
Front page > Programming > Why is Matplotlib real-time chart not updated in loop?

Why is Matplotlib real-time chart not updated in loop?

Posted on 2025-04-21
Browse:945

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

Real-Time Plotting in a While Loop: A Troubleshooting Guide

When attempting to create real-time plots, it's essential to understand why the plot updates might not occur as expected during a while loop. In this specific instance, the problem arises with implementing real-time plotting using matplotlib to visualize data retrieved from a camera in OpenCV.

To isolate the issue, a simplified example code was presented:

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

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

while i 

With the expectation of seeing 1000 points plotted individually, the code surprisingly only shows the first point and then waits for the loop to complete before filling in the rest of the graph. This behavior arises because matplotlib's default behavior is to wait until the end of the program to draw the entire graph.

To overcome this limitation and achieve real-time plotting, the code snippet should be modified as follows:

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()

The key difference here is the inclusion of plt.pause(0.05). This function pauses the execution of the program for 0.05 seconds, allowing both the data point to be plotted and the GUI's event loop to run (making mouse interactions possible).

With this modification, the plot will be updated in real-time, showing each point as it is added to the dataset.

Latest tutorial More>

Disclaimer: All resources provided are partly from the Internet. If there is any infringement of your copyright or other rights and interests, please explain the detailed reasons and provide proof of copyright or rights and interests and then send it to the email: [email protected] We will handle it for you as soon as possible.

Copyright© 2022 湘ICP备2022001581号-3