我使用xmgrace绘制数据集,我想将两个数据集一起添加。
所以我有两个文件:
DATA1
1 1
2 4
3 9
...
DATA2
1 2
2 3
3 4
...
我用
开始xmgracexmgrace data1 data2
然后我看到两个文件都被绘制了。现在我想生成第三个图表,它只是data1 + data2,如
1 3
2 7
3 13
...
我知道这非常简单,但出于某种原因,我不明白它是如何运作的。
我使用了Data-> Transformations->评估表达式...但我不知道选择什么作为" Source"和"目的地"。
PS:我知道很多其他方法可以实现我的目标,但我也希望能够用xmgrace来实现。
答案 0 :(得分:2)
使用功能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
)。您可以修改公式(图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已加载。
这是输出(在我看起来有点漂亮之后):