0

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

1 に答える 1

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

マスク配列を使用することもできます。ただし、それらの唯一の利点は、新しいメモリの割り当てを回避できることです。プロットが十分に小さい場合は、必要ありません。

ちなみに「ベストアンサー」はありません。

于 2013-02-05T15:19:25.790 に答える