gnuplot绘制离散(?)时间数据

时间:2011-01-31 10:07:38

标签: graph plot gnuplot

我想为各种设备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
    ....

我不确定如何开始 - 各种各样的专栏?

2 个答案:

答案 0 :(得分:2)

要开始使用,您应该将输入文件调整为:

11:00 1 dev_a报警 11:01 3 dev_c报警关闭
11:10 2开始报警 12:00 1 dev_a报警关闭
12:10 2开始报警 11:15 4 dev_d报警 11:25 4 dev_d闹钟关闭

然后你用

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

您需要第二列将警报的所有条目放在1 y轴标签上。

这几乎可以满足您的需求。唯一缺少的是点之间的界限。一种可能性是使用箭头(没有箭头,所以实际上它是一条线)并构建一个脚本文件,以便一次绘制所有箭头。查看Tom的回答并提供一个很好的例子:Plotting arrows with gnuplot

答案 1 :(得分:1)

如果您以某种方式设法将日志文件转换并拆分为以下格式:

#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轴描述仍然是一个问题,但你可以将它与Martins的答案结合起来。