在def循环中唯一命名png文件

时间:2013-10-15 00:00:12

标签: python image matplotlib png function

所以现在我可以获得独特的文件,欢呼!但似乎第二个文件正在绘制第一个和第二个图,第三个是绘制所有三个,第四个是绘制所有四个,等等。这里是新代码:

for j in range(2):

    dhulist=pyfits.open('test.fits')
    row=5
    colum=j

    ax=[]
    val=[]
    for i in range(1600,3040):
        val.append((dhulist[0].data[i,row,colum]))
        ax.append(((((dhulist[0].header['CRPIX3'] -i)*(dhulist[0].header['CDELT3']))+5000)/1000))

    plt.plot(ax,val)
    #plt.show()
    plt.savefig("5_{0}.png".format(j))

1 个答案:

答案 0 :(得分:0)

plot matplotlib函数更新当前数字,或者如果没有当前数字则创建新数字。这是一个很好地显示跟踪从创建到结束的图形对象的示例。

import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(0, 10)

for j in range(3):
    y = x ** j
    f = plt.figure()
    plt.plot(x, y, figure=f)
    f.savefig("test_{}.png".format(j))
    plt.close(f)

请注意,涉及图形,打开,绘图,保存和关闭的每个操作都显式引用了图形对象。恕我直言,这是一个非常好的编码风格,如果您需要同时处理多个数字,这将非常有用。 Matplotlib还允许您隐式使用“当前数字”,如果您正在做一些简单的事情,这很好。这看起来更像是这样:

import numpy as np
from matplotlib import pyplot as plt

x = np.linspace(0, 10)
for j in range(3):
    y = x ** j
    plt.figure()
    plt.plot(x, y)
    plt.savefig("test2_{}.png".format(j))
    plt.close()