gnuplot可以计算并绘制连续数据点之间的增量

Gre*_*unn 7 gnuplot

例如,给定以下数据文件(此示例为x ^ 2):

0
1
4
9
16
25
Run Code Online (Sandbox Code Playgroud)

gnuplot可以绘制点以及点之间的差异,就好像它是:

0 0
1 1   # ( 1 - 0 = 1)
4 3   # ( 4 - 1 = 3)
9 5   # ( 9 - 4 = 5)
16 7  # (16 - 9 = 7)
25 9  # (25 -16 = 9)
Run Code Online (Sandbox Code Playgroud)

实际文件不仅仅包含我感兴趣的列,如果可能的话,我想避免预处理以添加增量.

Bor*_*duk 9

dtop的解决方案对我来说不起作用,但这是有效的,纯粹是gnuplot(不是调用awk):

delta_v(x) = ( vD = x - old_v, old_v = x, vD)
old_v = NaN
set title "Compute Deltas"
set style data lines
plot 'data.dat' using 0:($1), '' using 0:(delta_v($1)) title 'Delta'
Run Code Online (Sandbox Code Playgroud)

名为'data.dat'的示例数据文件:

0
1
4
9
16
25
Run Code Online (Sandbox Code Playgroud)


小智 6

以下是如何在不进行预处理的情况下执行此操作:

gnuplot的脚本:

# runtime_delta.dem script
# run with 
#     gnuplot> load 'runtime_delta.dem'
#
reset

delta_v(x) = ( vD = x - old_v, old_v = x, vD)
old_v = NaN

set title "Compute Deltas"
set style data lines

plot 'runtime_delta.dat' using 0:(column('Data')), '' using 0:(delta_v(column('Data'))) title 'Delta' 
Run Code Online (Sandbox Code Playgroud)

示例数据文件'runtime_delta.dat':

Data
0
1
4
9
16
25
Run Code Online (Sandbox Code Playgroud)


Sun*_* Jo 4

使用 awk 怎么样?

plot "< awk '{print $1,$1-prev; prev=$1}' <datafilename>"
Run Code Online (Sandbox Code Playgroud)