如果仅给出事件点,如何绘制图表?

我试图绘制节点(机器)的可用性。 为了节省收集到的数据的存储空间,而不是按照固定的时间间隔logging数据,我根据事件logging(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轴),我该如何绘制图表?

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

如果您仔细查看示例,则可以select要使用的可视化types。 我认为你所拥有的数据集将与你正在尝试做的事情相匹配(你可能需要编写一个小操作符来将上/下注释转换为整数)。

如果将所有数据存储在数组中,只需使用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); }); 

你可能需要玩的date范围,我假设你的意思是你想要的数据是在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); });