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

GNUPLOT: Joining different series of points with vectors

我有一个包含 2 列 X 和 Y 数据的文件。有一些块,它们由空行分隔。我想使用向量连接每个块中的点(由文件中的坐标 x 和 y 给出)。我正在尝试使用这些功能:

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

我从 Plot lines and vector in graphical gnuplot(第一个答案)中获取的。绘图命令为 plot for[i=0:5] 'Field_lines.txt' every :::i::i u (prev_x):(prev_y):(dx()):(dy()) with vectors。输出是 问题是点 (0,0) 被包括在内,即使它不在文件中。我不认为我理解函数 dxdy 的确切作用以及它们如何与使用 (prev_x):(prev_y):(dx()):(dy()) 的选项一起使用,所以对此的解释将帮助我尝试很多解决这个问题。 这是文件:

#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

谢谢!

我不完全确定,真正的问题是什么,但我认为你不能依赖 using 语句中的列从左到右进行评估,而你的检查 [=12= ] > 0dxdy 我认为有些太晚了。

我通常把所有的赋值和条件都放在第一列,这在你的情况下也能正常工作:

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-, prev_x=, y_delta=prev_y-, prev_y=, ([=10=] == 0 ? 1/0 : prev_x)):(prev_y):(x_delta):(y_delta) with vectors backhead

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