gnuplot如何动态绘制列号?

时间:2015-09-27 18:49:26

标签: syntax gnuplot

我正在使用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

3 个答案:

答案 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