Matplotlib:在同一图形中绘制多个不重叠的图表
我有一个类,用来绘制图形,然后把它们保存到文件里。下面是这个类的简化版本:
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
class Test():
def __init__(self, x, y, filename):
fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.plot(x, y, 'D', color='red')
ax.set_xbound(-5,5)
ax.set_ybound(-5,5)
plt.savefig('%s.png' % filename)
test1 = Test(1,2, 'test1')
test2 = Test(2,4, 'test2')
这是生成的结果:
测试1
测试2
问题是,测试2的图像里也包含了测试1的点。因为这些图是动态生成的,都是在一个循环里,所以我不能直接写死图的编号。
我可以设置一个计数器,然后把它传给类的构造函数,但我在想有没有更优雅的解决办法。我试过删除测试1的对象,但这样并没有什么效果。
1 个回答
10
你可以使用图形的 clf 方法来清空图形,这样在你完成一个图形后就可以把它清理掉。另外,pyplot.clf 也可以用来清空当前的图形。
另外,如果你只是想要一个新的图形,可以直接调用 pyplot.figure,不需要特别指定 num
参数——它会自动增加编号,所以你不需要自己去计数。