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