У меня была аналогичная проблема. Хотя вы точно не указали, как вы делали сюжет. Я хотел установить диапазон, используя временные метки, и нашел что-то неожиданное. , , так что, хотя, по-старому, я думаю, что стоит ответить на этот вопрос.
две полезные вещи:
Вы можете построить с xrange установлен на [*.], А затем «показать xrange», чтобы выяснить, какие внутренние ПРЕДСТАВЛЕНИЯ из xrange используется вашим Gnuplot.
Вы можете использовать() в gnuplot для ввода вычислений и вызовов функций.
Ответ # 1 Вы черчения с помощью timecolumn? До gnuplot 4,7 gnuplot внутренние времена были отслежены относительно 1 января 2000 года, а не эпохи unix 1-янв-1970. Ответ зависит от того, какую версию gnuplot вы используете? Вы можете использовать() в gnuplot для выполнения функций вызова или выполнения вычислений. Вы можете вызвать дату команды команды, чтобы получить метку времени. Так . , ,
set xrange [(system("date -d 'now' +%s")-2592000):(system("date -d 'now' +%s"))]
show xrange
set xdata time
set xrange [ "1431007547" : "1431008547" ] noreverse nowriteback
До GNUPLOT 4.7 Вы также должны вычесть 946684800 секунд из всех временных меток. В общем, я нашел около 1893370441 secs = ~ 60 лет - это значение, которое мне нужно вычесть с моей версией gnuplot (4.6). Найдите смещение временной отметки, выполнив график с данными временной метки без установки xrange, а затем выполните «show xrange» и вычислите смещение.
Таким образом определяют смещение используется множество xrange следующим образом:
####################################################################
## 1893456000 = 60 years seems to be the offset gnuoplot is using.##
## or is it 1893370441 ? yeah it seems to be a bit short of 60 years.
## I believe 946684800 should be the offset prior to 4.7. ##
####################################################################
TIMEOFFSET=946684800
TIMEOFFSET=1893370441
set xrange [(system("date -d 'now' +%s")-2592000-TIMEOFFSET):(system("date -d 'now' +%s")-TIMEOFFSET)]
Ответ # 2 Является ли ваш xrange фактически в строках файла данных? (т. е. не использовать временную шкалу). В этом случае установите xrange в терминах строк данных. Если ваши данные являются периодическими, вы можете рассчитать, сколько строк назад = определенный период времени.
я случайно использовать эту версию Gnuplot:
Version 4.6 patchlevel 1 last modified 2012-09-26
Более подробную информацию и исследование ...
ли базовый график ваших данных:
set xdata time
set timefmt "%s"
set timefmt x "%s"
set format x "%H:%M"
plot "lollo.data" using 1:2, "lollo.data" using 1:3
Хорошо, теперь установлен простой xrange от первого до последнего метки времени в данных.
set xrange [1330347541:1330351141]
plot "lollo.data" using 1:2, "lollo.data" using 1:3
^
all points y value undefined!
Woah !? В самом деле? Что не так с этим? Давайте сделаем «show xrange», чтобы узнать, что gnuplot считает, что диапазон.
show xrange
set xdata time
set xrange [ "1330347541" : "1330351141" ] noreverse nowriteback
Это выглядит нормально. Установите xrange на *: * (с чего начинается gnuplot (вы также можете сделать «set xrange restore», но это устанавливает его на [-10: 10] - не то, что мы хотим)), сделайте сюжет и THEN show xrange.
set xrange [*:*]
plot "lollo.data" using :2, "lollo.data" using :3
show xrange
set xdata time
set xrange [ * : * ] noreverse nowriteback # (currently ["0":"4"])
Хммм. 0: 4 !! Интересно. Похоже, что xrange работает не во времени по строкам данных. Так. Это ваша проблема? Предполагая, что xrange будет работать в метках времени, а не в строках? Зная это, вы можете установить xrange в терминах строк. == Ответ # 2
Теперь. Давайте построим данные с использованием timecolumn.
set xrange [*:*]
plot "lollo.data" using (timecolumn(1)):2, "lollo.data" using (timecolumn(1)):3
show xrange
set xdata time
set xrange [ * : * ] noreverse nowriteback # (currently ["-563022900":"-563014800"])
Whoooops! -563022900!? Отрицательная метка времени. Интересно. Итак, timestamp integer вычисляет странность/особенность в этой версии gnuplot?
Давайте попробуем установить простой xrange от первой до последней временной метки в данных и графике с использованием timecolumn.
set xrange [1330347541:1330351141]
plot "lollo.data" using (timecolumn(1)):2, "lollo.data" using (timecolumn(1)):3
^
all points y value undefined!
Это не нравится. Понятно, если он отключает отрицательные номера временных меток.
Давайте установить отрицательный диапазон МЕНЬШЕ один месяц секунд с помощью(), чтобы окружить расчет:
set xrange [(-563014800-2592000):-563014800]
plot "lollo.data" using (timecolumn(1)):2, "lollo.data" using (timecolumn(1)):3
Это работает. Для меня. gnuplot 4.6. Но откуда взялся -563014800 !?
$ date -d @1330347541
Mon 27 Feb 12:59:01 GMT 2012
$ dc -e '1330347541 16o p'
4F4B7E15
### ??? I didn't find any hex relation - looking for evidence of integer calc overflow/sign calc errors
# What offset
$ dc -e '0 1330347541 - 563022900 - p'
-1893370441
# taking a timestamp from today (7 march 2015) and doing a plot I saw gnuplot used xrange with -462448800 . . .
$ dc -e '0 1431000097 - 462448800 - p'
-1893448897
HAH! Это примерно то же самое. -1893448897 = ~ -1893370441 Это примерно 60 лет. ТАК. Используется 60-летнее смещение. В моей версии gnuplot. ИНТЕРЕСНО. и YEESH. Мне кажется, мне нужно вычесть около 1893456000 секунд для преобразования во внутреннюю метку времени gnuplot. На самом деле 1893370441 кажется ближе к тому, что нужно.
В другом месте в Интернете эпоха gnuplot, как говорят, находится в 2000 году. Это должно означать смещение 946684800. Но сейчас это не похоже на меня.
YMMV. Я полагаю.
С помощью этого смещения можно установить xrange от одного месяца назад Теперь, как это: == Ответ # 1
TIMEOFFSET=1893370441
set xrange [(system("date -d 'now' +%s")-2592000-TIMEOFFSET):(system("date -d 'now' +%s")-TIMEOFFSET)]
А как/почему это происходит в Gnuplot?
. От: http://gnuplot.10905.n7.nabble.com/30-year-time-offset-reading-nonuniform-matrix-s-input-td17231.html «К сожалению, я думаю, что это было, вероятно, меня я не использовал UNIX тогда, так 2000, казалось произвольным, как 1970.
Первоначально не предполагалось, что это будет виден пользователю в любом случае, , но это было обнаружено позже, что вы могли бы использовать числа, а не строки в вещах, как установка диапазонов для временных данных.
Я думаю, что я имел в виду, что, поскольку время хранился вещественное число , было нехорошо переносить большое смещение вокруг греха который ограничил разрешение , доступное для небольших номеров. Но я думаю, что, вероятно, это не так. .
Dave D»
Может быть [это] (http://stackoverflow.com/a/7833790/572616) ответ поможет ... – Woltan
Нет. Это не полезно для меня. :( – lollo