我有一个包含三列的数据文件:
1 1.0 1
2 1.5 2
3 0.0 3
4 1.2 2.5
5 1.0 1
6 1.1 5
其中第一列是我的X值,第二列是我的Y值,第三列是线宽。我想根据第三列线宽绘制每个线段。
我试过了:
plot 'file1.dat' using 1:2:3 with lines lw var
但是我得到了未定义的变量:var error。
这可以在gnuplot中使用吗?
感谢。
答案 0 :(得分:4)
如果将第3列定义为点n和n + 1之间的线宽(因此将忽略该行第3列的值),您可以作弊:
stat 'file1.dat'
n=STATS_records
plot for [i=0:0] 'file1.dat' using 1:2:(alma=$3) every ::i::i w l lc 1 lw 1
plot for [i=0:n-1] 'file1.dat' using 1:2:(alma=$3) every ::i::i+1 w l lc 1 lw alma notitle
OR
plot 'file1.dat' u 0:1
n=GPVAL_DATA_X_MAX
plot for [i=0:0] 'file1.dat' using 1:2:(alma=$3) every ::i::i w l lc 1 lw 1
plot for [i=0:n] 'file1.dat' using 1:2:(alma=$3) every ::i::i+1 w l lc 1 lw alma notitle
您需要第一个plot for[i=0:0]
来'初始化'变量'alma'。
答案 1 :(得分:0)
stat 'varwidth.dat' nooutput
n=STATS_records; prex=0; prey=0; SC=2 # How y-axis is expanded relative to the x-axis
plot for [i=0:n-1] for [try=0:1] '' using 1:((try==0?dx=$1-prex:1),(try==0?sl=($2-prey)/(dx==0?1:dx):1),(try==0?prex=$1:1),(try==0?prey=$2:1),$2+(w=$3/80*sqrt(1+(SC*sl)**2))/2):($2-w/2) every ::i::i+1 w filledcurves lc 1 notitle
这会产生正确的线宽(与the answer to a related question中的“线高”相对)。我不知道如何使“线”与它们连接的位置匹配(如果没有gnuplot
内部的支持,这似乎是不可能的)。