gnuplot用sprintf生成p​​lot命令?

时间:2014-01-20 11:58:27

标签: gnuplot

我想以编程方式生成gnuplot plot命令,如:

plotline = sprintf("'datafile1.dat' using %d:3 with points, '%s' using %d:3 with points",i,targfile,i)
plot plotline

第二行中的'plotline'扩展为生成并执行完整命令,如:

plot 'datafile1.dat' using 8:3 with points, 'datafile2.dat' using 8:3 with points

我想这样做是为了在终端中回显'plotline',因此确切地确定在循环浏览gnuplot脚本中的循环内的一组列/数据文件时显示的是什么。

是否/这是什么语法,或者你可以建议另一种方法来报告绘图命令执行(不分成绘图命令和一组单独的命令来报告当前变量状态)。

谢谢!

1 个答案:

答案 0 :(得分:2)

为了从某些字符串构造这样的绘图命令,您可以使用eval来执行字符串中包含的命令:

plotline = 'x title "mytitle"'
eval('plot '.plotline)

或者,您可以使用set macros

set macros
plotline = 'x title "mytitle"'
plot @plotline

在执行命令之前,这会将@plotline替换为字符串变量plotline 的内容。使用plot plotlineplotline的内容解释为文件名。请注意,从版本4.6开始,宏在循环中无法正常工作,但eval工作正常。

顺便说一句:如果你没有指定自己的标题,那么实际的情节陈述会写在情节图例中。但是这不能写入终端输出。