Gnuplot Вопрос кумулятивной колонки - PullRequest
12 голосов
/ 13 ноября 2009

У меня есть некоторые данные.

#Time  Distance
 1   3
 2   5
 4   9
 8  11
12  17
14  20
16  34
20  40

Я хочу построить суммарное расстояние по времени в gnuplot ... (это должно быть легко), но я не знаю, как.

х

Ответы [ 6 ]

25 голосов
/ 15 марта 2012

Для тех, кто все еще ищет подобные вещи, если ваша версия gnuplot 4.4 или новее, вы можете сделать следующее:

a=0
#gnuplot 4.4+ functions are now defined as:  
#func(variable1,variable2...)=(statement1,statement2,...,return value)
cumulative_sum(x)=(a=a+x,a)
plot "test.dat" using 1:(cumulative_sum($2))
14 голосов
/ 05 июня 2013

Если ваши данные находятся в файле данных файла, вы можете сделать кумулятивный график следующим образом:

$ gnuplot
gnuplot> plot "datafile" smooth cumulative
6 голосов
/ 21 декабря 2011

То же самое может быть достигнуто с помощью «накопительного» варианта «гладкой» опции (просто введите help smooth в gnuplot).

6 голосов
/ 13 ноября 2009

Предполагая, что ваши данные находятся в файле "test.txt", как насчет:

plot "<awk '{i=i+$2; print $1,i}' test.txt" with lines
1 голос
/ 25 июня 2017

Это не то, что ищет вопрос, но «совокупная функция распределения gnuplot» всегда приводит меня сюда, и ни один из ответов не является совершенно правильным, если у вас уже нет данных, ожидаемых gnuplot.

Но предположим, что вы хотели, чтобы накопительная функция распределения составляла всего расстояний и имела только необработанные расстояния. Есть небольшая хитрость, с помощью которой gnuplot может вычислить значения y:

test.dat

#Time  Distance
 1   3
 2   5
 4   9
 8  11
12  17
14  20
16  34
20  40

plot.gpi:

datafile = test.dat
stats datafile
plot datafile using 2:(1./STATS_records) smooth cumulative title "distance"

enter image description here

Это не так гибко, как наличие всех данных.

1 голос
/ 13 ноября 2009

У меня небольшой опыт работы с Gnuplot, и я просто немного изучил документацию. К сожалению, я не смог найти решение для генерации накопленной суммы, когда вы строите график.

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

...