避免gnuplot脚本中的代码重复 情况:
我有一个相当复杂但通用的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
#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(例如,使用
)调用另一个gnuplot脚本并参数化所需的变量(但不确定选项)cmd
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文件中。