【问题标题】:Gnuplot: store last data point as variableGnuplot:将最后一个数据点存储为变量
【发布时间】:2016-05-17 14:19:25
【问题描述】:

我想知道是否有一种简单的方法,使用 Gnuplot 来获取数据文件中的最后一个点,比如 data.txt 并将值存储在变量中。

从这个问题, accessing the nth datapoint in a datafile using gnuplot 我知道我可以使用 stats 和 GP_VAL_DATA_X_MAX 变量来获取 X 值,但是有没有一个简单的技巧来获取相应的 y 值?

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    第三种可能性是在绘图期间将每个纵坐标值写入相同的用户变量。最后一个值留在:

     plot dataf using 1:(lasty=$2)
     print lasty
    

    【讨论】:

    • 你的意思是using 1:(latsy=$2)
    【解决方案2】:

    如果你想使用 Gnuplot,你可以

    plot 'data.txt'
    plot[GPVAL_DATA_X_MAX:] 'data.txt'
    show variable GPVAL_DATA_Y_MAX
    

    plot 'data.txt'
    plot[GPVAL_DATA_X_MAX:] 'data.txt'
    print GPVAL_DATA_Y_MAX
    

    【讨论】:

      【解决方案3】:

      如果您知道文件的组织方式(分隔符、尾随空行)并且可以访问标准 Unix 工具,则可以使用 Gnuplot 的 system 命令。例如,如果您没有尾随换行符并且您的值由制表符分隔,您可以执行以下操作:

      x = system("tail -n 1 data.txt | cut -f 1")
      y = system("tail -n 1 data.txt | cut -f 2")
      

      tail 获取文件的最后 n 行。cut 提取列 f。)

      请注意,xy 如果以这种方式获得,则为字符串,但对于大多数应用程序而言,这无关紧要。如果您必须转换它们,you can still add zero

      【讨论】:

      • 这个答案也适用于任何分隔符,例如 cut -d ' ' 1
      【解决方案4】:

      让我添加第四个解决方案,因为:

      • 确切地说,OP 询问了 last x 值和相应的 y 值。 @TomSolid 的解决方案将返回 ma​​ximum x 值及其对应的 y 值。 但是,严格来说,最大值可能不一定是最后一个值,除非 x 数据按升序排序。 下面示例的结果将是 1014,而不是 818

      • @Karl 的解决方案将返回最后一个 y 值 并且 也会绘制一些东西,尽管您可能只是想提取该值并绘制其他东西。理想情况下,您可以将提取和绘图结合起来。

      • @Wrzlprmft 的解决方案是使用 Linux 函数 tail,它与平台无关(对于 Windows,您首先必须安装此类实用程序)

      因此,这里有一个解决方案:

      • 独立于平台和仅 gnuplot
      • 返回最后一个 x 值和对应的 y 值
      • 不创建任何虚拟图

      脚本:

      ### get the last x-value and corresponding y-value
      reset session
      
      $Data <<EOD
      1     11
      2     12
      3     13
      10    14
      5     15
      6     16
      7     17
      8     18
      EOD
      
      stats $Data u (lastX=$1,lastY=$2) nooutput
      print lastX, lastY
      ### end of script
      
      

      结果:

      8.0   18.0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-12
        • 1970-01-01
        • 1970-01-01
        • 2017-01-09
        • 1970-01-01
        • 2022-06-10
        • 1970-01-01
        相关资源
        最近更新 更多