我有一个包含两列的数据文件:Xi
和 Yi
。我想绘制 i>1
的 Xi
与 (Yi-1 - Yi)/Yi-1
的关系图。可以直接在 GNUPlot 中做到这一点吗?
最佳答案
是的,直接使用 gnuplot 是可能的——但这并不容易:
firstval = NaN
yi1(yi) = (returnval=firstval, firstval=yi, returnval)
plot "datafile" using 1:((yi1($2)-$2)/returnval)
您需要使用内联函数。内联函数的形式为:
funcname(args,...) = (statement1,statement2,...,statementn, return_value)
这里我刚刚创建了一个函数来保存最后传递的值。不幸的是,这个解决方案变得有点难看,因为我无法在使用规范中调用 yi1 两次(第二次,我会得到错误的返回值),所以我必须引用持有的变量直接返回值。它不漂亮,但很有效。您可能可以通过传递 $0
(行号)并仅在 $0 更改时更新来“美化”它,但对于此 hack 来说可能不值得。
关于gnuplot - 如何在 gnuplot 中使用数据文件的多行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13369328/