Gnuplot
データファイルの基本的なプロット
サーチ…
前書き
gnuplotの主な有用な機能の1つは、 データファイルをプロットすることです 。 gnuplotではデータファイルをプロットするのは本当に簡単ですが、実際に端末からソフトウェアを開いたら、コマンドplot 'file'
を数字だけで自動プロットする必要があります。
まず、プロットする前に、データファイルと同じディレクトリにいることを確認する必要があります。そうしないと、最終的にwarning
ます。
構文
- スタイルで column_expressionを使用してデータファイルをプロットする
単一のデータファイルをプロットする
デフォルトのgnuplotコマンドplot
(またp
のみ)は、以下のdata_set.dat
ファイルの形式の列を含むデータセットをプロットします。
# Prototype of a gnuplot data set
# data_set.dat
# X - X^2 - 2*X - Random
0 0 0 5
1 1 2 15
1.4142 2 2.8284 1
2 4 4 30
3 9 6 26.46
3.1415 9.8696 6.2832 39.11
4 16 8 20
4.5627 20.8182 9.1254 17
5.0 25.0 10.0 25.50
6 36 12 0.908
ご覧のとおり、浮動小数点表記法でデータセットに書き込むことができます。データプロットを作成する準備が整いました。入力だけで
plot "data_set.dat"
gnuplotはoutput
先にグラフを生成します。デフォルト設定では、データファイルの最初の2つの列、xとyがそれぞれ使用されます。プロットする列を指定するには、 using
指定子
plot "data_set.dat" using 2:4
これは、「列2をX、列4をYとしてファイルをプロットする」という意味です。データセットが3次元ファイルの場合は、 splot
adを使うだけでz-column
splot "data_set.dat" using 1:2:3
また、点をプロットするためのスタイルも異なります(gnuplotのマニュアルを参照するか、さらに詳しい情報のためにプロットスタイルを選択する )。前述のように、デフォルトのスタイルはpoint
plot "data_set.dat" using 1:4 with point
with point
入力with point
ない場合と同じようにプロットされます。データ描画のための便利なスタイルですlinespoint
明らかに、「行+ポイント」、です。 例えば:
plot "data_set.dat" using 1:4 with linespoint
# the abbreviated form is completely equivalent:
# p "data_set.dat" u 1:4 w lp
反復をプロットする形式
あなたがより多くの列を持っていて、同じグラフ内にそれらをすべてプロットしたい場合、好きな引数をplot
関数に渡すだけで、それらをa ,
区切ります:
p "data_set.dat" u 1:2 w lp,\
"data_set.dat" u 1:3 w lp,\
"data_set.dat" u 1:4 w lp
とにかく、時には、あまりにも多くの列が1つずつ書き込むことがあります。これらの場合for
反復ループの結果に非常に便利。
p for [col = 2:4] "data_set.dat" using 1:col w lp
それは出力を与える
簡単に述べると、 for
iterationは、ループ内の変数(この場合はcol
)を決定されたステップ(指定されていない場合は1)でインクリメントします。たとえばfor [i = 0:6:2]
場合、 i
を0から6まで2段階で増やしますi = 0, 2, 4, 6
。すべての値(開始、停止、増分)は整数値にキャストされます。
* グリッド
グリッドは、データセットをプロットするときに便利です。グリッドタイプを追加するには
set grid
複数のデータファイルをプロットする
最初のメソッド - 文字列の連結
複数のデータファイルをプロットする最も簡単な方法は、 for
ループをgnuplotのplot
コマンドの中に挿入することfor
。あなたが持っていると仮定すると、 N
すなわち 、順々という名前のファイルを
file_1.dat
file_2.dat
file_3.dat
...
file_N.dat
コマンドの実行
plot for[i = 1:N] "file_".i.".dat"
file_1.dat
とfile_N.dat
間のすべてのファイルを同じグラフにプロットします。
3つのデータファイルを持つ例
データセットのテーブル
X軸 | Y-Axe file_1.dat | Y軸ファイル_2.dat | Y軸ファイル_3.dat |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 2 | 4 | 2 |
3 | 3 | 9 | 6 |
4 | 4 | 16 | 24 |
5 | 5 | 25 | 120 |
コマンド
set terminal postscript color noenhanced ##setting the term
set output "multiple_files.ps"
set key center ##legend placement
plot [1:5][1:120] \
for [i = 1:3] "file_".i.".dat" \
pointsize 1.3 linecolor i+4 \
title "file\_".i.".dat" \
with linespoint
ループはfor [i = 1:3] "file_".i.".dat"
で始まり、 i = 3
に達するまでplot
コマンドを実行しplot
。 .i.
連結された番号です。
title "file\_".i.".dat"
はファイル名の_
記号を下付き文字ではなくアンダースコアとして表示するために\
で書かれており、この結果を得るためにはnoenhanced
された指定子は基本的ではありnoenhanced
。
最終結果は以下の通りです
第2の方法 - sprintf
関数の使用
続く別の可能な方法は、C言語のsprintf
と基本的に同じ働きをするsprintf
関数を使うことです。 gnuplot 5.1ドキュメントの正しい構文は、次のとおりです。
sprintf("format", x, y, ...)
簡単な例ですべての疑念を明確にします。
file_name(n) = sprintf("file_%d.dat", n)
plot for[i = 1:N] file_name(i) title file_name(i)