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

Vir*_*liu 3 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')
Run Code Online (Sandbox Code Playgroud)

结果如下:

TEST1

TEST2

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

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

ars*_*ars 10

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

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