【问题标题】:gnuplot how to give column number to plot dynamically?gnuplot 如何给列号动态绘制?
【发布时间】:2015-09-27 18:49:26
【问题描述】:

我正在自动执行一项使用 gnuplot 创建小图的任务。我需要从要绘制的数据文件中传递列号

pfile=system("echo $file")
colnum=system("echo $colnum")

plot pfile using 4:(column(colnum)) title "slot1"
                     ^^^^^^^^^^^^

colnum 之前被导出为export colnum=2

我在突出显示的部分出现错误。我尝试通过系统命令使用导出/获取,但它也不起作用 例如我试过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

【问题讨论】:

    标签: syntax gnuplot


    【解决方案1】:

    你也可以通过命令行传递列号

    gnuplot -e "colnum=$colnum" script.gp
    

    而你的script.gp 包含

    plot pfile using 4:(column(colnum))
    

    【讨论】:

    • 感谢您的回答。试过这个,但它给出了类似的错误。
    • 我测试了它,它工作正常。请注意,您必须$colnum 周围加上引号。都是关于整数与字符串的。
    【解决方案2】:

    这是@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

    【讨论】:

      【解决方案3】:

      似乎必须这样做 colnum=int(system("echo $colnum")) 以便变量 colnum 被解释为整数而不是字符串

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-01-03
        • 2011-06-02
        • 1970-01-01
        相关资源
        最近更新 更多