【问题标题】:Duplicated colorbars when creating an animation创建动画时重复的颜色条
【发布时间】:2011-03-03 12:09:10
【问题描述】:

我是 matplotlib 的新手。当我使用循环生成一系列轮廓图时,matplotlib 会创建 n 个重复的颜色条(颜色条具有固定范围)

我必须销毁每个循环的旧颜色条吗?如果是,我该怎么做?

更新:

好的,但是如果我为轮廓图生成颜色条。如何确保包含比例尺的整个范围。我试过使用“clip=False”&extend='both'

c_scale = matplotlib.colors.Normalize(vmin=0, vmax=1,clip=False)
cbar = plt.colorbar(cmap=plt.cm.jet,norm=c_scale,shrink=0.5,extend='both')

【问题讨论】:

    标签: python matplotlib


    【解决方案1】:

    contourf 不生成颜色条,颜色条会。

    如果颜色条有固定范围,您可以在开始时调用 colorbar() 一次,然后只绘制新的轮廓而不调用 colorbar()

    一个例子:

    #In which we make contourplots with just one colorbar
    
    import matplotlib.pyplot as plt
    import numpy as np
    
    plt.figure(1)
    plt.clf()
    plt.contourf(np.random.random((10,10)))
    plt.colorbar()
    for k in xrange(10):
        plt.contourf(np.random.random((10,10)))
    plt.show()
    

    【讨论】:

      【解决方案2】:

      如果您想不断更新颜色条和图中的其他所有内容,请在一开始使用 plt.ion() 以启用交互式绘图,并使用 plt.draw() 和 plt.clf() 的组合来连续更新剧情

      import matplotlib.pyplot as plt
      import numpy as np
      
      plt.ion(); plt.figure(1);
      for k in range(10):
          plt.clf(); plt.subplot(121);
          plt.contourf(np.random.randn(10,10)); plt.colorbar();
          plt.subplot(122,polar=True)
          plt.contourf(np.random.randn(10,10)); plt.colorbar();
          plt.draw();
      

      请注意,这适用于包含不同子图和各种类型图(即极坐标或笛卡尔坐标)的图形

      【讨论】:

        猜你喜欢
        • 2011-08-20
        • 2015-11-14
        • 2021-07-19
        • 1970-01-01
        • 1970-01-01
        • 2018-09-14
        • 2018-09-09
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多