Может ли gnuplot вычислить и построить дельту между последовательными точками данных - PullRequest
7 голосов
/ 31 августа 2011

Например, учитывая следующий файл данных (x ^ 2 для этого примера):

0
1
4
9
16
25

Может ли 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)

Фактический файл содержит больше, чем просто интересующий меня столбец, и я хотел бы избежать предварительной обработки, чтобы добавить дельты, если это возможно.

Ответы [ 3 ]

9 голосов
/ 10 августа 2012

Решение 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'

Пример файла данных с именем «data.dat»:

0
1
4
9
16
25
6 голосов
/ 28 апреля 2012

Вот как это сделать без предварительной обработки:

Скрипт для 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' 

Пример файла данных 'runtime_delta.dat':

Data
0
1
4
9
16
25
4 голосов
/ 08 сентября 2011

Как насчет использования awk?

plot "< awk '{print $1,$1-prev; prev=$1}' <datafilename>"
...