GNUPLOT:用向量连接不同系列的数据点

3

我有一个包含两列数据X和Y的文件。这些数据被一些空行分隔成了多个块。我想要使用向量将每个块中的点(由文件中它们的x和y坐标给出)连接起来。我正在尝试使用以下函数:

prev_x = NaN
prev_y = NaN
dx(x) = (x_delta = x-prev_x, prev_x = ($0 > 0 ? x : 1/0), x_delta)
dy(y) = (y_delta = y-prev_y, prev_y = ($0 > 0 ? y : 1/0), y_delta)

我从在gnuplot中绘制线和向量(第一个答案)中获取的命令为plot for[i=0:5] 'Field_lines.txt' every :::i::i u (prev_x):(prev_y):(dx($1)):(dy($2)) with vectors。输出结果为enter image description here,问题是即使它不在文件中,点(0,0)也被包含了进来。我不确定函数dxdy的作用以及它们如何与选项(prev_x):(prev_y):(dx($1)):(dy($2))一起使用,因此对此的解释将有助于我尝试修复此问题。 这是文件内容:
#1
0   5   
0   4   
0   3   
0.4 2   
0.8 1   
0.8 1   

#2
2   5
2   4
2   3
2   2
2   1
2   0

#3
4   5
4.2 4
4.5 3
4.6 2
4.7 1
4.7 0

#4
7   5
7.2 4
7.5 3
7.9 2
7.9 1
7.9 0

#5 
9   5
9   4
9.2 3
9.5 2
9.5 1
9.5 0

#6
11  7
12  6
13  5
13.3    4
13.5    3
13.5    2
13.6    1
14  0

谢谢!

1个回答

1
我不完全确定真正的问题是什么,但我认为您不能依赖using语句中的列从左到右进行评估,并且我认为您在dxdy中的检查$0 > 0有些晚了。
通常我将所有分配和条件放在第一列中,这在您的情况下也可以正常工作:
set offsets 1,1,1,1
unset key
prev_x = prev_y = 1

plot for [i=0:5] 'Field_lines.txt' every :::i::i \
    u (x_delta = prev_x-$1, prev_x=$1, y_delta=prev_y-$2, prev_y=$2, ($0 == 0 ? 1/0 : prev_x)):(prev_y):(x_delta):(y_delta) with vectors backhead

此外,要从第j行绘制矢量到下一行中的点,您必须反转x_delta的定义并使用backhead来正确绘制矢量方向。

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接