我正在尝试在Gnuplot中自动生成标题。我有一个数组(titleprefix)和另一组变量(a1,a2,a3 ......),标题是前缀后跟斜率(a' s)。我试过这个:
title(n) = sprintf("word(titleprefix,n).sprintf(\" Slope = %.3f\",%f)",a."n"+0)
当然没有用。错误是:
在预期数字表达式的位置找到非数字字符串。
我知道如何解决这个问题吗?
最后,我想绘制几条曲线:
plot f1 w l t title(1), \
f2 w l t title(2), \
f3 w l t title(3)
答案 0 :(得分:0)
执行此类操作的一个选项是在此类函数中构建完整的set title
命令,然后eval
。{/ p>
在你的情况下,它需要一些大脑扭曲来使引号正确,以便变量名称是正确的:
titleprefix="first second third"
a1 = 1.111
a2 = 2.222
a3 = 3.333
title(n) = 'set title "'.word(titleprefix, n).': ".sprintf("Slope = %.3f", a'.n.')'
set multiplot layout 1,3
eval(title(1))
plot x
eval(title(2))
plot 2*x
eval(title(3))
plot 3*x
unset multiplot
或者,您可以在定义或计算变量时构造格式化变量值的单词列表。
a1 = 1.111111
a2 = 2.222222
a3 = 3.333333
tmp = 'a = ""'
do for [i=1:3] { tmp = tmp.".sprintf('%.3f ', a".i.")" }
eval(tmp)
plot for [i=1:3] i*x title word(a, i)