我想以设定的间隔在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图中循环的任何信息或添加到之前创建的图中。
感谢任何建议。
答案 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;
重绘图绘制箭头。
如果您“只是”想要这些线条而不是其他内容 - 那么您需要将图形提供给实际绘图(一组箭头不计算在内)。然后,您给出的示例可用于绘制第一条垂直线。
希望这会有所帮助。
汤姆