如果只给出事件点,如何绘制图形?

时间:2012-11-25 22:23:20

标签: java excel graph d3.js diagram

我正在尝试绘制节点(机器)的可用性。为了节省收集数据的存储空间,我不是按固定间隔记录数据,而是根据事件(ADDED,REMOVED)记录数据。 ADDED表示“up”,REMOVED表示“down / unreachable”

以下是我的样本数据:

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轴),我如何绘制图形?

2 个答案:

答案 0 :(得分:0)

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

如果查看示例,可以选择要使用的可视化类型。 我认为你拥有的数据集会与你想要做的事情相匹配(你可能需要编写一个小运算符来将上/下注释转换为整数)。

答案 1 :(得分: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);
});