Gnuplot脚本,用于循环或添加到现有的绘图

时间:2010-10-31 12:03:01

标签: gnuplot

我想以设定的间隔在gnuplot中绘制一系列垂直线。

有关情节的一些信息。

该图主要是来自.dat文件的一些数据。 gnuplot脚本由bash脚本调用,它使用sed改变gnu plot脚本。这是一个旧的bash脚本的片段(丑陋我很确定)。

sed -i 's/C = CONCEHOLD/C = '${$CO}'/g' $GNUPLOTROOT/plotviscosity.plt
gnuplot $GNUPLOTROOT/plotviscosity.plt
mv my-plot.ps $VISCPLOTNAME
sed -i 's/C = '${$CO}'/C = CONCEHOLD/g' $GNUPLOTROOT/plotviscosity.plt

用。 plt文件看起来像这样。

set title "Viscosity vs Time, C = CONCEHOLD, beta = RATHOLD, zeta = ZETAHOLD"
set xlabel "Time"
set ylabel "Viscosity"
plot "viscout.dat" using 3:2 title 'Viscosity'
# Saving to my-plot.ps
load save.plt
#

我想在设定的重复间隔中添加一系列垂直线。我已经找到了如何通过http://t16web.lanl.gov/Kawano/gnuplot/parametric-e.html

绘制垂直线
set parametric
const=3
set trange [1:4]
set xrange [0:5]
set yrange [0:5]
plot const,t

我想

const=repititionperiod*i

其中i是属于(1,calculateduppedlimit)的整数。

我可以通过sed再次输入repititionperiod,并且在类似的徒劳的计算上限但是需要某种for循环在gnuplot或单独的gnuplot脚本中,在我的bash脚本中的for循环中为已经创建的绘图添加一条垂直线。

我找不到gnu图中循环的任何信息或添加到之前创建的图中。

感谢任何建议。

1 个答案:

答案 0 :(得分:3)

编辑: Gnuplot现在实际上现在支持for循环,你可以阅读它here

据我所知,gnuplot没有for循环,但你可以按如下方式生成其中一种:

制作包含

的文件“loop.gp”
const  = const + 1
#... some gnuplot commands ... 
if(const<100) reread

然后在gnuplot终端,或脚本写,

const = 3; load "loop.gp";

这会给你一个简单的循环。

(此示例取自http://t16web.lanl.gov/Kawano/gnuplot/index-e.html)的错误部分

对于您的特定答案,您可以尝试添加箭头而不是paremetric线, 例如。

set arrow from const,1 to const,4 nohead

会做同样的事情。

在这种情况下,你loop.gp可能是

const  = const + repititionperiod
#... some gnuplot commands ...  
set arrow from const,1 to const,4 nohead
if(const<calculatedupperlimit) reread

你会用

循环你
const = 1; repititionperiod=2;calculatedupperlimit = 10; load "loop.gp"; replot;

重绘图绘制箭头。

如果您“只是”想要这些线条而不是其他内容 - 那么您需要将图形提供给实际绘图(一组箭头不计算在内)。然后,您给出的示例可用于绘制第一条垂直线。

希望这会有所帮助。

汤姆