避免gnuplot脚本中的代码重复 情况:

避免gnuplot脚本中的代码重复 情况:,gnuplot,Gnuplot,我有一个相当复杂但通用的gnuplot脚本来可视化多个度量值。然而,对于我想要避免的实际绘图命令,仍然存在大量代码重复 最简单的示例(省略了许多变量和选项)如下所示: #define variables here folder="folder/" algo="Version1 Version2" #label:start #plot first specific e.g. runtime of a program set output folder.&q

我有一个相当复杂但通用的gnuplot脚本来可视化多个度量值。然而,对于我想要避免的实际绘图命令,仍然存在大量代码重复

最简单的示例(省略了许多变量和选项)如下所示:

#define variables here
folder="folder/"
algo="Version1 Version2"

#label:start
#plot first specific e.g. runtime of a program
set output folder."/Runtime".fileext
plot for[i=1:words(algo)] \
   folder.word(algo,i).".data" using 1:2 .....

#plot antoher specific e.g. Cache Misses
set output folder."/CacheMisses".fileext
plot for[i=1:words(algo)] \
   folder.word(algo,i).".data" using 1:3 .....

#label:end

#change some variables e.g.
algo="Version3 Version4"

#repeat everything between label:start and label:end
在我的真实脚本中,一个块中大约有20个绘图(介于
label:start
label:end
之间)和大量块(具有不同的变量)

问题: 有没有一种简单的方法可以用通用或文本替换方法替换gnuplot“代码”块以避免重复

我的所需的脚本如下所示:

#define variables here
folder="folder/"
algo="Version1 Version2"

magical_command(...)

#change some variables e.g.
algo="Version3 Version4"

magical_command(...)
我已经发现:

  • gnuplot
    内部不支持可变文本(即变量)
  • 函数需要一个plot命令;这只减少了部分重复
  • 目前我最好的猜测是调用commandline(例如,使用
    cmd
    )调用另一个gnuplot脚本并参数化所需的变量(但不确定选项)

我认为最简单的方法是使用一些参数调用gnuplot脚本:

gnuplot -e "algo='Version1 Version2'" yourgnuplotscript.gp
其中
yourgnuplotscript.gp
包含
label:start
label:end
之间的所有内容


如果需要对许多
algo
变量调用此函数,可以使用
bash
脚本和运行在这些变量上的
for
循环。

这实际上适用于定义的变量。e、 g.
-e\“algo=”.algo.“\”
。还有什么方法可以传递选项,例如
设置终端…
设置xkey
,而不将它们再次指定为
-e
参数?我不理解您在评论中提出的问题。。。如果使用
分隔多个选项,则可以使用
-e
传递多个选项我可以通过
-e
传递所有用户定义的变量。但是,我不希望(如果可能的话)在gnuplot文件中重复要设置的选项一次。例如,
设置终端
设置样式
设置键
。。。否则我必须在子目录中重复我的“外部”打印文件的整个标题,这将是不需要的。啊。。。那么,为什么不把它们写在主gnuplot文件中呢?如果它们对于所有文件都保持相同,那么将它们作为选项传递是没有意义的。因此,传递给主gnuplot文件的选项是更改的选项。不改变的可以直接写入gnuplot文件中。