I have a graph with multiple data sets on it. I need to continually redraw these lines, each separately, as the data is updated. How can I delete and reestablish it repeatedly, preferably without having to delete the entire graph and redraw all of the lines on it every time?
Update Lines in matplotlib
Asked Answered
Look for animation API of Matplotlib. There are some examples too... –
Probate
The plotting is going on inside a function being passed into the scipy fmin function, which means that I cannot permanently assign persistent names at each plot command due to scoping. –
Mantra
#!/usr/bin/env python
import time
from pylab import *
ion() # turn interactive mode on
# initial data
x = arange(-8, 8, 0.1);
y1 = sin(x)
y2 = cos(x)
# initial plot
line1, line2, = plot(x, y1, 'r', x, y2, 'b')
line1.axes.set_xlim(-10, 10)
line1.axes.set_ylim(-2, 2)
line1.set_label("line1")
line2.set_label("line2")
legend()
grid()
draw()
# update line 1
for i in xrange(50):
time.sleep(0.1)
# update data
y1 = sin(x + float(i) / 10)
# update plot
line1.set_ydata(y1)
draw()
# update line 2
for i in xrange(50):
time.sleep(0.1)
# update data
y2 = cos(x + float(i) / 10)
# update plot
line2.set_ydata(y2)
draw()
When I try to make line objects like this, python complains that it is a 'NoneType' and thus not iterable. –
Mantra
is it related to this by any chance? –
Appetizing
Actually it turns out that this does work normally. I can't use it in my case because the inter-threading wrapper being used doesn't allow the assignment of the plot lines, but it is a valid answer. –
Mantra
© 2022 - 2024 — McMap. All rights reserved.