在gnuplot的plot命令中进行计算

时间:2013-02-20 10:49:37

标签: gnuplot

以下gnuplot代码效果很好:

plot 'data.txt'  using 2:4  '   %lf %lf %lf %lf' title "1 PE" with linespoints;

在下面的代码中,我想说:"使用第4列中的数字,然后将其除以第3列和第34列中的数字。或者:"使用第2列中的数字,但除以常数2.0"。以下代码演示了我尝试实现的目标,但它不起作用。

plot 'data.txt'  using 2:4/4  '   %lf %lf %lf %lf' title "1 PE" with linespoints;
plot 'data.txt'  using 2:4/2.0  '   %lf %lf %lf %lf' title "1 PE" with linespoints;

这样的事情可能吗?

2 个答案:

答案 0 :(得分:15)

我通常不使用这样格式化的数据文件,但我认为你正在寻找类似的东西:

#divide column 4 by column 3
plot 'data.txt'  using 2:($4/$3)  '   %lf %lf %lf %lf' title "1 PE" with linespoints

#divide column 4 by constant 10.0
plot 'data.txt'  using 2:($4/10.0)  '   %lf %lf %lf %lf' title "1 PE" with linespoints

作为旁注,我认为没有任何理由将格式部分传递给此处使用。 Gnuplot在空格上拆分数据文件就好了:

plot 'data.txt'  using 2:($4/$3) title "1 PE" with linespoints

应该工作得很好。

答案 1 :(得分:2)

只需将其添加到给定的答案中,如果您更喜欢使用列名(当数据具有标题时),则可以使用以下语法:

plot 'data.dat' using 'header1':(column('header2')*column('header3')) with lines

编辑

我收到了一些反对意见,但我不知道为什么。虽然我可以轻松找到如何使用数字列引用进行计算,但是几乎无法在文档中或SO上找到带有命名列的技巧,所以我仍然希望我的回答可以对其他人有所帮助。