【问题标题】:gnuplot: plotting the average of columns with incrementgnuplot:绘制具有增量的列的平均值
【发布时间】:2020-02-07 09:05:32
【问题描述】:

我有一个包含 109 列和大约 3000 行的数据。我想绘制 x1 直到 x108 的平均值(忽略 y 和 z),数据如下所示:

时间 x1 y1 z1 x2 y2 z2 x3 y3 z4 ...x108 y108 z108

只需几列就可以很好地工作,例如:

时间 x1 y1 z1 x2 y2 z2 x3 y3 z3

plot 'file.dat' u 1:(($2+$5+$8)/3) with lines ls 4

但是当数据更大时问题就出现了,例如 108 列或更多。我不想手动做,因为以后数据会变大。

我试过了:

用第 ls 4 行绘制 [i=2:108:3] 'file.dat' u 1:(column(i))

但是我会得到每个组合的图,这不是我想要的。那么,我怎样才能仅绘制 x1 ... x108 的平均值(忽略 y 和 z)?

谢谢。

【问题讨论】:

    标签: gnuplot


    【解决方案1】:

    以下内容应该可以满足您的需求。下面的例子平均z1, ..., z3。在您的情况下,平均 x1, ..., x108 的参数将是 ColStart=2ColStep=3ColCount=108

    同时检查help summation

    代码:

    ### average over several columns
    reset session
    
    $Data <<EOD
    #n   x1   y1   z1   x2   y2   z2   x3   y3   z3
     1 1.11 1.21 1.31 2.11 2.21 2.31 3.11 3.21 3.31
     2 1.12 1.22 1.32 2.12 2.22 2.32 3.12 3.22 3.32
     3 1.13 1.23 1.33 2.13 2.23 2.33 3.13 3.23 3.33
     4 1.14 1.24 1.34 2.14 2.24 2.34 3.14 3.24 3.34
     5 1.15 1.25 1.35 2.15 2.25 2.35 3.15 3.25 3.35
     6 1.16 1.26 1.36 2.16 2.26 2.36 3.16 3.26 3.36
     7 1.17 1.27 1.37 2.17 2.27 2.37 3.17 3.27 3.37
     8 1.18 1.28 1.38 2.18 2.28 2.38 3.18 3.28 3.38
     9 1.19 1.29 1.39 2.19 2.29 2.39 3.19 3.29 3.39
    EOD
    
    ColStart = 4
    ColStep = 3   
    ColCount = 3
    
    plot $Data u 1:((sum[i=0:ColCount-1] column(i*ColStep+ColStart))/ColCount) w lp pt 7 notitle
    ### end of code
    

    结果:

    【讨论】:

    • 非常感谢。这正是我想要的。
    • 很高兴听到。那么请将答案标记为可接受,表示您的问题已得到解答。
    • 很抱歉花了这么长时间才接受答案。我是新来的,我不知道。再次感谢您。
    猜你喜欢
    • 2018-03-26
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 2021-01-17
    相关资源
    最近更新 更多