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()

Hi Alastair,

I don't have clue why yours doesn't work.

however I changed the following line in the update function
data[20]=data[20]+0.5

to
data = np.random.randn(100)

And it started updating the display, with new data each update.
maybe changing a single point is not seen as a big enough change?

Steve

Alastair McKinley wrote:

···

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()
------------------------------------------------------------------------

Maybe this thread is helpful.

http://old.nabble.com/Problem-with-simple-use-of-draw()-in-animations-of-arrays-tt26174627.html#a26175190

I guess your code will work simply by calling "recache()" instead of set_ydata.

Regards,

-JJ

···

On Sat, Nov 28, 2009 at 4:50 AM, Alastair McKinley <amckinley03+mplib@...982...> wrote:

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()

------------------------------------------------------------------------------
Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day
trial. Simplify your report design, integration and deployment - and focus
on
what you do best, core application coding. Discover what's new with
Crystal Reports now. http://p.sf.net/sfu/bobj-july
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Hi JJ,

Thanks very much that was exactly the right solution!

Best regards,

Alastair

···

On Sat, Nov 28, 2009 at 12:55 AM, Jae-Joon Lee <lee.j.joon@…287…> wrote:

Maybe this thread is helpful.

http://old.nabble.com/Problem-with-simple-use-of-draw%28%29-in-animations-of-arrays-tt26174627.html#a26175190

I guess your code will work simply by calling “recache()” instead of set_ydata.

Regards,

-JJ

On Sat, Nov 28, 2009 at 4:50 AM, Alastair McKinley > > <amckinley03+mplib@…1762…82…> wrote:

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()


Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day

trial. Simplify your report design, integration and deployment - and focus

on

what you do best, core application coding. Discover what’s new with

Crystal Reports now. http://p.sf.net/sfu/bobj-july


Matplotlib-users mailing list

Matplotlib-users@lists.sourceforge.net

https://lists.sourceforge.net/lists/listinfo/matplotlib-users