График событий с датами на оси X и временем на оси Y - PullRequest
0 голосов
/ 31 октября 2019

Можете ли вы установить timefmt в одну сторону для X и в другую для Y? Мои данные выглядят так:

2019-05-08 00:14:29.000
2019-05-08 00:14:27.000
2019-05-07 22:08:09.000
2019-05-07 22:08:08.000

Мой код выглядит так:

## X axis
set xdata time
set timefmt "%Y-%m-%d"
set format x "%m:%d"
set xrange ["2019-01-01":"2019-10-30"]
set xlabel "Date (mm:dd)" font "Times, 12"

# Y axis
set ydata time
set timefmt "%H:%M:%S"
set format y "%H:%M"
set yrange ["00:00":"23:59"]
set ylabel "Time Of Day(hh:mm)" font "Times, 12"

plot "file.data" using 1:2 with points

Я вижу, что оси выглядят правильно, но данных нет. Если я удаляю второй 'set timefmt', он жалуется на отсутствие данных Y.

Я не видел пример этого с использованием gnuplot. Какие-либо предложения? У меня много сотен точек данных и более 50 файлов данных.

Ответы [ 2 ]

1 голос
/ 31 октября 2019

Лучше всего сделать это без использования timefmt или set *data time, хотя это делает настройку и явный xrange более громоздкими.

$TIMES << EOT
2019-01-08 00:14:29.000
2019-05-08 03:14:27.000
2019-05-07 22:08:09.000
2019-08-07 22:08:08.000
EOT

set xtics time format "%m/%d"
set ytics time format "%H:%M"
set xlabel "Date (mm/dd)" font "Times, 12"
set ylabel "Time Of Day(hh:mm)" font "Times, 12"
set key tmargin reverse Left

set xrange [strptime("%Y-%m-%d","2019-01-01"):strptime("%Y-%m-%d","2019-10-30")]

plot $TIMES using (timecolumn(1,"%Y-%m-%d")) : (timecolumn(2,"%H:%M:%S")) with points

enter image description here

1 голос
/ 31 октября 2019

Я также регулярно путаюсь и озадачен форматом данных / времени. Я подозреваю, что если у вас есть две оси времени, вы указываете формат ввода сначала set timefmt "%Y-%m-%d", а затем set timefmt "%H:%M:%S". Это не особенно посвящено оси. Таким образом, когда дело доходит до черчения, gnuplot принимает текущий (последний) формат, который, конечно, не подходит для даты в столбце 1. Но я могу ошибаться с этим объяснением.

В любом случае, если вы укажетеформат в команде сюжета (timecolumn(1,"%Y-%m-%d")) должно быть в порядке.

код:

### two date/time axes
reset session

$Data <<EOD
2019-01-08 10:14:29.000
2019-05-08 00:14:27.000
2019-05-07 14:08:09.000
2019-05-07 22:08:08.000
2019-10-07 12:08:08.000
EOD

## X axis
set xdata time
set timefmt "%Y-%m-%d"
set format x "%m/%d"
set xrange ["2019-01-01":"2019-10-30"]
set xlabel "Date (mm/dd)" font "Times, 12"

# Y axis
set ydata time
set timefmt "%H:%M:%S"
set format y "%H:%M"
set yrange ["00:00":"23:59"]
set ylabel "Time Of Day(hh:mm)" font "Times, 12"

plot $Data using (timecolumn(1,"%Y-%m-%d")):2 w p pt 7

### end of code

Результат:

enter image description here

...