次のようなファイルがあると仮定します(二重改行に注意してください)。
"p = 0.1"
1 1
3 3
4 1
"p = 0.2"
1 3
2 2
5 2
Gnuplotにこれら2つのデータセットを1つのプロットにプロットさせ、各データセットの最初の行にタイトルを付けることは可能ですか?
次のようなファイルがあると仮定します(二重改行に注意してください)。
"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)
gnuplot 5.1 (2016/08/28)
これはhttps://stackoverflow.com/a/29495496/895245に似ていますが、それ以降のバージョンのいくつかの修正があります。
https://stackoverflow.com/a/43819870/895245for [i=0:*]
は、分配する構文を教えてくれたstats
ので、少し良くなりました。
脚本:
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
出力:
これは、後に gnuplot 5.1 になる gnuplot 2016/08/28 で機能しますが、gnuplot 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
私がテストしたどちらのバージョンでも機能しませんでした。単に無視されます。
すべてのプロセスを自動化するためのandyras からの回答 ( answer 1およびanswer 2 ) に基づく解決策は、次を使用することです。
datafile = 'test.dat'
stats datafile
plot for [IDX=1:STATS_blocks] datafile index (IDX-1) u 1:2 w lines t\
columnheader(1) lc variable
これにより、スクリプトはデータ ブロックの数を自動的に検出し、さまざまな色でプロットし、対応するタイトルを各データ ブロックの最初の行に定義します。
データセットを少し変更すると (タイトルがコメントとして表示されるようになります):
#"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
略して) オプションを使用して手動でタイトルを指定しました。