计算gnuplot中csv中的列

sas*_*llo 2 gnuplot

gnuplot中是否有一个函数返回csv文件中的列数?我在文档中找不到任何内容,也许有人可以为此提出自定义功能?

mgi*_*son 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
   }
}
Run Code Online (Sandbox Code Playgroud)

现在在你的主脚本中,

call "col_counter.gp" "my_datafile_name"
print col_count   #number of columns is stored in col_count.
Run Code Online (Sandbox Code Playgroud)

这有一些限制 - 例如,如果数据文件中的列完全是非数字的,后跟更多有效的列,则会阻塞它,但我认为它应该适用于许多典型的用例.

print col_count
Run Code Online (Sandbox Code Playgroud)

最后,您可以使用环境变量GNUPLOT_LIB,然后甚至不需要col_counter.gp在当前目录中.