1

我正在尝试绘制节点(机器)的可用性。为了节省收集到的数据的存储空间,而不是按固定间隔记录数据,我根据事件(添加、删除)记录它们。ADDED 表示“向上”,REMOVED 表示“向下/无法访问”

这是我拥有的示例数据:

2012-11-25 11:11:11.1234 - node added.
2012-11-25 15:01:20.1234 - node removed.
2012-11-25 18:12:12.1234 - node added.

假设,我想从时间范围内绘制图表:2012-11-24 到 2012-11-25(x 轴),向上/向下(y 轴),我该如何绘制图表?

4

2 回答 2

0

如果您将所有数据存储在一个数组中,只需使用 JavaScript 的内置Array.filter方法,并使用 JavaScript 的Date对象将时间戳转换为毫秒(请注意,它将四舍五入到最接近的千分之一秒 - 只有 3 个小数位)。

var startTime = Date.parse("2012-11-24"),
    endTime = Date.parse("2012-11-25") + 86400000; /* Add one day */

filteredData = data.filter(function(d) {
    var time = Date.parse(d.time);
    return (time >= startTime && time < endTime);
});

您可能需要使用日期范围,我假设您的意思是您想要介于 2012-11-24 和 2012-11-25 之间的数据。


如果您的数据在数据库中,另一种方法是简单地查询数据库以仅显示存在于时间范围内的数据(您可以调用一些 PHP 脚本 - 使用d3.text- 输出 JSON 并接受两个 GET 参数 startTime 和 endTime )。

d3.text("getNodes.php?startTime=" + startTime + "&endTime=" + endTime, function(json) {
    filteredData = JSON.parse(json);
});
于 2012-11-26T02:58:38.003 回答
0

我认为在 d3 工具(http://d3js.org)中有一些例子(我不记得是哪一个)

如果您浏览示例,您可以选择要使用的可视化类型。我认为您拥有的数据集将与您尝试执行的操作相匹配(您可能需要编写一个小运算符来将向上/向下注释转换为整数)。

于 2012-11-25T23:03:20.060 回答