我在数据文件中有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
我怎样才能实现它?谢谢。
答案 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
处的分隔线比其他位置更长的原因,如下图所示: