2

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

关于剧情的一些信息。

该图主要是来自 .dat 文件的一些数据。gnuplot 脚本由使用 sed 更改 gnu 绘图脚本的 bash 脚本调用。这是旧 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 并以类似的徒劳计算的上限,但需要在 gnuplot 或单独的 gnuplot 脚本中使用某种 for 循环,该脚本在我的 bash 脚本中的 for 循环中向已创建的绘图添加一条垂直线。

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

感激地收到任何建议。

4

1 回答 1

3

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

据我了解,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的 misc. 部分)

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

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;

重绘绘制箭头。

如果您“只是”想要线条而不需要其他任何东西 - 那么您将需要提供一个图表来实际绘制(一组箭头不算在内)。然后可以使用您提供的示例绘制第一条垂直线。

希望这可以帮助。

汤姆

于 2010-11-06T21:00:28.957 回答