gnuplot 将命令输出存储到变量

问题描述 投票:0回答:1

如何将 gnuplot 命令的输出保存到(字符串)变量中? 例如,我需要知道脚本中当前的 xdata 格式设置,但我不记得保存它的技巧。例如

gnuplot> show xdata

       x is set to time

但是我如何保存或访问此状态? 我没有看到任何使此状态可用的

GP_VAL
变量,而且我确信还有其他状态,这些状态很难在脚本中访问。

非常感谢:-)

command output gnuplot
1个回答
0
投票

过去,我也希望可以将一些可以通过

show ...
显示的参数放入变量中。我不知道现在可以使用 gnuplot 轻松完成此操作,但也许将来?

据我了解您的问题,您想在脚本中找出

xdata
是否设置为
time
。如果您选中
help xdata
,则设置可以是
time
numeric

一种可能的解决方法:

  • 您可以通过
    save
    将当前脚本保存到文本文件(检查
    help save
    ),显然您无法将其保存到数据块。
  • 解析此文本文件以查看
    xdata
    是否设置为时间数据。如果将其设置为时间,则要查找的行为
    set xdata time
    ,如果将其设置为数字,则该行仅为
    set xdata
    ,这使得提取起来更加困难(也许有更简单的方法)。 该文件将如下所示:
#    
#       G N U P L O T
#       Version 6.0 patchlevel 0    last modified 2023-12-09 
#    
#       Copyright (C) 1986-1993, 1998, 2004, 2007-2023
#       Thomas Williams, Colin Kelley and many others
#    
#       gnuplot home:     http://www.gnuplot.info
#       faq, bugs, etc:   type "help FAQ"
#       immediate help:   type "help"  (plot window: hit 'h')
# set terminal qt 0 font "Sans,10"
# set output
unset clip points
set clip one
unset clip two
unset clip radial
set errorbars front 1.000000 
set border 31 front lt black linewidth 1.000 dashtype solid
set cornerpoles
set zdata 
set ydata 
set xdata time
set y2data 
set x2data 
set boxwidth
set boxdepth 0
set style fill  empty border
...

不幸的是,gnuplot 不是为解析而设计的,但你仍然可以做到。

脚本:(由于功能块,需要 gnuplot>=6.0)

### return setting for xdata
reset session

function $xdata(none) <<EOF
    FILE = "Settings.txt"
    save FILE 
    set table $Dummy
        plot FILE u 0:(strcol(2) eq "xdata" ? \
             XDATA=(strlen(' '.strcol(3))>3 ? "time" : "numeric") : 0) w table
    unset table
    return XDATA
EOF

set xdata
print $xdata(0)

set xdata time
print $xdata(0)
### end of script

结果:

numeric
time

脚本:(由于数据块,需要 gnuplot>=5.0.0)

### return setting for xdata
reset session

set xdata
FILE = "SO78723633.txt"
save FILE 
set table $Dummy
    plot FILE u 0:(strcol(2) eq "xdata" ? \
         XDATA=(strlen(' '.strcol(3))>3 ? "time" : "numeric") : 0) w table
unset table
print XDATA

set xdata time
FILE = "SO78723633.txt"
save FILE 
set table $Dummy
    plot FILE u 0:(strcol(2) eq "xdata" ? \
         XDATA=(strlen(' '.strcol(3))>3 ? "time" : "numeric") : 0) w table
unset table
print XDATA
### end of script

结果:

numeric
time
© www.soinside.com 2019 - 2024. All rights reserved.