在贝塞尔曲线之间绘制垂直线

时间:2011-08-08 09:30:22

标签: gnuplot

我在数据文件中有x和y值来绘制贝塞尔曲线。每个(x,y)对表示贝塞尔曲线。现在我需要将绘制垂直线的线段(最好是虚线)分开。切片应位于每个(x,y)处,以便分离多个贝塞尔曲线并进行分析。输入文件如下:

0.07     0.543022222222 

0.06     0.694821399177 

0.08     0.734375 

0.12     0.743377777778 

0.11     0.795822222222 

0.09     0.772946197226 

0.14     0.798727048915 

0.05     0.6118208 

0.06     0.517422222222   

gnuplot的脚本是:

set term x11 persist

set title "Animation curves"

set xlabel "Time (secs.)"

set ylabel "Parameter"

plot "curve.dat" using 1:2 notitle smooth csplines

我怎样才能实现它?谢谢。

1 个答案:

答案 0 :(得分:2)

您可以使用向量绘制这些分隔线。以下脚本应该完成这项工作:

set key off
set style line 2 lt 0 lc 1 lw 2
plot [0.04:0.15] "Data.csv" u 1:2 smooth csplines ls 1, "" u 1:($2-0.1):(0):(0.2) w vectors nohead ls 2
  • set key off:为所有情节
  • 设置notitle关键字冗余
  • set style line 2 lt 0 lc 1 lw 2:描述分隔线应如何显示。在这种情况下:

    • lt 0:虚线
    • lc 1:red
    • lw 2线宽为2
  • "" u 1:($2-0.1):(0):(0.2) w vectors nohead ls 2:实际绘制分隔线:

    • ""使用以前使用的数据文件
    • u 1:($2-0.1):(0):(0.2):在数据文件的(x, y - 0.2)(x, y + 0.2)位置之间绘制矢量。
    • w vectors nohead:使用向量,让它们没有头脑。
    • ls 2:使用先前定义的第2行样式。

您可能遇到的一个问题是,在您的数据文件中,位置0.06定义了两个值,这使得gnuplot取这两个值的平均值。这就是位置x=0.06处的分隔线比其他位置更长的原因,如下图所示:

Result of the script above