plot a data stream with matplotlib

Dear List,

I have some variables I want to plot... the values of those variable
change in time... I would like to plot the result with a traditional
line plot

those variables are traits of a class (don't know if this can make a
difference...)

is there any example of this with matplotlib?

best regards,
simone gabbriellini

Guessing about what you want:

Does the class change with time? that is, perhaps you have a class foo, and foo evolves, and you would like to plot a history of some traits of foo, but at any given moment foo only contains its current state?

If so, I think you need to have a function in foo, or even a separate class, that takes `snapshots' of foo's traits on one schedule, and stores them, and can also plot them on some schedule. Choosing how to do that is more a python problem than a matplotlib problem; personally, I have something set up so class 'profile' has functions to 'setup_plot' and 'add_current_state_to_plot', and I just have to choose when to call the latter.

Or you can just store the values and plot at the end; once you have one list of the times, and a separate list of each trait's history at those times, you're set up for matplotlib plotting, e.g.

from pylab import *
plot(times, traitA, times, traitB, times, traitC)
show()

although, while looking for a simple example, I found this:

http://matplotlib.sourceforge.net/examples/pylab_examples/plotfile_demo.html

which is not totally simple but looks great.

&C

···

On Jan 18, 2009, at 9:36 AM, Simone Gabbriellini wrote:

Dear List,

I have some variables I want to plot... the values of those variable
change in time... I would like to plot the result with a traditional
line plot

those variables are traits of a class (don't know if this can make a
difference...)

is there any example of this with matplotlib?

best regards,
simone gabbriellini

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options

thanks, it is exactly what I need... I have undestood the logic, I
build a plot, put my traits values into an array and then I call the
add_current_state_to_plot function to update the plot with the new
values...

I am an absolute beginner of matplotlib, can you give me a little
example of add_current_state_to_plot function? Because I don't know
the right way to update: do I have to pass all the array, or just the
new values?

best regards,
simone

2009/1/18 C Lewis <chlewis@...2456...>:

···

Guessing about what you want:

Does the class change with time? that is, perhaps you have a class foo, and
foo evolves, and you would like to plot a history of some traits of foo, but
at any given moment foo only contains its current state?

If so, I think you need to have a function in foo, or even a separate class,
that takes `snapshots' of foo's traits on one schedule, and stores them, and
can also plot them on some schedule. Choosing how to do that is more a
python problem than a matplotlib problem; personally, I have something set
up so class 'profile' has functions to 'setup_plot' and
'add_current_state_to_plot', and I just have to choose when to call the
latter.

Or you can just store the values and plot at the end; once you have one list
of the times, and a separate list of each trait's history at those times,
you're set up for matplotlib plotting, e.g.

from pylab import *
plot(times, traitA, times, traitB, times, traitC)
show()

although, while looking for a simple example, I found this:

http://matplotlib.sourceforge.net/examples/pylab_examples/plotfile_demo.html

which is not totally simple but looks great.

&C

On Jan 18, 2009, at 9:36 AM, Simone Gabbriellini wrote:

Dear List,

I have some variables I want to plot... the values of those variable
change in time... I would like to plot the result with a traditional
line plot

those variables are traits of a class (don't know if this can make a
difference...)

is there any example of this with matplotlib?

best regards,
simone gabbriellini

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options

#Skeleton example of a taking snapshots of an evolving class
import pylab as p
from math import log
class foo:
     def __init__(self):
         self.red = 0
         self.green = 1
         self.age = 0
         self.history = ([self.age],[self.red],[self.green])

     def snapshot(self):
         self.history[0].append(self.age)
         self.history[1].append(self.red)
         self.history[2].append(self.green)

     def evolve(self, time):
         self.red = self.red + time/2
         self.green = self.green * log(time)
         self.age = self.age + time
         self.snapshot()

     def display(self):
         p.plot(self.history[0],self.history[1],self.history[0],self.history[2])
         p.show()

