I'd like to plot a 3D surface and its contours as the surface evolves. 
When I do it by simply calling plot_surface and/or contour3D multiple 
times, the plot doesn't clear the old surface before plotting the new 
one, so I get a whole bunch of surfaces accumulating in the same plot:

<snip>
import pylab as P
import matplotlib.axes3d as P3

    # bad: plots multiple surfaces on top of each other
    def animatePlot():

        P.ion()      
        fig = P.gcf()
        ax3d = P3.Axes3D(self.fig)
       
        for i in xrange(100):
            x, y, z = getLatestData(i)
            ax3d.plot_surface( x, y, z )
            ax3d.contour3D( x, y, z )
            P.draw()
</snip>

The one workaround I've found so far is to recreate the entire Axes3D 
object at each iteration:

<snip>
import pylab as P
import matplotlib.axes3d as P3

    # Better: clears previous surface & contours before re-plotting
    # Slower.
    def animatePlot():

        P.ion()      
        fig = P.gcf()
        ax3d = P3.Axes3D(self.fig)
       
        for i in xrange(100):

            # P.clf()  # uncomment to speed up, introduces flicker
            self.fig = P.gcf()
            self.ax3d = P3.Axes3D(self.fig)

            x, y, z = getLatestData(i)
            ax3d.plot_surface( x, y, z )
            ax3d.contour3D( x, y, z )
            P.draw()
</snip>

... but this is significantly slower than the first method. If I 
uncomment the P.clf() call above, it actually gets faster (??), but 
there's some unpleasant screen flicker. What's the Right Way to replot a 
changing surface+contour plot?

Thanks,
-- Matt

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Matplotlib-users mailing list
Matplotlib-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matplotlib-users

Reply via email to