如何一次生成多个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])
这个脚本生成了两个 PNG 文件。tarte.png
是正确的,但 gateau.png
却显示了一些关于 tarte.png
的信息,比如 10
、20
和 30
,这些本来不应该显示。
那么,怎么才能从头开始绘制一个新的图表呢?
2 个回答
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)
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()