2016-11-07 2 views
1

を生成する私のデータファイルの例です。基本的に目的をソートするためのいくつかの余分な列を持つX、Y-データであるは統計-コマンドを使用して、ループからauxilaryデータファイルここで

Opt1 0 A -1.3 3.9 
Opt1 0 B -1.3 3.9 
Opt3 0 B -1.4 3.9 
Opt1 3 A -2.4 14.7 
Opt2 3 A -2.3 13.2 
Opt3 3 A -2.5 17.2 
Opt1 6 A -2.9 21 
Opt3 6 A -2.9 25 
Opt3 6 B -2.9 25.3 
Opt1 15 B -4.2 22.4 
Opt3 15 A -4.1 24.8 
Opt3 15 B -4.2 25.5 
Opt1 24 B -5.9 23.8 
Opt2 24 B -5.3 20.1 
Opt3 24 A -5.6 22.8 
Opt3 24 B -5.7 23.2 

。変数 "T" でグループ化された点の集合を生成

plot for [t in "0 3 6 15 24"] 'data.tsv' using 5:((stringcolumn(2) eq t) ? $4 : 1/0) w p

は、ここに私のplotコマンドです。また、各グループの重心を線で結びたいと思っています。このために私はstatsコマンド(xとyの平均値を得ることができる)を持つループを持っています:do for [t in "0 3 6 15 24"]{ stats 'data.tsv' using 5:((stringcolumn(2) eq t) ? $4 : 1/0) ...}

変数STATS_mean_xとSTATS_mean_yをキャプチャして各t値に追加する方法です$データブロックまたは後でプロットできる別のファイル。 (gnuplot 5.0 patchlevel 4)

申し訳ありません私は解決策を探していましたが、何か問題がないことが分かりました。

答えて

1

文字列でSTATS_mean値を収集し、一時ファイルに書き込むことができます。

t_string = "0 3 6 15 24" 

temp_data = "" 
do for [t in t_string]{ 
    stats 'data.tsv' using 5:((stringcolumn(2) eq t) ? $4 : NaN) 
    temp_data = temp_data.sprintf("%f %f\n", STATS_mean_x, STATS_mean_y) 
} 

set print "temp.dat" 
print temp_data 
unset print 

set terminal png 
set output "graph.png" 
plot for [t in t_string] 'data.tsv' using 5:((stringcolumn(2) eq t) ? $4 : NaN) title t w lp, \ 
    'temp.dat' title "average" w lp 
set output 

PS:その後、あなたはこの一時ファイルの内容をプロットすることができ、私はより良い起こっているのかを見ることができるように私はplot with lpしてplot w pを交換しました。

enter image description here

+0

うわー、完璧に動作します! :) どうもありがとうございました – rimas

関連する問題