gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:25:35 24 4
gpt4 key购买 nike

我有一个包含 2 列 X 和 Y 数据的文件。有一些 block ,它们由空行分隔。我想使用向量连接每个 block 中的点(由文件中的坐标 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)

我从 Plot lines and vector in graphical gnuplot 中截取的(第一个答案)。绘图命令是 plot for[i=0:5] 'Field_lines.txt' every::i::i u (prev_x):(prev_y):(dx($1)):(dy($2 )) 与向量。输出是 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

谢谢!

最佳答案

我不完全确定,真正的问题是什么,但我认为你不能依赖 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

关于function - GNUPLOT:用向量连接不同系列的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30546231/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com