Matplotlib:使用相同的图形绘制多个图形,没有它们重叠

时间:2010-07-11 23:59:14

标签: python 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')

结果如下:

TEST1

TEST2

问题是test2图像也有来自test1的点。图表是在循环中动态生成的,因此我无法对图号进行硬编码。

我可以创建一个计数器并将其传递给类构造函数,但我想知道是否有更优雅的方法来执行此操作。我尝试删除test1对象,但没有做任何事情。

1 个答案:

答案 0 :(得分:10)

完成后,您可以使用图形的clf方法清除图形。此外,pyplot.clf将清除当前的数字。

或者,如果你只是想要一个新的数字然后在没有明确的num参数的情况下调用pyplot.figure - 它会自动增加,所以你不需要保留一个计数器。