次のようなファイルがあると仮定します。
"p = 0.1"
1 1
3 3
4 1
"p = 0.2"
1 3
2 2
5 2
Gnuplotでこれらの2つのデータセットを1つのプロットにプロットし、各データセットの最初の行にタイトルを付けることは可能ですか?
それは間違いなく可能であり、データファイルはすでに正しい形式です。探している機能はcolumnheader(N)
に組み込まれており、N番目の列の上部にあるデータを読み取り、それをプロットタイトルとして使用します。
plot 'test.dat' i 0 u 1:2 w lines title columnheader(1),\
'test.dat' i 1 u 1:2 w lines title columnheader(1)
反復を使用して凝縮できます:
plot for [IDX=0:1] 'test.dat' i IDX u 1:2 w lines title columnheader(1)
これは Bruce_Warrior's および Ciro Santilli's の答えですが、中間のstats
なし:
# plot.gpi
datafile = ARG1
plot for [i=0:*] datafile index i using 1:2\
with lines title columnheader(1)
for
ループは、ファイル内のすべてのデータセットを直接反復処理できます。 gnuplot 5.0.5で動作しますが、いつfor
がこの機能を獲得したのかわかりません。 5.0マニュアル に文書化されていますが、 4.6マニュアル ではありません。
linecolor variable
(ブルースの答えによる)によって消費される3番目の入力列によって線の色を決定する必要がある場合を除き、gnuplotは異なる色と線のスタイルを自動的に割り当てます。この特定のケースでは、using 1:2
も省略できます。
$ gnuplot --version
gnuplot 5.0 patchlevel 5
$ gnuplot --persist -c plot.gpi test.dat
test.dat
は
"p = 0.1"
1 1
3 3
4 1
"p = 0.2"
1 3
2 2
5 2
gnuplot 5.1(2016/08/28)
これは https://stackoverflow.com/a/29495496/895245 に似ていますが、以降のバージョンにいくつかの修正が加えられています。
脚本:
datafile = 'test.dat'
stats datafile nooutput
plot for [IDX=0:STATS_blocks-1] \
datafile \
index IDX \
using 1:2 \
with lines \
title columnheader(1)
テストデータ:
a
1, 1
2, 2
3, 3
"b"
1, 1
2, 4
3, 9
"c, c"
1, 1
2, 8
3, 27
出力:
これは2016/08/28で機能し、後で5.1になりますが、5.0.3(Ubuntu 16.04)では機能しません。これは、5.0.3では、列ヘッダーが有効なデータではないためstats
コマンドがエラーを出すためです。そして2016/08/28にそれは単なる警告になりました。
警告を削除する方法を尋ねました: https://groups.google.com/forum/#!topic/comp.graphics.apps.gnuplot/Pi4aBE2PwZ8
次のようなコメントを使用します。
#a
1, 1
2, 2
3, 3
私がテストしたどちらのバージョンでも動作しませんでしたが、無視されます。
データセットをわずかに変更して(タイトルがコメントとして提供されるように):
#"p = 0.1"
1 1
3 3
4 1
#"p = 0.2"
1 3
2 2
5 2
次のように、これら2つのデータセットを別々の行としてプロットできます。
plot 'data.dat' i 0 t "p = 0.1", '' i 1 t "p = 0.2"
Plotコマンドのindex
(略してi
)オプションは、gnuplotにi
thデータセットをプロットするよう指示します。 gnuplotでヘッダーからタイトルを自動的に取得する方法が見つからないため、title
(略してt
)オプションを使用して手動でタイトルを指定しました。