给出的是gnuplot中的函数f(a,b,x,y),其中我们得到了一个带有x,y,z的3D空间(使用splot)。
还给出了以下结构的csv文件(没有任何标题):
2 4
1 9
6 7
...
有没有办法读出第一列的所有值并将它们分配给变量a?隐含地它应该创建类似的东西:
a = [2,1,6]
b = [4,9,7]
这个想法是绘制迭代所有a,b元组的函数f(a,b,x,y)。
我已经阅读了其他帖子,我希望这些帖子与其相关,例如Reading dataset value into a gnuplot variable (start of X series)。但是我无法做任何进展。
有没有办法遍历带有两列的csv文件的所有行,使用行的每个列值作为函数的参数?
答案 0 :(得分:1)
假设您有以下名为data
的数据文件:
1 4
2 5
3 6
您可以使用a
系统调用轻松地将第1和第2列值加载到变量b
和awk
(您也可以使用gnuplot使用plot
预处理来执行此操作但这样的方式更复杂):
a=system("awk '{print $1}' data")
b=system("awk '{print $2}' data")
f(a,b,x,y)=a*x+b*y # Example function
set yrange [-1:1]
set xrange [-1:1]
splot for [i in a] for [j in b] f(i,j,x,y)
这是一个仅限gnuplot的解决方案,无需系统调用:
a=""
b=""
splot "data" u (a=sprintf(" %s %f", a, $1), b=sprintf(" %s %f", b, \
$2)):(1/0):(1/0) not, for [i in a] for [j in b] f(i,j,x,y)