我正在尝试绘制节点(机器)的可用性。为了节省收集数据的存储空间,我不是以固定的时间间隔记录数据,而是根据事件(添加、删除)进行记录。添加表示“向上”,删除表示“向下/无法到达”
以下是我拥有的示例数据:
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轴)的图形,如何绘制该图形?
发布于 2012-11-26 07:03:20
我想在d3工具(http://d3js.org)中有一些例子(我记不清是哪一个了)。
如果你看过这些例子,你可以选择你想要使用的可视化类型。我认为您拥有的数据集将与您尝试做的事情相匹配(您可能需要编写一个小操作符来将up/down注释转换为整数)。
发布于 2012-11-26 10:58:38
如果您将所有数据存储在一个数组中,只需使用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之间的数据。
如果您的数据在数据库中,另一种方法就是简单地查询数据库,使其只显示时间范围内的数据(您可以使用d3.text
调用一些PHP脚本,该脚本输出JSON并接受两个GET参数,startTime和endTime)。
d3.text("getNodes.php?startTime=" + startTime + "&endTime=" + endTime, function(json) {
filteredData = JSON.parse(json);
});
https://stackoverflow.com/questions/13556189
复制相似问题