如何一次生成几个matplotlib图表?

时间:2010-11-17 15:46:46

标签: python matplotlib

我想生成几个图表并将其保存为.png个文件。 但似乎matplotlib与前一个图表重叠:

def do_pie(fic,data):
    import pylab    

    # make a square figure and axes
    pylab.figure(1, figsize=(6,6))
    ax = pylab.axes([0.1, 0.1, 0.8, 0.8])

    pylab.pie(data,labels=data)
    pylab.title(fic, bbox={'facecolor':'0.8', 'pad':5})
    pylab.savefig('%s.png' % fic,dpi=100)

do_pie('tarte',[10,20,30])
do_pie('gateau',[33,44])

此脚本生成2个PNG文件。 tarte.png是正确的,但gateau.png正在获取有关tarte.png的一些信息,例如102030,不应显示。

那么如何从头开始新图表?

2 个答案:

答案 0 :(得分:3)

保存后关闭图形对象。

def do_pie(fic,data):
    import pylab    
    # make a square figure and axes
    pylab.figure(1, figsize=(6,6))
    ax = pylab.axes([0.1, 0.1, 0.8, 0.8])
    pylab.pie(data,labels=data)
    pylab.title(fic, bbox={'facecolor':'0.8', 'pad':5})
    pylab.savefig('%s.png' % fic,dpi=100)
    pylab.close()

答案 1 :(得分:0)

例如,您可以将图形实例存储在dict中,并在程序的末尾输出所有数字:

figures = dict()

def do_pie(fic,data):
    import pylab    

    # make a square figure and axes
    figures[fic] = pylab.figure(figsize=(6,6))
    ax = pylab.axes([0.1, 0.1, 0.8, 0.8])

    pylab.pie(data,labels=data)
    pylab.title(fic, bbox={'facecolor':'0.8', 'pad':5})

do_pie('tarte',[10,20,30])
do_pie('gateau',[33,44])

for fig in figures:
    figures[fig].savefig('%s.png' % fic, dpi=100)