多个数据文件的循环图 - Python

时间:2013-02-05 14:16:28

标签: python matplotlib

我想编写一个程序,从100个文本文件的区域创建100个蒙版图。即for fnum in range(1,100,1):

文本文件编号为xydata1.txt,xydata2.txt ...直到xydata100.txt。

如何在Python中做得最好?

下面是我的绘图程序,其中(文件编号fnum)= 1,2,3 ... 100。

    fn = 'xydata'+fnum+'.txt'
    y = loadtxt(fn,unpack=True,usecols=[0])
    x = loadtxt(fn,unpack=True,usecols=[1])

    n = ma.masked_where(gradient(y) < 0, y)
    p = ma.masked_where(gradient(y) > 0, y)

    pylab.plot(x,n,'r',x,p,'g')

    pylab.savefig('data'+fnum+'.png')
    pylab.show()

1 个答案:

答案 0 :(得分:1)

假设Python 2.7

from glob import glob
from pylab import *


for fname in glob("xydata*.txt"):
    x, y = loadtxt(fname, unpack=True, usecols=[1, 0])
    mask_inf = gradient(y) < 0
    mask_sup = gradient(y) >= 0

    plot(x[mask_inf], y[mask_inf], 'r')
    plot(x[mask_sup], y[mask_sup], 'g')

    legend(("grad(y) < 0", "grad(y) >= 0"))
    title(fname)

    savefig(fname.replace("xydata", "data").replace(".txt", ".svg"))
    clf()

您也可以使用蒙面数组。但它们的唯一优点是避免分配新的内存。如果您的情节足够小,则不需要它们。

顺便说一下,没有“最佳答案”。