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非常有用,谢谢!