我刚刚开始使用'matplotlib',我遇到了两个主要障碍,我似乎无法解决文档/示例等问题:这是Python源代码:
#!/usr/bin/python
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
for i in range(0,301):
print "Plotting",i
# Reading a single column data file
l=plt.plotfile("gen"+str(i))
plt.xlabel('Population')
plt.ylabel('Function Value')
plt.title('Generation'+str(i))
plt.axis([0,500,0,180])
plt.plot()
if len(str(i)) == 1:
plt.savefig("../images/plot00"+str(i)+".png")
if len(str(i)) == 2:
plt.savefig("../images/plot0"+str(i)+".png")
if len(str(i)) == 3:
plt.savefig("../images/plot"+str(i)+".png")
plt.clf()
答案 0 :(得分:2)
filename='plot%03d.png'%i
将%03d
替换为填充最多3个零的整数i
。
在Python2.6 +中,可以使用不那么漂亮但功能更强大的新字符串格式化语法来做同样的事情:
filename='plot{0:03d}.png'.format(i)
marker='*'
。
要摆脱连接线,请使用linestyle='none'
。
plt.plot()
的调用将第二个数字叠加在第一个数字的顶部。对plt.plot()的调用似乎修改了轴的尺寸,消除了plt.axis(...)
的效果。幸运的是,修复很简单:只需不要调用plt.plot()
。你不需要它。
#!/usr/bin/env python
import matplotlib
import matplotlib.pyplot as plt
matplotlib.use('Agg') # This can also be set in ~/.matplotlib/matplotlibrc
for i in range(0,3):
print 'Plotting',i
# Reading a single column data file
plt.plotfile('gen%s'%i,linestyle='none', marker='*')
plt.xlabel('Population')
plt.ylabel('Function Value')
plt.title('Generation%s'%i)
plt.axis([0,500,0,180])
# This (old-style string formatting) also works, especial for Python versions <2.6:
# filename='plot%03d.png'%i
filename='plot{0:03d}.png'.format(i)
print(filename)
plt.savefig(filename)
# plt.clf() # clear current figure