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

标签 graph plot gnuplot

我想为各种设备绘制一些数据,其中数据是这些设备处于某种状态的时间。

例如,给定设备ae,绘制它们进入警报然后退出的时间,例如设备 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
    ....

我不太确定如何开始——某种柱形图?

最佳答案

首先,您应该将输入文件调整为:

11:00 1 dev_a 闹钟开启
11:01 3 dev_c 闹钟关闭
11:10 2 dev_b 警报开启
12:00 1 dev_a 闹钟关闭
12:10 2 dev_b 警报开启
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

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

这几乎会给你你想要的东西。唯一缺少的是点之间的线。一种可能性是使用箭头(没有箭头头,所以实际上它是一条线)并构建一个脚本文件,以便一次绘制所有箭头。查看汤姆对这个问题的回答,以获得一个很好的例子:Plotting arrows with gnuplot

关于graph - gnuplot 绘制离散(?)时间数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4849613/

相关文章:

language-agnostic - CodeGolf : Find the Unique Paths

r - 如何在 R 中绘制图例而不绘制符号并且仍然使其很好地对齐?

r - 使用预测包从预测中获取预测点估计和间隔

GnuPlot 未在整个范围内绘制

java - GEF 自动布局

python - 如何从 Python 的邻接表中选择一个子矩阵?

algorithm - 网格中两点之间的路线

plot - Plots.jl 中的 "line"和 "path"系列类型有什么区别?

gnuplot - 如何用精确值标记 x 轴

graph - Gnuplot:使用矩阵格式的 4d 颜色图