web-dev-qa-db-ja.com

gnuplot:y軸に4列のファイルをプロット

4つの数値(最小、最大、平均、標準導出)を含むファイルがあり、gnuplotでプロットしたいと思います。

サンプル:

24 31 29.0909 2.57451
12 31 27.2727 5.24129
14 31 26.1818 5.04197
22 31 27.7273 3.13603
22 31 28.1818 2.88627

1つの列を持つ4つのファイルがある場合、次のことができます。

gnuplot "file1.txt" with lines, "file2.txt" with lines, "file3.txt" with lines, "file4.txt" with lines

そして、4つの曲線をプロットします。私はx軸を気にしません、それはただ一定の増分であるべきです。

どうすればプロットできますか? x値が絶えず増分するだけで、4列の1ファイルで4つの曲線を作成する方法を見つけることができないようです。

ありがとうございました。

29
user1777907

次のように、同じファイルの異なる列をプロットできます。

plot 'file' using 0:1 with lines, '' using 0:2 with lines ...

...は継続を意味します)。この表記に関する注意事項:usingは、プロットする列を指定します。つまり、最初のusingステートメントの列0と1、0番目の列は、現在の行番号に変換される擬似列ですデータファイル。 usingで使用される引数が1つだけの場合(例:using n)それはusing 0:n(指摘してくれてありがとうmgilson)。

Gnuplotのバージョンが十分に新しい場合、forループを使用して4つの列すべてをプロットできます。

set key outside
plot for [col=1:4] 'file' using 0:col with lines

結果:

for-loop plot

Gnuplotは、データファイル内にある場合、タイトルに列見出しを使用できます。例:

min max mean std
24 31 29.0909 2.57451
12 31 27.2727 5.24129
14 31 26.1818 5.04197
22 31 27.7273 3.13603
22 31 28.1818 2.88627

そして

set key outside
plot for [col=1:4] 'file' using 0:col with lines title columnheader

結果:

for-loop plot with column headers

76
Thor

追加するだけで、forループの増分を3番目の引数として指定できます。 n番目の列ごとにプロットする場合に便利です。

plot for [col=START:END:INC] 'file' using col with lines

この場合、とにかく変更するだけです:

plot for [col=1:4:1] 'file' using col with lines
11
j_s