【问题标题】:GNUPLOT: Joining different series of points with vectorsGNUPLOT:用向量连接不同系列的点
【发布时间】:2015-05-31 03:29:11
【问题描述】:

我有一个文件,其中包含 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)

我取自 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)) with vectors。输出是 问题是点 (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

谢谢!

【问题讨论】:

    标签: function vector gnuplot points


    【解决方案1】:

    我不完全确定,真正的问题是什么,但我认为您不能依赖 using 语句中的列从左到右进行评估,以及您在 dx 中的检查 $0 > 0dy 在我看来有些为时已晚。

    我通常把所有的赋值和条件放在第一列,这也适用于你的情况:

    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 以正确方向绘制向量

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多