2011-08-08 72 views
1

我已经在数据文件中获得了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 

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

回答

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:Discribes分隔线应该什么样子。在这种情况下:

    • lt 0:虚线
    • lc 1:2
  • "" u 1:($2-0.1):(0):(0.2) w vectors nohead ls 2红色

  • lw 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

+0

谢谢。我意识到0.06中有两个值不应该是这种情况。但是这些数值是进行数学计算的结果,因此我必须检查并询问我的导师。也可以将边界线从上到下画出线条? – zingy

+0

而且我必须在顶部标记每个细分。谢谢。 – zingy

+0

@cvani从上到下依次修改''“u 1:($ 2-0.1):(0):(0.2)w矢量nohead ls 2'。另外'设置xrange'和'设置yrange'可能对此有所帮助。要标记行,请参阅[this](http://www.gnuplot.info/docs_4.2/gnuplot.html#x1-19500043.29)文档。 – Woltan