2016-07-01 19 views
1

xmgraceを使用すると、複数の列ファイルがある場合、特定の列を別の列(たとえば3対1)の関数としてプロットすることができます。私は2vs1と同じウィンドウで3vs1をプロットしたい場合は、コマンドXmgrace:複数の列ファイルのすべての列を最初の関数としてプロットする

xmgrace -block file.dat -bxy 1:3 

、私は単に

xmgrace -block file.dat -bxy 1:2 -block file.dat -bxy 1:3 

コマンドを使用しますが、ファイル場合は、列の数が多いが含まれており、私はすべてプロットしたいと思うでしょうそれらのうちの1つ(2vs1,3vs1,4vs1など)の機能として、同じウィンドウ内では、これを使用することは実際的でなくなりますmmand。

ファイルのすべての列を最初の関数(2vs1,3vs1など)の関数としてプロットする簡単なコマンドがありますか?

私は...

答えて

2

nxyオプションはこれを行うために設計されています。このオプションを

xmgrace -nxy file.dat 

、xmgraceは使用(同じグラフ上のx対X-データとyと他のすべての列としてFILE.DATの最初の列(I)-data、プロットのy(i)を読み出しますデフォルトでは異なる色)。

+0

はい、これは正しい解決策は、同じ軸上のすべてのデータシリーズが必要な場合。 – feedMe

1

短い答え

for i in {2..n}; do xmgrace -block file.dat -bxy 1:$i; done 

しかし、プロットは、別のウィンドウに表示されます。この方法を試してみました:これは、データ系列ごとに個別のプロットファイルを作成します

を対第1列:

for i in {2..7}; do `gracebat -nosafe -hdevice PNG -printfile $i.png -block a.txt -bxy 1:$1`; done 

長い回答:

すべての列をプロットする場合は(2から番号を含むまで)。

for i in {2..7}; do echo -n " -block file.dat -bxy 1:$i"; done | xargs xmgrace 

をしかし、あなたの質問が個々のプロットを求めているので、我々はこれを行うことができます:同じ軸上のカラム1 対列7)は、あなたが行うことができ

for i in {2..7}; do echo -n " -block file.dat -bxy 1:$i" | xargs xmgrace; done 

またはこれを、どの同じ結果を与えるが簡単です:

for i in {2..7}; do echo -n `xmgrace -block file.dat -bxy 1:$i`; done 

しかし、これはINDIVIので、非常に実用的ではありませんデュアルプロットは1つずつ表示され、次の表示にはそれぞれ閉じなければなりません。

xmgraceをバッチモードで実行し、各プロットの画像を保存する方が良いでしょう。これは、xmgraceバッチファイルとgracebat実行ファイルを使用して実行できます。

for i in {2..7}; do `gracebat -nosafe -batch save.bfile -block a.txt -bxy 1:$1`; done 

これは、前と同じデータを持つバッチモードで恵みを呼び出しますが、save.bfileに保存されたバッチコマンドを実行し、含まれている:

PRINT TO "out.ps" 
PRINT 

これで明白な問題は、それぞれの新しい反復が上書きされるということですout.ps出力ファイルの名前がバッチファイルにハードコードされているため、追記ファイルです。だから、あなたはファイル内の最後のものしか見ることができません。幸いにもgracebatを呼び出す前にsedを使ってバッチファイルを変更することができます!save.bfileは今

PRINT TO "outName.ps" 
PRINT 

と文字列outNameが含まれてい

for i in {2..7}; do `sed -e "s/outName/${i}/g" save.bfile > new.bfile`; `gracebat -nosafe -batch new.bfile -block a.txt -bxy 1:$1`; done 

は$ iで置き換えられます。

プロットを内側にして.psファイルが読み込まれるはずです。より多くのことをするためにバッチファイルで遊んでください。出力ファイル形式を変更する方法など、追加可能なコマンドについては、this pageを参照してください。

別の方法としては、完全にバッチファイルを使用してスキップすることができます。

for i in {2..7}; do `gracebat -nosafe -hdevice PNG -printfile $i.png -block a.txt -bxy 1:$1`; done 

あなたは、パラメータ・ファイルを使用している場合は、あなたがあまりにもスタイルを設定する-paramのコマンドを追加することができます。

+0

私はすべて同じ軸で必要でした。私は十分にはっきりしていなかった。ありがとう、私は多くの答えの残りの部分から多くを学ぶことができます:) – valerio

関連する問題