从 CSV 文件加载列作为分配给变量的列表

Loading column from CSV file as a list assigned to a variable

given 是 gnuplot 中的一个函数 f(a,b,x,y),我们在这里得到了一个 3D-space 和 x,y,z(使用 splot)。

还给出了以下结构的 csv 文件(没有任何 header):

2  4
1  9
6  7
... 

有没有办法把第一列的所有值都读出来赋值给变量a?隐含地它应该创建类似的东西:

a = [2,1,6]
b = [4,9,7]

我们的想法是绘制函数 f(a,b,x,y) 对所有 a,b 元组进行迭代。

我已经阅读了其他帖子,希望与它相关,例如Reading dataset value into a gnuplot variable (start of X series)。但是我无法取得任何进展。

有没有一种方法可以遍历具有两列的 csv 文件的所有行,使用一行的每一列值作为函数的参数?

假设您有以下名为 data 的数据文件:

1 4
2 5
3 6

您可以使用 awk 系统调用轻松地将第一列和第二列的值加载到变量 ab(您也可以使用 plot 预处理来完成此操作使用 gnuplot 但这样更复杂):

a=system("awk '{print }' data")
b=system("awk '{print }' 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-only 解决方案:

a=""
b=""
splot "data" u (a=sprintf(" %s %f", a, ), b=sprintf(" %s %f", b, \
)):(1/0):(1/0) not, for [i in a] for [j in b] f(i,j,x,y)