gnuplot 中是否有一个函数可以返回 csv 文件中的列数?我在文档中找不到任何内容,也许有人可以为此提出定制功能?
问问题
3562 次
2 回答
5
从 gnuplot4.6 开始,您可以编写一个小 hack 脚本来执行此操作。它当然不是最有效的,但它是纯粹的 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 回答