Если я правильно понимаю ваш вопрос, вам нужен ваш счетчик, а также первая и последняя дата в ключе. Один из возможных способов - сделать это за два прохода. Первая команда plot на самом деле ничего не отображает, но получает нужные значения в переменные. Возможно, есть более простые способы сделать это.
Редактировать: вместо изначально $0==0
лучше использовать c==0
, особенно когда ваши данные могут иметь одну или несколько пустых строк.
Объяснение:
(c==0 ? Start=timecolumn(1,myTimeFmt) : End=timecolumn(1,myTimeFmt)):(c=c+1,NaN) not
Проверка help operators ternary
и help operators binary
.
Команда построения в основном циклически повторяет строки данного столбца ( с). Если c
равно 0
(что имеет место только в начале l oop), присвойте значение времени столбца 1 переменной Start
, иначе присвойте значение времени столбца 1 переменной End
. В конце l oop End
будет содержаться последнее значение столбца 1. Результатом этого троичного оператора (c==0? a:b)
будет в основном значение x для построения графика. Однако значение y равно NaN
, поскольку (c=c+1,NaN)
является последовательной оценкой, то есть c
будет увеличено, но результат будет NaN
. NaN
не будет отображаться, поэтому первая команда plot ничего не будет выводить. not
является аббревиатурой для notitle
, т.е. без ввода ключа. Надеюсь, теперь немного понятнее.
Код:
### get datavalues into the key
reset session
$Data <<EOD
16:01:00 1.2 1.3
16:16:00 2.2 2.3
16:31:00 3.2 3.3
16:46:00 4.2 4.3
17:01:00 5.2 5.3
17:16:00 6.2 6.3
17:31:00 7.2 7.3
EOD
myTimeFmt = "%H:%M:%S"
set format x "%H:%M" time
set key top left
c=0
plot $Data u (c==0?Start=timecolumn(1,myTimeFmt):End=timecolumn(1,myTimeFmt)):(c=c+1,NaN) not, \
$Data u (timecolumn(1,myTimeFmt)):3 w lp pt 7 \
title sprintf("Count %d: ",c)." from ".strftime(myTimeFmt,Start)." to ".strftime(myTimeFmt,End)
### end of code
Результат:
Добавление: (отсчет по оси X и время по оси Y, расчет продолжительности)
Код:
### get datavalues into the key
reset session
$Data <<EOD
16:01:00 1.2 1.3
16:16:00 2.2 2.3
16:31:00 3.2 3.3
16:46:00 4.2 4.3
17:01:00 5.2 5.3
17:16:00 6.2 6.3
17:31:00 7.2 7.3
EOD
myTimeFmt = "%H:%M:%S"
set format y "%H:%M" time
set key at graph 0.5, 0.9
set offsets graph 0.05, graph 0.05, graph 0.05, graph 0.05
c=0
plot $Data u (c=c+1,NaN):(c==1?Start=timecolumn(1,myTimeFmt):End=timecolumn(1,myTimeFmt)) notitle, \
$Data u ($0+1):(timecolumn(1,myTimeFmt)) w lp pt 7 \
title sprintf("Counts %d",c)."\n from ".strftime(myTimeFmt,Start)." to ".strftime(myTimeFmt,End)."\nDuration: ".strftime("%tH:%M",End-Start)
### end of code
Результат: