Avoiding code duplication in gnuplot script
情况:
我有一个相当复杂但通用的 gnuplot 脚本来可视化多个测量值。但是,对于我想要避免的实际绘图命令,仍然存在大量代码重复。
最小的例子(省略了许多变量和选项)可能如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | #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 个图(在
问题:
有没有一种简单的方法可以用通用或文本替换方法替换 gnuplot"代码"块以避免重复?
我想要的脚本如下所示:
1 2 3 4 5 6 7 8 9 10 | #define variables here folder="folder/" algo="Version1 Version2" magical_command(...) #change some variables e.g. algo="Version3 Version4" magical_command(...) |
我已经知道了:
-
gnuplot
macros 不支持内部可变参数文本(即变量)。 - 函数需要绘图命令;仅减少部分重复
-
目前我最好的猜测是调用命令行(例如使用
cmd )来调用另一个 gnuplot-script 并参数化所需的变量(虽然不确定选项)
我想最简单的方法是使用一些参数调用 gnuplot 脚本:
1 | gnuplot -e"algo='Version1 Version2'" yourgnuplotscript.gp |
其中
如果您需要为许多