csv ファイルの列数を返す gnuplot の関数はありますか? ドキュメントには何も見つかりません。誰かがカスタムメイドの関数を提案できますか?
質問する
3562 次
2 に答える
5
gnuplot4.6 では、これを行うための小さなハック スクリプトを作成できます。これは確かに最も効率的ではありませんが、純粋な gnuplot です:
#script col_counter.gp
col_count=1
good_data=1
while (good_data){
stats "$0" u (valid(col_count))
if ( STATS_max ){
col_count = col_count+1
} else {
col_count = col_count-1
good_data = 0
}
}
メインスクリプトで、
call "col_counter.gp" "my_datafile_name"
print col_count #number of columns is stored in col_count.
これにはいくつかの制限があります。たとえば、データファイルに完全に数値以外の列があり、その後にさらに有効な列が続く場合はチョークしますが、多くの典型的なユースケースで機能するはずです。
print col_count
最後の注意として、環境変数を使用することができ、現在のディレクトリにあるGNUPLOT_LIB
必要さえありません。col_counter.gp
于 2012-11-14T15:00:40.240 に答える
4
これがこの質問に関連していると仮定し、 infile.csvの内容は次のとおりです。
n,John Smith stats,Sam Williams stats,Joe Jackson stats
1,23.4,44.1,35.1
2,32.1,33.5,38.5
3,42.0,42.1,42.1
次のようにできます。
プロット.gp
nc = "`awk -F, 'NR == 1 { print NF; exit }' infile.csv`"
set key autotitle columnhead
set datafile separator ','
plot for [i=2:nc] "< sed -r '1 s/,([^ ]+)[^,]+/,\\1/g' infile.csv" using 1:i with lines
Gnuplot\1
内で使用する場合はエスケープする必要があることに注意してください。"
出力:
于 2012-11-14T08:27:05.427 に答える