2017-03-22 7 views
0

これは、1つのディレクトリからファイルを呼び出すことができるスクリプトです。私は '-o'を使ってコマンドラインからファイルを選択できます。異なるディレクトリから複数のファイルを1つの図にプロットする

いくつかのディレクトリからいくつかのファイルを呼び出して、同じ図を描くことはできますか。

python myscript.py -o file1,file2,file3 

をしてからスクリプトに追加:

inputs = (args.input).split(',') 

をカンマでスクリプトを呼び出すときは、単に(そこにスペースを)ファイルのリストを指定することができなかった

import numpy as np 
import matplotlib.pyplot as plt 
import csv 
import argparse 

parser = argparse.ArgumentParser() 
parser = argparse.ArgumentParser(description='This script only works for gromacs rms files and filename should be in 1.xvg, 2.xvg format') 

parser.add_argument("-o","--input", help="output as PDF.") 


args = parser.parse_args() 
input = (args.input) 
x, y = [],[] 
title = "RMSD" 
xlabel = "Time (ns)" 
ylabel = "RMSD (nm)" 

with open(input) as f: 
     for line in f: 
      cols = line.split() 
      if cols[0][0] == "#": 
       pass 
      elif cols[0][0] == "@": 
       pass 
      else: 
        try: 
         if len(cols) == 2: 
           x.append(float(cols[0])) 
           y.append(float(cols[1])) 
        except ValueError: 
         pass   

fig = plt.figure() 
ax1 = fig.add_subplot(111) 
ax1.plot(x,y) 
ax1.set_title(title) 
ax1.set_xlabel(xlabel) 
ax1.set_ylabel(ylabel) 
plt.savefig('data.png', dpi=500) 

答えて

0

すべての入力ファイルをループするだけです。

for input in inputs: 
    #Your code here 

各繰り返しで新しい軸を作成しないように、ループの前に軸を作成する必要があります。

関連する問題