从Gnuplot中的变量生成标题

从Gnuplot中的变量生成标题,gnuplot,Gnuplot,我试图在Gnuplot中自动生成标题。我有一个数组(titleprefix)和另一组变量(a1、a2、a3…),标题是前缀,后跟斜率(a)。我试过这个: title(n) = sprintf("word(titleprefix,n).sprintf(\" Slope = %.3f\",%f)",a."n"+0) 当然,这是行不通的。错误是: 在需要数值表达式的位置找到非数值字符串 知道我怎么解决这个问题吗 最后,我想画几条这样的曲线: plot f1 w l t title(1), \

我试图在Gnuplot中自动生成标题。我有一个数组(titleprefix)和另一组变量(a1、a2、a3…),标题是前缀,后跟斜率(a)。我试过这个:

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)

执行这些操作的一个选项是在这样一个函数中构建完整的
set title
命令,然后
eval

在您的情况下,需要稍微绞尽脑汁才能获得正确的引号,以便变量名是正确的:

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)

这很有帮助,但我不使用multiplot。如果你想画几条曲线,你会怎么做
plot file1 w l t title(1),file2 w l t title(2)
一个经典案例,其中一个最小但完整的示例脚本可能会有所帮助;)因此,要获取其余信息:变量值是从哪里获得的?在注释中键入脚本是很困难的。问题是,如果不使用multiplot,您将如何修改它。例如,如果要执行诸如打印文件1 w l t title(1)、文件2 w l t title(2)、文件2 w l t title(3)之类的操作,您将如何评估title命令。其余内容与您的工作示例相同。您可以随时编辑问题以包含更多信息。基本上,您可以按照我在答案末尾的建议:您可以使用预先格式化的变量值生成单词列表。我马上更新我的答案。非常感谢。我会努力的,看看能不能让它工作。顺便说一下,我尝试你的例子时确实有一个错误。版本4.6补丁级别4<代码>gnuplot>do for[i=1:3]{tmp=tmp.“sprintf('%f',a.i.')}gnuplot>eval(tmp)gnuplot>a=sprintf('%f',a1)sprintf('%f',a2)sprintf('%f',a3)sprintf('%f',a2)sprintf('%f',a2 sprintf',a3);'预期的