我正在尝试在gnuplot中容纳一些数据。数据是不同的曲线。我有三个.gnp
文件:一个用于数学过程,一个用于调用要分析的文件,另一个必须在gnuplot中启动。
我得到的是这个错误,但我不知道如何解决。
gnuplot> load '0-one_fit.gnp'
gnuplot> id = $0
^
““ 0-one_fit.gnp”第5行:从无效上下文中调用column()
此文件应存储从0到变量ID的序列号。序列号通过命令调用从loop.gnp外部传递到此脚本。
文件说:
id = $0
filename = sprintf("FeCoBSiNbCu%04d.chi",id)
fit [26:35.6] f110(x) filename u 1:2 via x110,A110,w110,a0,a1
fit [42.3:45.1] f200(x) filename u 1:2 via x200,A200,w200,b0,b1
fit [48:56.1] f23(x) filename u 1:2 via x2,A2,w2,x211,A211,w211,c0,c1
entry1 = sprintf("%d\t%.3f\t%.3f\t%.1f\t%.1f\t%.3f\t%.3f\t",id,x110,x110_err,A110,A110_err,w110,w110_err)
entry2 = sprintf("%.3f\t%.3f\t%.1f\t%.1f\t%.3f\t%.3f\t",x200,x200_err,A200,A200_err,w200,w200_err)
entry3 = sprintf("%.3f\t%.3f\t%.1f\t%.1f\t%.3f\t%.3f\t",x2,x2_err,A2,A2_err,w2,w2_err)
entry4 = sprintf("%.3f\t%.3f\t%.1f\t%.1f\t%.3f\t%.3f",x211,x211_err,A211,A211_err,w211,w211_err)
print entry1, entry2, entry3, entry4
更新:我用id=ARG1
更改了文件,但现在它给了我另一个错误
gnuplot> call '0-one_fit.gnp' 0
"0-one_fit.gnp" line 8: f_sprintf: attempt to print string value with numeric format
您可以在绘图命令或绘图命令中使用的功能内使用$0
或column(0)
。在其他地方,我猜这是“无效的上下文”。检查以下示例:
也检查help using
,help column
,help pseudocolumns
。
reset session
$Data <<EOD
11 12 13 14 15
21 22 23 24 25
31 32 33 34 35
41 42 43 44 45
EOD
# id = $0 # does not work, invalid context
# id = column(0) # does not work, invalid context
id(n) = column(n) # within a function, works
plot $Data u 0:1 w lp # works
plot $Data u ($0):1 w lp # works
plot $Data u (column(0)):1 w lp # works
plot $Data u (id(0)):1 w lp # works
编辑:
我想,我误解了你的问题。我以为您想将列值分配给变量。
[如果要将参数传递给gnuplot例程,则可以call
具有参数的gnuplot文件(而不是load
)。
call '0-one_fit.gnp' 123
在0-one_fit.gnp
内,您可以通过id = ARG1
访问此值。在较早的gnuplot版本(“旧式”)中,该值为id=$0
。
检查help call
和help call old-style
(gnuplot 5.2)