On Fri, Aug 29, 2008 at 12:01 PM, Ray Salem <[EMAIL PROTECTED]> wrote:

>    This is my first post, I really enjoy using python/numpy/scipy/matplotlib
> - great replacement for matlab. I am having a problem, with plot 1 point at
> a time. i am attempt to emulate an issue in the lab, where we get samples
> every second and plot them. The figure becomes non-responsive and eventually
> stops plotting, does anyone have an idea.

Yep, this is a bad idea.  The line object in matplotlib is a fairly
heavy object which has a lot of stuff under the hood.  Each plot
command creates a new line object.  What you want to do is create just
one (or a few) line objects, each of which handles many points.  Below
is the first pass naive implementation to show you how to do this --
you will probably want to improve on this by using a better data
structure to store the growing points, eg a buffer that drops old
points off the end, or a dynamically resizing numpy array which grows
intelligently when it gets full.  The main point is that we create a
single line object and add the new data to it....

import time
import matplotlib
matplotlib.use('TkAgg')
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.collections as collections


plt.ion() # interactive plotting

fig = plt.figure()
ax = fig.add_subplot(111, autoscale_on=False)

xdata, ydata = [0.], [0.]
line, = ax.plot(xdata, ydata, 'o')

dt = 0.1
for i in range(100):
    x = xdata[-1] + dt
    y = np.sin(2*np.pi*x)
    xdata.append(x)
    ydata.append(y)
    line.set_data(xdata, ydata)
    ax.set_xlim(x-1, x)
    ax.set_ylim(-1.1, 1.1)
    fig.canvas.draw()
    time.sleep(0.1)


plt.show()

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Matplotlib-devel mailing list
Matplotlib-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-devel

Reply via email to