gtkagg backend - update behavior question

Hi everyone,

I am a new matplotlib user building a simple visualization tool.

I was having some issues with the graph not redrawing and I think I have reduced it to a minimal case that doesn’t work as expected for me.

In the example below one of the data elements is changed on every iteration of the update function, but the graph does not update as expected.

Am I making a mistake in my usage?

Alastair

#!/usr/bin/env python

import gtk
import gobject
from matplotlib.figure import Figure
import numpy as np

from matplotlib.backends.backend_gtkagg import FigureCanvasGTKAgg as FigureCanvas

def update(line):
global data
data[20]=data[20]+0.5
line.set_ydata(data)
line.axes.figure.canvas.draw()
return True

win = gtk.Window()
win.connect(“destroy”, lambda x: x.destroy())

win.set_default_size(400,300)
fig = Figure(figsize=(5,4), dpi=100)
ax = fig.add_subplot(111)
canvas = FigureCanvas(fig)
win.add(canvas)

data = np.random.randn(100)
line, = ax.plot(data)

win.show_all()

gobject.timeout_add(1000,update,line)

gtk.main()