如何清除matplotlib中的当前图形



下面给出了代码片段。我想在循环的每次迭代中保存一个新图形。但是,原来的数字被覆盖,而不是创建一个新的数字。我用过plt.cla()plt.clf()。但是不能得到期望的结果。

for i in range(17)
ax.scatter(x_coord, y_coord, color = 'red')
ax.text(x_coord[i], y_coord[i], str(i))

plt.savefig(f"{output_dir}/{counter}.png")
counter += 1
plt.clf()

所以看起来发生的事情是,每次你绘图时,你都在同一个"画布";。要为for循环的每次迭代创建一个新的画布,可以使用plt.figure(i(参数,该参数创建一个具有唯一ID变量"的新cavanas;i";。

现在,plt.savefig将保存由最近的plt.fig(i(参数创建的画布。因此,基本上,您想要做的是将绘图代码与plt.fig(i(和plt.savefig("name.png"(夹在一起,但分配一个新的";i〃;值。

for i in range(17):
plt.figure(i)
...insert plotting code e.g. plt.scatter(x_coord, y_coord, color = 'red')...
plt.savefig("name of ith figure.png")

它只做了一些小改动就对我有效。您似乎只需要在循环中移动一些语句。我运行你的代码时做了一些小改动:

  1. 创建了简单系列
  2. 初始化";计数器">
  3. 我只是使用了当前目录(没有路径(

这是代码:

import matplotlib
import matplotlib.pyplot as plt
x_coord = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
y_coord = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18]
counter = 1
for i in range(17):
fig, ax = plt.subplots()
ax.scatter(x_coord, y_coord, color = 'red')
ax.text(x_coord[i], y_coord[i], str(i))
plt.savefig(f"{counter}.png")
counter += 1
plt.clf()
#end

最新更新