Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在gnuplot中计算csv中的列数_Gnuplot - Fatal编程技术网

在gnuplot中计算csv中的列数

在gnuplot中计算csv中的列数,gnuplot,Gnuplot,gnuplot中是否有函数返回csv文件中的列数? 我在文档中找不到任何内容,也许有人可以为此建议一个定制功能?假设这与相关,并且infle.csv的内容是: 你可以这样做: plot.gp nc=“`awk-F,'NR==1{print NF;exit}”infle.csv`” 设置键自动字幕栏头 设置数据文件分隔符“,” 使用1:i和线条为[i=2:nc]“

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

假设这与相关,并且infle.csv的内容是:

你可以这样做:

plot.gp

nc=“`awk-F,'NR==1{print NF;exit}”infle.csv`”
设置键自动字幕栏头
设置数据文件分隔符“,”
使用1:i和线条为[i=2:nc]“
请注意,
\1
在Gnuplot中的
中使用时需要转义

输出:


从gnuplot 4.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

我认为GNUPLOT没有任何变量可以告诉您这一点。您可以使用的答案作为解决方法。我在这里借用了您的想法作为我的答案:
print col_count