Gnuplot 使用STATS的数据文件中的列数

Gnuplot 使用STATS的数据文件中的列数,gnuplot,Gnuplot,根据对的回答,我想确定文件中的列数 该文件如下所示: Header,,Header2,,Header3,, 1,2,3,4,5,6 11,12,13,14,15,16 stats 'data.dat' skip 1 max_col = STATS_columns 当我现在尝试使用stats命令时: stats 'data.dat' max_col = STATS_columns Gnuplot给出了一个错误,即文件data.dat的第1行有坏数据,这显然是头。 如果我删除标题,一切正常,但

根据对的回答,我想确定文件中的列数

该文件如下所示:

Header,,Header2,,Header3,,
1,2,3,4,5,6
11,12,13,14,15,16
stats 'data.dat' skip 1
max_col = STATS_columns
当我现在尝试使用stats命令时:

stats 'data.dat'
max_col = STATS_columns
Gnuplot给出了一个错误,即文件data.dat的第1行有坏数据,这显然是头。 如果我删除标题,一切正常,但我计划使用columnheader进行自动标记,如所讨论的曲线,因此删除标题不是一个解决方案


如果重要的话:我正在Windows机器上工作。

正如评论中所暗示的,解决方案就是简单地修改如下命令:

Header,,Header2,,Header3,,
1,2,3,4,5,6
11,12,13,14,15,16
stats 'data.dat' skip 1
max_col = STATS_columns

正如注释中所暗示的,解决方案只是修改命令,如下所示:

Header,,Header2,,Header3,,
1,2,3,4,5,6
11,12,13,14,15,16
stats 'data.dat' skip 1
max_col = STATS_columns
请注意,STATS_列不一定会提供文件或数据块中的最大列数。显然,它只会给出第一个数据行中的列数。如果下面的行有更多的列,stats将不考虑这一点

如果您需要知道非常规表的最大数据列数,那么在gnuplot 5.2.5中测试的以下代码将计算不规则数据块中所有行的分隔符,并告诉您最大值。嗯,可能的缺点:包含分隔符的注释行也将包括在内。必须首先将文件加载到数据块。 我很高兴知道是否有更好的方法

### maximum number of columns in datablock
reset session

$Data <<EOD
11  12  33
21  22  23  24  25
31  32  33  34  35  36  37  38  39
41  42  43  44  45
51  52
EOD

# Method with stats
stats $Data nooutput
print "STATS_columns: ", STATS_columns

# Method with counting separators
CountChar(s,c) = int(sum[Count_i=1:strlen(s)] (s[Count_i:Count_i] eq c))
ColMax = 0
Separator = "\t"
do for [i=1:|$Data|] {
    ColCount = CountChar($Data[i],Separator)+1
    ColMax = (ColCount > ColMax ? ColCount : ColMax)
}
print "Maximum Columns: ", ColMax
### end of code
请注意,STATS_列不一定会提供文件或数据块中的最大列数。显然,它只会给出第一个数据行中的列数。如果下面的行有更多的列,stats将不考虑这一点

如果您需要知道非常规表的最大数据列数,那么在gnuplot 5.2.5中测试的以下代码将计算不规则数据块中所有行的分隔符,并告诉您最大值。嗯,可能的缺点:包含分隔符的注释行也将包括在内。必须首先将文件加载到数据块。 我很高兴知道是否有更好的方法

### maximum number of columns in datablock
reset session

$Data <<EOD
11  12  33
21  22  23  24  25
31  32  33  34  35  36  37  38  39
41  42  43  44  45
51  52
EOD

# Method with stats
stats $Data nooutput
print "STATS_columns: ", STATS_columns

# Method with counting separators
CountChar(s,c) = int(sum[Count_i=1:strlen(s)] (s[Count_i:Count_i] eq c))
ColMax = 0
Separator = "\t"
do for [i=1:|$Data|] {
    ColCount = CountChar($Data[i],Separator)+1
    ColMax = (ColCount > ColMax ? ColCount : ColMax)
}
print "Maximum Columns: ", ColMax
### end of code

如果数据文件中有标题,则必须使用…title columnheaderN。在需要之前,请对标题进行注释!别忘了设置数据文件分隔符!使用gnuplot 5,您可以尝试统计数据。dat'skip 1或skip 2,我不确定使用统计数据的数字。dat'skip 1非常有用,谢谢!如果数据文件中有标题,则必须使用…title columnheaderN。在需要之前,请对标题进行注释!别忘了设置数据文件分隔符!使用gnuplot 5,您可以尝试统计数据。dat'skip 1或skip 2,我不确定使用统计数据的数字。dat'skip 1非常有用,谢谢!