Отображение даты и времени, точек данных и функций на одном графике - PullRequest
3 голосов
/ 18 октября 2011

Я хочу построить набор точек данных даты / времени со значением x, заданным в эпоху Unix, в секундах с 1970 года. Я также хочу построить функцию тренда вместе с данными (да, я знаю, что gnuplot может сделать это для меня , но это пример). Итак, у меня есть data.txt, который выглядит так:

1303430400 67.5
1303862400 65.5
1304208000 62.9
1304553600 60.2

И у меня есть программа gnuplot, которая выглядит так:

set terminal png
set output 'plot.png'
set timefmt "%s"
set xdata time
plot "data.txt" using 1:2 title "Data points", \
    -7.0/(1123200)*x + 8190.43 title "Trend"

Теперь функция представляет собой просто линейное приближение данных. Я проверил формулу, и она должна быть в порядке. Например, подключив 1304553600 (последнее значение диапазона), вы получите 60.2.

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

1 Ответ

4 голосов
/ 20 октября 2011

Я нашел это на странице руководства: «[На графиках даты] gnuplot также примет целочисленное выражение, которое будет интерпретироваться как секунды с 1 января 2000 года».

Разница между временем unix и временем gnuplot составляет 946684800 секунд.Этот скрипт gnuplot дает ожидаемый график (обратите внимание на добавление 946684800 к x):

set terminal png
set output 'plot.png'
set timefmt "%s"
set xdata time
plot "stackoverflow.txt" using 1:2 title "Data points", \
    -7.0/(1123200)*(x+946684800) + 8190.43 title "Trend"
...