我在使用matplotlib的funcanimation类时,为了画等高线图随时间变化用了colorbar,虽然图是第二幅覆盖第一副的,满足要求,但是colorbar确并没有被覆盖,而是生成并堆起来了。我想请问一下matplotlib的画图机制是默认覆盖还是在原图上加,如果要修改这种状态该怎么办。还有就是这种堆叠起来的colorbar应该怎么写才能正常?谢谢各位>o<
Matplotlib 有类似于 Matlab 的 hold on/off 功能,可以在当前图上绘制多个图像,而不是重新绘制整个图。你可以通过调用pyplot模块中的hold()函数来实现这一功能。
import matplotlib.pyplot as plt
plt.hold(True)
plt.plot(x, y1, 'r')
plt.plot(x, y2, 'b')
plt.hold(False)
plt.show()
默认情况下,Matplotlib 每次绘制图形都将重新绘制图形,以便每次绘制的图形都是最新的。如果你想在原图上加图,就需要调用hold()函数,使其处于“hold on”状态。
对于图上生成的colorbar,如果每次都生成一个新的colorbar,那么就会有多个colorbar叠在一起。为于解决这个问题,你可以在生成colorbar前先判断是否存在colorbar,如果存在,就不再生成新的colorbar,而是使用原来的colorbar。你可以使用pyplot模块中的clf()函数(clear figure)来清空图形,以便重新绘制新的图形,或者在生成新的图形前调用hold()函数,以便在原图上绘制新的图形。
抱歉,matplotlib没有类似于matlab的hold on,hold off功能。matplotlib的画图机制是默认覆盖的,也就是说在每次画图时,之前的图都会被覆盖掉。
要解决colorbar堆叠起来的问题,可以使用matplotlib的clf()函数来清除当前的figure,然后在每次画图时就不会发生堆叠问题了。
以上回答来自ChatGPT