从数据文件中为gnuplot函数赋值

时间:2015-11-21 15:25:53

标签: awk gnuplot

在Gnuplot中,我尝试从两列数据文件中为函数f(x)赋值,以便将该函数绘制为水平线。

f(x)=value of $2 at $1==2 from filename.dat
plot 'filename.dat' , ' ' x<=2?f(x):1/0

我试过了:

awk '$1==2,print{$2}' filename.dat

但它说:

  

警告:遇到一个数字时遇到一个字符串            您是否尝试使用虚拟变量x或y生成文件名?&#34;。

有什么建议吗?

P.S。:我知道在awk之后应该有一个<符号,但它不会在这里显示。

1 个答案:

答案 0 :(得分:0)

我建议采用这种方法:

filename = "test.txt"
y = system(sprintf("awk '$1==2{print $2}' %s", filename))
f(x)=real(y)
plot filename u 1:2 w l, f(x) t ''

似乎gnuplot将y的值解释为字符串。因此,我们必须强制转换为数字,我将其转换为real数字。 (另一种可能性f(x)=y+0

以下是我的演示test.txt的输出,其中包含以下内容:

1 1
2 0.5
3 0

enter image description here