Create dynamic updated graph with Python
Question: I need your help to write a script in Python that will take dynamically
changed data, the source of data is not matter here, and display graph on the
screen.

I know how to use matplotlib, but the problem with matplotlib, that I can
display graph only once, at the end of the script. I need to be able not only
to display graph one time, but also update it on the fly, each time when data
changes.

I found that it is possible to use wxPython with matplotlib to do this, but it
is little bit complicate to do this for me, because i am not familiar with
wxPython at all.

So I will be very happy if someone will show me simple example how to use
wxPython with matplotlib to show and update simple graph. Or, if it is some
other way to do this, it will be good to me too.

PS:  
Ok, since no one answered and looked at matplotlib help noticed by @janislaw
and wrote some code. This is some dummy example:

    
    
    import time
    import matplotlib.pyplot as plt
    
    
    def data_gen():
        a=data_gen.a
        if a>10:
            data_gen.a=1
        data_gen.a=data_gen.a+1
        return range (a,a+10)
    
    def run(*args):
        background = fig.canvas.copy_from_bbox(ax.bbox)
    
        while 1:
            time.sleep(0.1)
            # restore the clean slate background
            fig.canvas.restore_region(background)
            # update the data
            ydata = data_gen()
            xdata=range(len(ydata))
    
            line.set_data(xdata, ydata)
    
            # just draw the animated artist
            ax.draw_artist(line)
            # just redraw the axes rectangle
            fig.canvas.blit(ax.bbox)
    
    data_gen.a=1
    fig = plt.figure()
    ax = fig.add_subplot(111)
    line, = ax.plot([], [], animated=True)
    ax.set_ylim(0, 20)
    ax.set_xlim(0, 10)
    ax.grid()
    
    manager = plt.get_current_fig_manager()
    manager.window.after(100, run)
    
    plt.show()
    

This implementation have problems, like script stops if you trying to move the
window. But basically it can be used.


Answer: As an alternative to matplotlib, the Chaco library provides nice graphing
capabilities and is in some ways better-suited for live plotting.

See some screenshot examples here with linked code:

<http://code.enthought.com/projects/chaco/gallery.php>

And in particular, see these examples:

<https://github.com/enthought/chaco/blob/2fc52518278c52e81a7e07589bb6aeaaca361770/examples/demo/advanced/data_stream.py>

<https://github.com/enthought/chaco/blob/2fc52518278c52e81a7e07589bb6aeaaca361770/examples/demo/advanced/spectrum.py>

Chaco has backends for qt and wx, so it handles the underlying details for you
rather nicely most of the time.

