I am running python 2.6.4 and matplotlib 0.99.1.1. I was using the TkAgg
backend with my original problem, but I tried GTKAgg with the same result.
Here are two sample codes. One works and the other does not.
This one works ...
plt.ion()
x = np.arange(0,2*np.pi,0.01)
y = np.sin(x)
line, = plt.plot(x,y)
for i in np.arange(1,200):
y = np.sin(x + i/10.0)
line.set_ydata(y)
plt.draw()
This one does not ...
plt.ion()
x = np.arange(0,2*np.pi,0.01)
y = np.sin(x)
line, = plt.plot(x,y)
for i in np.arange(1,200):
for k in range(len(x)):
y[k] = np.sin(x[k] + i/10.0)
line.set_ydata(y)
plt.draw()
The only real difference is that I do not get a new ndarray instance in the
second one. My guess was that there was something to do with the object
being the same instance as before causing some issue when I updated the
ydata.
On Wed, Oct 6, 2010 at 7:56 PM, Benjamin Root <ben.r...@ou.edu> wrote:
> On Wed, Oct 6, 2010 at 1:06 PM, Michael Cracraft <
> michael.cracr...@gmail.com> 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
>
>
--
_____________________________________________
------------------------------------------------------------------------------
Beautiful is writing same markup. Internet Explorer 9 supports
standards for HTML5, CSS3, SVG 1.1, ECMAScript5, and DOM L2 & L3.
Spend less time writing and rewriting code and more time creating great
experiences on the web. Be a part of the beta today.
http://p.sf.net/sfu/beautyoftheweb
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users