if __name__ == '__main__':
     f = foo()
     f.snapshot()
     f.evolve(6); f.evolve(.27);f.evolve(10);f.evolve(2)
     print f.history
     f.display()

thanks, it is exactly what I need... I have undestood the logic, I
build a plot, put my traits values into an array and then I call the
add_current_state_to_plot function to update the plot with the new
values...

I am an absolute beginner of matplotlib, can you give me a little
example of add_current_state_to_plot function? Because I don't know
the right way to update: do I have to pass all the array, or just the
new values?

best regards,
simone

2009/1/18 C Lewis <chlewis@...2456...>:

Guessing about what you want:

Does the class change with time? that is, perhaps you have a class foo, and
foo evolves, and you would like to plot a history of some traits of foo, but
at any given moment foo only contains its current state?

If so, I think you need to have a function in foo, or even a separate class,
that takes `snapshots' of foo's traits on one schedule, and stores them, and
can also plot them on some schedule. Choosing how to do that is more a
python problem than a matplotlib problem; personally, I have something set
up so class 'profile' has functions to 'setup_plot' and
'add_current_state_to_plot', and I just have to choose when to call the
latter.

Or you can just store the values and plot at the end; once you have one list
of the times, and a separate list of each trait's history at those times,
you're set up for matplotlib plotting, e.g.

from pylab import *
plot(times, traitA, times, traitB, times, traitC)
show()

although, while looking for a simple example, I found this:

http://matplotlib.sourceforge.net/examples/pylab_examples/plotfile_demo.html

which is not totally simple but looks great.

&C

Dear List,

I have some variables I want to plot... the values of those variable
change in time... I would like to plot the result with a traditional
line plot

those variables are traits of a class (don't know if this can make a
difference...)

is there any example of this with matplotlib?

best regards,
simone gabbriellini

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options

Chloe Lewis
Graduate student, Amundson Lab
Division of Ecosystem Sciences, ESPM
University of California, Berkeley
137 Mulford Hall - #3114
Berkeley, CA 94720-3114
chlewis@...2456...

···

On Jan 18, 2009, at 3:18 PM, Simone Gabbriellini wrote:

On Jan 18, 2009, at 9:36 AM, Simone Gabbriellini wrote:

I see that you first build your array and then display it at the end...

is it possible in matplotlib to update the plot while the class is
evolving? like:

f.evolve(6)
f.display()
f.evolve(.27)
f.display()
f.evolve(10)
f.display()
f.evolve(2)
f.display()

best regards,
simone

2009/1/19 C Lewis <chlewis@...2456...>:

···

#Skeleton example of a taking snapshots of an evolving class
import pylab as p
from math import log
class foo:
   def __init__(self):
       self.red = 0
       self.green = 1
       self.age = 0
       self.history = ([self.age],[self.red],[self.green])

   def snapshot(self):
       self.history[0].append(self.age)
       self.history[1].append(self.red)
       self.history[2].append(self.green)

   def evolve(self, time):
       self.red = self.red + time/2
       self.green = self.green * log(time)
       self.age = self.age + time
       self.snapshot()

   def display(self):

p.plot(self.history[0],self.history[1],self.history[0],self.history[2])
       p.show()

if __name__ == '__main__':
   f = foo()
   f.snapshot()
   f.evolve(6); f.evolve(.27);f.evolve(10);f.evolve(2)
   print f.history
   f.display()

On Jan 18, 2009, at 3:18 PM, Simone Gabbriellini wrote:

thanks, it is exactly what I need... I have undestood the logic, I
build a plot, put my traits values into an array and then I call the
add_current_state_to_plot function to update the plot with the new
values...

I am an absolute beginner of matplotlib, can you give me a little
example of add_current_state_to_plot function? Because I don't know
the right way to update: do I have to pass all the array, or just the
new values?

best regards,
simone

2009/1/18 C Lewis <chlewis@...2456...>:

Guessing about what you want:

Does the class change with time? that is, perhaps you have a class foo,
and
foo evolves, and you would like to plot a history of some traits of foo,
but
at any given moment foo only contains its current state?

If so, I think you need to have a function in foo, or even a separate
class,
that takes `snapshots' of foo's traits on one schedule, and stores them,
and
can also plot them on some schedule. Choosing how to do that is more a
python problem than a matplotlib problem; personally, I have something
set
up so class 'profile' has functions to 'setup_plot' and
'add_current_state_to_plot', and I just have to choose when to call the
latter.

