2010-11-17 5 views
2

Я бы хотел (а) создать несколько диаграмм и сохранить их как .png. Но, похоже, matplotlib перекрывает следующий график на предыдущем:Как создать несколько графиков 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 как 10, 20 и 30, которые не должны отображаться.

Итак, как начать новую диаграмму с нуля?

ответ

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() 
0

Например, вы можете хранить экземпляр фигуры в Словаре и в конце вашей программы, вывод всех цифр:

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) 
Смежные вопросы