gnuplot 如何给列号动态绘制?
gnuplot how to give column number to plot dynamically?
我正在使用 gnuplot 自动执行创建小图的任务。我需要从要绘制的数据文件中传递列号
pfile=system("echo $file")
colnum=system("echo $colnum")
plot pfile using 4:(column(colnum)) title "slot1"
^^^^^^^^^^^^
colnum
之前导出为 export colnum=2
我在突出显示的部分遇到错误。我尝试通过系统命令使用 export/fetch,但它也不起作用
例如我尝试了 4:colnum
,得到了类似的错误
"./12.gnuplot.helper.pg", line 29: warning: Skipping data file with no valid points
plot pfile using 4:(column(colnum)) title "slot1"
^
"./12.gnuplot.helper.pg", line 29: x range is invalid
似乎必须做 colnum=int(system("echo $colnum"))
以便变量 colnum
被解释为整数而不是字符串
您也可以通过命令行传递列号
gnuplot -e "colnum=$colnum" script.gp
并且您的 script.gp
包含
plot pfile using 4:(column(colnum))
这是@EWCZ 回答的替代方法。使用 system
命令初始化的任何变量都被视为字符串:在您的情况下, colnum="2"
(带引号)。您可以通过添加零将其转换为整数:
# first option
plot pfile using 4:(column(colnum+0))
# second option
colnum = system("echo $colnum") + 0
plot pfile using 4:(column(colnum))
附带说明一下,通过使用@Christoph 的回答,您的任务可以更灵活(更容易自动化);如果你有 gnuplot 5.0
就更好了,因为你可以 pass arguments to a gnuplot script directly
我正在使用 gnuplot 自动执行创建小图的任务。我需要从要绘制的数据文件中传递列号
pfile=system("echo $file")
colnum=system("echo $colnum")
plot pfile using 4:(column(colnum)) title "slot1"
^^^^^^^^^^^^
colnum
之前导出为 export colnum=2
我在突出显示的部分遇到错误。我尝试通过系统命令使用 export/fetch,但它也不起作用
例如我尝试了 4:colnum
,得到了类似的错误
"./12.gnuplot.helper.pg", line 29: warning: Skipping data file with no valid points
plot pfile using 4:(column(colnum)) title "slot1"
^
"./12.gnuplot.helper.pg", line 29: x range is invalid
似乎必须做 colnum=int(system("echo $colnum"))
以便变量 colnum
被解释为整数而不是字符串
您也可以通过命令行传递列号
gnuplot -e "colnum=$colnum" script.gp
并且您的 script.gp
包含
plot pfile using 4:(column(colnum))
这是@EWCZ 回答的替代方法。使用 system
命令初始化的任何变量都被视为字符串:在您的情况下, colnum="2"
(带引号)。您可以通过添加零将其转换为整数:
# first option
plot pfile using 4:(column(colnum+0))
# second option
colnum = system("echo $colnum") + 0
plot pfile using 4:(column(colnum))
附带说明一下,通过使用@Christoph 的回答,您的任务可以更灵活(更容易自动化);如果你有 gnuplot 5.0
就更好了,因为你可以 pass arguments to a gnuplot script directly