I have a code that continuously modifies a numpy.ndarray variable. Then, I use set_ydata on the matplotlib.lines.Line2D object to the same ndarray variable. Then, I call fig.canvas.draw() to redraw the figure, where fig is Figure object.
However, the line on the graph never changes. I print a few entries to the console to make sure that the variable is changing.
It seems like the only way I can get the line to update is to create a completely new ndarray, update that variable with the new values and use set_ydata on my line object. Then, the redraw works. Other things that I tried that didn’t seem to work were:
L1.set_ydata(x[:])
L1.set_ydata(x.tolist())
L1.set_ydata(list(x))
where L1 is my line object, and x is my ndarray. To make it redraw I have to do something like this.
xnew = numpy.zeros(numpy.size(x,0))
for k in range(numpy.size(x,0)):
xnew[k] = x[k]
L1.set_ydata(xnew)
fig.canvas.draw()
Is there some switch I can set to force a redraw of the elements? I feel like I am missing something fundamental.
Thanks,
Michael
···
–