サーチ…


前書き

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"

gnuplotoutput先にグラフを生成します。デフォルト設定では、データファイルの最初の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.datfile_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)


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow