4

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

所以我有两个文件:

数据1

1 1
2 4
3 9
...

数据2

1 2
2 3
3 4
...

我开始 xmgrace

xmgrace data1 data2

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

1 3
2 7
3 13
...

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

我玩过功能数据->转换-​​>评估表达式...但我不知道选择什么作为“源”和“目标”。

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

4

3 回答 3

5

这可以使用该功能轻松实现Evaluate expression...

xmgrace data1 data2

点击Data-> Transformations->Evaluate expression...

G0.S0选择两组(G0.S0和)中的任何一个(例如)G0.S1作为源。如果您希望输出到新集合,请不要选择任何现有集合作为目标。公式应为

y=g0.s0.y+g0.s1.y

窗口evaluateExpression应该看起来像

选择

当您 时,将创建Apply一个新集合 ( )。G0.S3您可以修改公式(g1用于 graphG1等)以在不同的图表中添加值。

于 2018-03-30T11:05:44.383 回答
1
xmgrace data1 data2

前往 window>commands

一一键入以下命令。

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> commands> Read...> (加载add.com) > Replay

于 2017-02-01T12:10:55.277 回答
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 时,管道数据最后被处理。

这是输出(在我让它看起来更漂亮之后):

在此处输入图像描述

于 2017-02-19T11:19:07.147 回答