参数化gnuplot脚本

时间:2014-07-13 20:44:09

标签: shell plot gnuplot

当我尝试编写诸如

之类的shell脚本时
gnuplot
cd '/home/cagirici/test'
plot "case1.test" with linespoints

并在sudo中运行,脚本在运行gnuplot后停止。

在每个.test文件中,我有12列。我不会立刻将它们全部绘制出来,而是选择要绘制的内容。例如,如果我选择绘制success percentage,则应绘制1:21:8。但是,如果我选择error percentage,则应该标记1:41:10(基本上是i:(i+6)。)

我需要编写一个带有两个输入的脚本:i)文件名ii)要绘制的内容。

请注意,我还想选择线型,点类型和输出shell。 (如果有一个配置将特定的线和点类型设置为默认值,请告诉我这个)

我可以在Ubuntu中编写这个脚本吗?或者我应该使用不同的方法。

我的脚本看起来像

case "$2" in
("success percentage") plot "$1" using 1:2, plot "$1" using 1:8
("error percentage") plot "$1" using 1:4, plot "$1" using 1:10

2 个答案:

答案 0 :(得分:2)

您可以通过创建带变量的Gnuplot脚本,然后在运行时从命令行或bash脚本向这些变量传递值来完成此工作。

让我们调用Gnuplot脚本Myscript.gp

set terminal pngcairo
set output 'graph.png'

plot file u x:y w linespoints

当您从bash脚本调用Gnuplot时,filex:y可以变为varured。可能对Myscript.gp的调用如下:

gnuplot -e "x=1;y=2;file = \"mydata.dat\"" Myscript.gp

在您提供的bash脚本的片段中,这可能如下所示:

case "$2" in
("success percentage") gnuplot -e "x=1; y=2; file = \"$1\"" Myscript.gp

下面我还提供了一个虚拟mydata.dat文件,您可以使用它来尝试。

1.54    23.66   43.66
1.75    26.25   46.25
1.92    30.20   40.20
2.08    34.46   44.46
2.44    42.08   42.08
2.78    46.81   46.81
3.03    51.10   41.10
3.70    52.99   42.99
4.17    56.15   46.15
4.76    59.34   49.34

如果您在bash脚本中计算列号(xy),那么您也可以在plot命令中使用变量。

gnuplot -e "x=$x;y=$y;file = \"mydata.dat\"" Myscript.gp

下面我用一次显示输出:

gnuplot -e "x=1;y=2;file = \"mydata.dat\"" Myscript.gp

一次

gnuplot -e "x=1;y=3;file = \"mydata.dat\"" Myscript.gp

enter image description here

答案 1 :(得分:0)

我在2年前遇到过类似的问题,然后我的高级团队成员决定使用简单的csv编写一个用于绘制图形的工具,并绘制规范和工具将为您绘制图形,

最初它是为linux上的sar数据设计的,因此命名为RSAR,但一般来说它是一个csv绘图仪。) 如果需要,您可以联系我nachiket.kate90@gmail.com