我正在使用gnuplot自动执行创建小图的任务。我需要从要绘制的数据文件中传递列号
pfile=system("echo $file")
colnum=system("echo $colnum")
plot pfile using 4:(column(colnum)) title "slot1"
^^^^^^^^^^^^
colnum
早先导出为export colnum=2
我在突出显示的部分遇到错误。我尝试使用system / fetch by system命令,但它也没有工作
例如我试过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
答案 0 :(得分:3)
您也可以通过命令行
传递列号gnuplot -e "colnum=$colnum" script.gp
并且您的script.gp
包含
plot pfile using 4:(column(colnum))
答案 1 :(得分:1)
似乎必须执行colnum=int(system("echo $colnum"))
,以便将变量colnum
解释为整数而不是字符串
答案 2 :(得分:1)
这是@ 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