我想知道Gnuplot中是否有一些解决方法来交换类似
的内容plot input.dat using ($1/2):($2*2) axis x1y1 w lp
带
plot input.dat using func1($1,$2):func2($1,$2) axis x1y1 w lp
带
func1(x,y) = x/2; func2(x,y) = y*2;
我想在绘图之前对输入数据(线)进行后期处理。
答案 0 :(得分:9)
您可以使用非常接近您建议的语法。定义如下函数:
func1(x) = x / 2
func2(x) = x * 2
并像这样使用它们:
plot "input.dat" using (func1($1)):(func2($2))
情节陈述中的括号结是必要的。
您可以定义多个变量的函数:
func3(x, y) = x * y
类似地使用它们:
plot "input.dat" using (func1($1)):(func3($1, $2))
答案 1 :(得分:3)
您可以在gnuplot中使用函数。记录here。
举个例子:
使用数据文件 Data.csv :
0.65734 0.59331
0.60033 0.76434
0.66493 0.43881
0.42811 0.42567
0.01783 0.57760
您可以使用以下函数绘制数据:
func1(x) = x/2
func2(x,y) = y*2
plot "Data.csv" u (func1($1)):(func2($1, $2)) w l
请注意func1($1)
和func2($1, $2)
周围的“额外”括号。这些告诉gnuplot评估它们中的表达式。