Or you can just store the values and plot at the end; once you have one
list
of the times, and a separate list of each trait's history at those times,
you're set up for matplotlib plotting, e.g.

from pylab import *
plot(times, traitA, times, traitB, times, traitC)
show()

although, while looking for a simple example, I found this:

http://matplotlib.sourceforge.net/examples/pylab_examples/plotfile_demo.html

which is not totally simple but looks great.

&C

On Jan 18, 2009, at 9:36 AM, Simone Gabbriellini wrote:

Dear List,

I have some variables I want to plot... the values of those variable
change in time... I would like to plot the result with a traditional
line plot

those variables are traits of a class (don't know if this can make a
difference...)

is there any example of this with matplotlib?

best regards,
simone gabbriellini

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options

Chloe Lewis
Graduate student, Amundson Lab
Division of Ecosystem Sciences, ESPM
University of California, Berkeley
137 Mulford Hall - #3114
Berkeley, CA 94720-3114
chlewis@...2456...

Simone Gabbriellini wrote:

I see that you first build your array and then display it at the end...

is it possible in matplotlib to update the plot while the class is
evolving? like:

f.evolve(6)
f.display()
f.evolve(.27)
f.display()
f.evolve(10)
f.display()
f.evolve(2)
f.display()

You'd want to look at the animation examples in examples/animation. The exact
details will depend upon what backend you want to use, but strip_chart_demo.py,
simple_anim_gtk.py, and gtk_timeout.py are good places to start.

HTH,

Ryan

···

--
Ryan May
Graduate Research Assistant
School of Meteorology
University of Oklahoma

Simone Gabbriellini-3 wrote:

Dear List,

I have some variables I want to plot... the values of those variable
change in time... I would like to plot the result with a traditional
line plot

those variables are traits of a class (don't know if this can make a
difference...)

is there any example of this with matplotlib?

Hi Simone,

I think you will find the following examples useful:
http://eli.thegreenplace.net/2008/08/01/matplotlib-with-wxpython-guis/

Both feature "dynamic" plotting of variables that change (either by the user
or in time)

Eli

···

--
View this message in context: http://www.nabble.com/plot-a-data-stream-with-matplotlib-tp21530559p21622559.html
Sent from the matplotlib - users mailing list archive at Nabble.com.

that's nice!!! thank you...

anyway, I wanted to take advantage of the Traits implementation of my app...

simone

2009/1/23 eliben <eliben@...287...>:

···

Simone Gabbriellini-3 wrote:

Dear List,

I have some variables I want to plot... the values of those variable
change in time... I would like to plot the result with a traditional
line plot

those variables are traits of a class (don't know if this can make a
difference...)

is there any example of this with matplotlib?

Hi Simone,

I think you will find the following examples useful:
matplotlib with wxPython GUIs - Eli Bendersky's website

Both feature "dynamic" plotting of variables that change (either by the user
or in time)

Eli

--
View this message in context: http://www.nabble.com/plot-a-data-stream-with-matplotlib-tp21530559p21622559.html
Sent from the matplotlib - users mailing list archive at Nabble.com.

------------------------------------------------------------------------------
This SF.net email is sponsored by:
SourcForge Community
SourceForge wants to tell your story.
http://p.sf.net/sfu/sf-spreadtheword
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
matplotlib-users List Signup and Options