在pylab中重新初始化图形

2 投票
2 回答
10254 浏览
提问于 2025-04-17 15:52

我刚开始使用PyLab,想要画一些点。但是我不想让之前的点显示出来,也就是说每当有新点出现时,之前画的点就消失,只显示新点。我搜索了很多资料,但找不到怎么在中间重新初始化图表的方法。我遇到的问题是,我可以通过使用plt.figure(f1.number)来设置当前的图形,但在那个图形上画点后,它就会永久改变。

2 个回答

1

使用pylab的时候,pylab.clf()可以清空当前的图形,这样你就可以重新绘制图表了。

另外,你也可以通过set_xdataset_ydata来更新你的数据,这两个方法是在你创建新图表时返回的坐标轴对象上使用的(无论是用pylab.plot还是pylab.subplot)。

后者可能更受欢迎,但需要多花一点功夫。我能快速找到的一个例子是另一个SO问题

6

在你开始绘图之前,使用 plt.hold(False) 就能达到你想要的效果。

hold 这个功能决定了当你绘制新的图形时,旧的图形是否会被保留。默认情况下,hold 是开启的。

举个例子

# two lines 
plt.figure()
plt.hold(True)
plt.plot(range(5))
plt.plot(range(5)[::-1])

#one line
plt.figure()
plt.hold(False)
plt.plot(range(5))
plt.plot(range(5)[::-1])

通过 plt.hold 来改变这个设置,会影响到所有新的坐标轴。如果你想单独改变某个 axes 的保留状态,可以这样做:

ax = gca()
ax.hold(True)

撰写回答