Построение временного ряда + смещение не работает - PullRequest
0 голосов
/ 03 апреля 2020

Я хочу построить два временных ряда в разных форматах в одном и том же формате, но один из этих двух не работает для меня.

Так вот в чем дело:
У меня есть время серия в секундах с заданным временем начала t0.

Итак, серия выглядит следующим образом:
Время начала: t0

0 -21.0028
5 -21.0067
10 - 21.007
...
17875 -20.9943

Я хочу нанести этот временной ряд на время (например, 9:03) вместо секунд, и я хочу показать другой временной ряд, где данные приведены в стандартное время на том же графике.

Я могу построить вторую серию просто отлично. Но когда я пытаюсь построить первую серию, измеренные точки начинают прыгать с x = 100 до 0, а затем назад и вперед. Кроме того, я не могу добавить смещение t0 к серии.

Вот что я пытался (t0 = 32615 с), чтобы получить хотя бы первый построенный временной ряд:

gnuplot> установить время xdata
gnuplot> установить timefmt "% S"
gnuplot> установить формат x "% H:% M"
gnuplot> plot 'measure.dat' u (timecolumn (1) +32615): 2 ш, ' measure2.dat "u 1: 2 wl

Кто-нибудь знает, как я могу построить эти временные ряды?

Заранее спасибо!

1 Ответ

0 голосов
/ 04 апреля 2020

Мое понимание вашей проблемы состоит в том, что у вас есть два набора данных с разными временными данными. Я полагаю, одну секунду, а другую то, что вы называете «стандартной», например 09:03:00. И вы хотите сместить один с секундами на какое-то значение. Внутренне даты и время хранятся в секундах с 1 января 1970 года 00:00:00. Поскольку первый набор данных уже в секундах, просто добавьте значение shift. Вам нужно конвертировать ´ $ Data2´ в секунды через timecolumn(1,"%H:%M:%S"). И способ отображения меток xti c устанавливается через set format x "%H:%M" time. Также проверьте help timecolumn. Это также зависит от того, хотите ли вы отображать время дня, то есть с 00:00 до 23:59 или хотите, чтобы часы отображались> 24 часа. Тогда вы можете использовать "%tH:%tM:%tS" в качестве формата. Чек help time_specifiers.

Код:

### shifted time data
reset session

# create some test data
set print $Data1
    do for [i=1:20000:200] {
        print sprintf("%d %.3f",i,sin(i/2000.))
    }
set print
set print $Data2
    do for [i=30000:50000:200] {
        print sprintf("%s %.3f",strftime("%H:%M:%S",i),2*sin(i/2000.-2.5))
    }
set print

set format x "%H:%M" time
set key top center

set multiplot layout 2,1
    plot $Data1 u 1:2 w lp ti "Data1", \
         $Data2 u (timecolumn(1,"%H:%M:%S")):2 w lp ti "Data2"

    t0 = 30000
    plot $Data1 u ($1+t0):2 w lp ti "shifted Data1", \
         $Data2 u (timecolumn(1,"%H:%M:%S")):2 w lp title "Data2"
unset multiplot
### end of code

Результат:

enter image description here

...