|
From: Benjamin R. <ben...@ou...> - 2010-10-06 23:57:23
|
On Wed, Oct 6, 2010 at 1:06 PM, Michael Cracraft <mic...@gm... > wrote: > 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 > > Michael, Which version of matplotlib are you using? Which backend are you using? Also, could you include a small script or two that demonstrate the problem? This way, we can poke around with it and see what is up. Ben Root |