#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 <chle...@nature.berkeley.edu>: >> 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 >>> https://lists.sourceforge.net/lists/listinfo/matplotlib-users >> >> Chloe Lewis Graduate student, Amundson Lab Division of Ecosystem Sciences, ESPM University of California, Berkeley 137 Mulford Hall - #3114 Berkeley, CA 94720-3114 chle...@nature.berkeley.edu ------------------------------------------------------------------------------ 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 https://lists.sourceforge.net/lists/listinfo/matplotlib-users