Solution for pre-calculated results
This makes a decent animation from the data in your output file:
from matplotlib import pyplot as plt from matplotlib import animation fig = plt.figure() with open('error_output.txt') as fobj: x, y = zip(*([float(x) for x in line.split(',')] for line in fobj)) def animate(n): line, = plt.plot(x[:n], y[:n], color='g') return line, anim = animation.FuncAnimation(fig, animate, frames=len(x), interval=1000) plt.show()
Real-time animation solution for calculating values
Here is the version that allows real-time animation of data using regr_magic :
import random import time from matplotlib import pyplot as plt from matplotlib import animation class RegrMagic(object): """Mock for function Regr_magic() """ def __init__(self): self.x = 0 def __call__(self): time.sleep(random.random()) self.x += 1 return self.x, random.random() regr_magic = RegrMagic() def frames(): while True: yield regr_magic() fig = plt.figure() x = [] y = [] def animate(args): x.append(args[0]) y.append(args[1]) return plt.plot(x, y, color='g') anim = animation.FuncAnimation(fig, animate, frames=frames, interval=1000) plt.show()
The RegrMagic class is the mocks Regr_magic() . The __call__ method makes an instance of this class as a function. It has a state and produces numbers 1, 0.56565 , 2, 0.65566 , etc. For each call (the second number is a random number). It also has a time delay to simulate the calculation time.
Important frames() . Replace Regr_magic() with Regr_magic() and it should be good to go.
Solution for a specific task
Version without layouts:
import random import time from matplotlib import pyplot as plt from matplotlib import animation def frames(): while True: yield Regr_magic() fig = plt.figure() x = [] y = [] def animate(args): x.append(args[0]) y.append(args[1]) return plt.plot(x, y, color='g') anim = animation.FuncAnimation(fig, animate, frames=frames, interval=1000) plt.show()