使用xmgrace

时间:2017-01-31 16:24:07

标签: plot xmgrace

我使用xmgrace绘制数据集,我想将两个数据集一起添加。

所以我有两个文件:

DATA1

1 1
2 4
3 9
...

DATA2

1 2
2 3
3 4
...

我用

开始xmgrace
xmgrace data1 data2

然后我看到两个文件都被绘制了。现在我想生成第三个图表,它只是data1 + data2,如

1 3
2 7
3 13
...

我知道这非常简单,但出于某种原因,我不明白它是如何运作的。

我使用了Data-> Transformations->评估表达式...但我不知道选择什么作为" Source"和"目的地"。

PS:我知道很多其他方法可以实现我的目标,但我也希望能够用xmgrace来实现。

3 个答案:

答案 0 :(得分:2)

使用功能xmgrace data1 data2

可以轻松实现
Data

点击Transformations - > Evaluate expression... - > G0.S0

选择两组(G0.S0G0.S1)中的任何一个(例如y=g0.s0.y+g0.s1.y )作为来源。如果要将输出设置为新集,请不要选择任何现有集作为目标。公式应该是

evaluateExpression

Apply窗口应该看起来像

Selections

当您G0.S3时,将创建一个新集(g1)。您可以修改公式(图G1的{​​{1}}等),以便在不同的图表中添加值。

答案 1 :(得分:1)

xmgrace data1 data2

转到窗口> 命令

逐个输入以下命令。

s2 length s0.length
s2.x = s0.x # Change s0.x to s0.x+s1.x if you want to add x too.
s2.y = s0.y+s1.y
redraw
updateall

您还可以将这些命令添加到add.com文件中,并将其保存在与数据文件相同的目录中。

然后 window > 命令> 阅读... > (加载add.com)> 重放

答案 2 :(得分:1)

如果您不介意使用xmgrace GUI,Sathyam的答案很棒,但如果您想在命令行上执行所有操作,则有多种方法。

<强>答案: 这是一种方法:

paste -d ' ' data1 data2 | awk '{print $1,$2+$4}' | xmgrace -pipe data1 data2

分步说明 首先,我们使用paste命令水平堆叠两个文件:

paste -d ' ' data1 data2

这给出了以下输出:

1 1 1 2
2 4 2 3
3 9 3 4

然后我们将其传递给awk以打印第一列,并对第2列和第4列进行逐元素求和:

paste -d ' ' data1 data2 | awk '{print $1,$2+$4}'

这给出了:

1 3
2 7
3 13

现在我们要将其传递给xmgrace,然后将原始数据文件作为附加数据集提供。

paste -d ' ' data1 data2 | awk '{print $1,$2+$4}' | xmgrace -pipe data1 data2

请注意,管道数据仍在第三个数据集“S2”中,因为管道数据最后会被处理,因为xmgrace已加载。

这是输出(在我看起来有点漂亮之后):

enter image description here