如何在dygraph中显示YYYY-MM-DD HH:MM:SS的范围



我有一个csv,用于收集数据。CSV看起来像这样:

date_time,temp
2014-10-14 03:37:56,21.50
2014-10-14 03:53:04,21.56
2014-10-14 04:08:12,21.50
2014-10-14 04:23:19,21.50
2014-10-14 04:38:27,21.44
2014-10-14 04:53:35,21.50
2014-10-14 05:08:43,21.50
2014-10-14 05:23:51,21.44
2014-10-14 05:38:58,21.38
2014-10-14 05:54:06,21.44
2014-10-14 06:09:14,21.44
2014-10-14 06:24:22,21.38
2014-10-14 06:39:29,21.38
2014-10-14 06:54:37,21.38

然后我在一个html文件中有这样的代码:

<html>
<head>
<script type="text/javascript" src="dygraph-combined.js"></script>
</head>
<body>
<div id="labeldiv" style="width:100%; height:20px;"></div>
<div id="graphdiv" style="width:100%; height:600px;"></div>
<script type="text/javascript">
  g = new Dygraph( 
    document.getElementById("graphdiv"),
    "test.csv",
    {
    strokeWidth: 2.5,
    labelsSeparateLines: false,
    labelsDiv: "labeldiv",
    legend: "always",
    showRangeSelector: true,
    } 
  );
</script>
</body>
</html>

它工作正常,但我希望有可能只选择特定的日期和时间段,而不是从CSV显示整个时间段。我尝试指定像dateWindow: ["2014-10-14 04:53:35","2014-10-14 06:09:14"]这样的参数,但它似乎不起作用。

有人能帮我吗?有可能用我正在尝试的方式来做吗?在dateWindow中使用之前,我是否必须将YYYY-MM-DD HH:MM:SS转换为其他内容?

dateWindow的文档说明:

最初放大图形的某个部分。是[最早,最新],其中最早/最新是自epoch以来的毫秒。如果x轴的数据是数字,dateWindow中的值也必须是数字。

类型:两个数字的数组
默认值:显示输入的全部范围

所以你应该设置:

dateWindow: [Date.parse("2014-10-14 04:53:35"),
             Date.parse("2014-10-14 06:09:14")]

我一直在使用一种变通方法。我从php页面调用dygraph,该页面选择要显示的数据(最近24小时、上周、上个月或所有数据)。一个优点是,对于大数据文件,您不需要发送所有内容,而且它可以明显更快,这不是因为dygraph很慢(事实并非如此),而是因为您可以通过有线发送的数据更少。加载选定的数据后,您可以轻松地选择较小的部分,但如果您想要较大的选择,则必须返回调用页面。

使用mysql数据库存储延时数据对我来说似乎有些过头了,但这是一种方法。我通常会为需要访问和修改单个记录的情况保留数据库,可能是由多个同时使用的用户访问和修改,或者需要根据多个标准对数据进行排序。对于延时数据,附加到其中的逗号分隔的平面文件要高效得多。在我的例子中,在保存到文件之前,我将日期/时间戳转换为Unix时间变量格式。这使得以后选择时间框架变得非常容易。然后,我可以在将时间变量发送到浏览器之前,用PHP将其转换为可读的时间/日期字符串格式,或者在发送到dygraph之前,用JavaScript将其转换成可读的时间或日期字符串格式。

最新更新