【问题标题】:update a figure made with imshow(), contour() and quiver()更新使用 imshow()、contour() 和 quiver() 制作的图形
【发布时间】:2012-08-18 02:45:22
【问题描述】:

我想知道是否可以更新用contour() 完成的轮廓、用quiver() 完成的矢量场和用imshow() 完成的图像,而实际上不必再次调用这些函数或创建一个新的图形、轴等。换句话说,是否有可能(并且通常人们会这样做)更新图形的这些元素而无需重新调用例程。

我已经尝试了基于set_array()pyplot.draw() 的解决方案,但我无法使其适用于矢量场和等高线图。

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    好吧,您可以通过在图像上调用.set_data(),然后在图上调用fig.canvas.draw() 来为imshow 执行此操作。与仅调用 draw() 相比,我没有看到任何真正的性能优势 - 在下面的基准测试中(使用 WXAgg 作为后端),两者都给了我大约 25FPS。

    import numpy as np
    import matplotlib.pyplot as pp
    import time
    
    def animate_data(data):
    
        fig,ax = pp.subplots(1,1)
    
        # I'm not convinced that animated=True does anything either...
        image = ax.imshow(data[0,:,:],animated=True)
    
        # pp.draw()
        fig.canvas.draw()
    
        start = time.time()
        tic = start
        for ii in xrange(1,data.shape[0]):
            if not(ii % 10):
                toc = time.time()
                print "FPS =\t%.6G" %(10./(toc-tic))
                tic = time.time()
            image.set_data(data[ii,:,:])
    
            # pp.draw()
            fig.canvas.draw()
    
        print "Average FPS =\t%.6G" %(data.shape[0]/(time.time()-start))
    
    fakedata = np.random.randn(200,512,512)
    animate_data(fakedata)
    

    quiver的情况下,可以使用.set_UVC()更新剧情:

    fig,ax = subplots(1,1)
    
    u1 = np.random.rand(10,10)
    v1 = np.random.rand(10,10)
    c1 = np.random.rand(10,10)
    
    q = ax.quiver(u1,v1,c1)
    fig.canvas.draw()
    
    u2 = np.random.rand(10,10)
    v2 = np.random.rand(10,10)
    c2 = np.random.rand(10,10)
    
    q.set_UVC(u2,v2,c2)
    fig.canvas.draw()
    

    据我所知,您无法以相同的方式更新 contour 绘图。我不确定无论如何都会有那么多收获,因为任何解决方案仍然需要重新计算给定数组输入的轮廓线应该去哪里。如果我是你,我会打电话给ax.contour()fig.canvas.draw()

    【讨论】:

      猜你喜欢
      • 2019-04-02
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 1970-01-01
      • 2018-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多