代码之家  ›  专栏  ›  技术社区  ›  Eric

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

  •  2
  • Eric  · 技术社区  · 14 年前

    我想生成几个图表并将它们保存为 .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 正在获取一些关于 格子.png 喜欢 10 , 20 30 不应该显示。

    那么如何从头开始一个新的图表呢?

    2 回复  |  直到 14 年前
        1
  •  3
  •   gerry    14 年前

    保存后只需关闭figure对象。

    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()
    
        2
  •  0
  •   user180100user180100    14 年前

    例如,可以将图形实例存储在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)