gnuplot время истекло возможно? - PullRequest
0 голосов
/ 04 января 2019

У меня есть данные CSV с отметкой времени, как это:

2019-01-04-11:01:31,1.593
2019-01-04-11:01:33,1.592
2019-01-04-11:01:36,1.593
2019-01-04-11:01:38,1.593

Я сейчас печатаю данные так:

set xdata time
set timefmt "%Y-%m-%d-%H:%M:%S"
set format x "%H:%M"
plot 'data.csv' using 1:2 w lines lw 1

Это печатает время на x от времени начала до конца в 24-часовом формате. Но как я могу отформатировать x как истекшее время от начала в минутах или часах, поэтому данные примера дадут 0 2 5 7 секунд в этом случае или минуты / часы с другими данными?

1 Ответ

0 голосов
/ 04 января 2019

попробуйте следующее:

### Time difference
reset session

$Data <<EOD
2019-01-04-11:01:31,1.593
2019-01-04-11:01:33,1.592
2019-01-04-11:01:36,1.593
2019-01-04-11:01:38,1.593
2019-01-05-00:05:00,1.590
2019-01-06-00:06:00,1.591
2019-01-07-00:07:00,1.592
EOD

set datafile separator ","
set xdata time
MyTimeFormat = "%Y-%m-%d-%H:%M:%S"
set timefmt MyTimeFormat
set format x "%tH:%tM"

set multiplot layout 2,1

# Solution 1: StartTime hardcoded
StartTime = strptime(MyTimeFormat,"2019-01-04-11:01:31")
plot $Data u ((timecolumn(1)-StartTime)):2 w lp pt 7  lc rgb "red"

# Solution 2: Take first line automatically as StartTime
set table $Dummy
    plot $Data u 0:(AutoStartTime = timecolumn(1,MyTimeFormat)) every ::0::0 with table
unset table
plot $Data u ((timecolumn(1)-AutoStartTime)):2 w lp pt 7 lc rgb "blue"

unset multiplot
### end of code

, что должно привести к: enter image description here

...