创建动画时重复的颜色栏

时间:2011-03-03 12:09:11

标签: python matplotlib

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

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

更新

好的,但如果我为contourf图生成一个颜色条。如何确保包含整个范围的比例。我尝试过使用“clip = False”&延伸= '两者'

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')

2 个答案:

答案 0 :(得分:1)

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

如果颜色条具有固定范围,您可以在开头调用colorbar()一次,然后仅绘制新的contourf而不调用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()

答案 1 :(得分:0)

如果要连续更新颜色栏和图中的其他所有内容,请在开头使用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();

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