График gnuplot дискретных (?) данных времени - PullRequest
2 голосов
/ 31 января 2011

Я хотел бы gnuplot некоторые данные для различных устройств, где данные - это время, когда эти устройства находятся в определенном состоянии.

Например, для данных устройств от a до e , график времени, когда они переходят в состояние тревоги, а затем выход, например устройство a переходит в тревогу 11:00, из тревоги в 12:00 и т. д.

dev_a |   x------x
dev_b |     x-----x
dev_c | x-x
dev_d |           x-------------------
dev_e |     x-----x       x-----x
      |_______________________________
          |      |     |     |     |
        11:00  12:00 13:00 14:00 15:00

Входные данные должны были бы быть получены из журналов, подобных:

    ....
11:00 dev_a alarm on
    ....
11:00 dev_c alarm off
11:10 dev_b alarm on
    ....
12:00 dev_a alarm off
    ....

Я не совсем уверен, с чего начать & mdash; сортировка по столбцам?

Ответы [ 2 ]

2 голосов
/ 31 января 2011

Для начала вам нужно настроить входной файл на:

11: 00 1 dev_a тревога включена
11:01 3 dev_c будильник выключен
11:10 2 dev_b Alarm on
12:00 1 dev_a будильник выключен
12:10 2 dev_b alarm on
11:15 4 dev_d alarm on
11:25 4 dev_d будильник выключен

тогда вы используете

set xdata time
set timefmt "%H:%M"
plot "file.txt" using 1:2:ytic(3) with points

Вам нужен второй столбец для размещения всех записей тревоги a на метке оси 1.

Это даст вам почти то, что вы хотите. Единственное, чего не хватает - это линии между точками. Возможность состоит в том, чтобы использовать стрелки (без заголовка стрелки, так что на самом деле это линия) и создать файл сценария, чтобы построить все стрелки одновременно. Посмотрите на ответ Тома на этот вопрос для хорошего примера: Построение стрелок с помощью gnuplot

1 голос
/ 31 января 2011

Если вам как-то удастся преобразовать и разбить ваши файлы журналов в какой-нибудь формат, подобный следующему:

#time  dev_a
11:00   1
12:00   1
#time  dev_b
11:10  2
12:10  2

...

Это формат времени в числах с плавающей точкой, отдельные файлы для каждого устройства, включение / выключение будильника в const dev_id. Построение становится легким:

set style data linespoints
set yrange [0:5]
set xdata time
set timefmt "%H:%M"
plot "dev_a.data" using 1:2 title "dev_a", "dev_b.data" using 1:2 title "dev_b", ...

Хорошо, описание по оси y все еще является проблемой, но вы можете объединить это с ответом Мартинса.

...