2012-11-06 214 views
0

我有以下问题,如下图所示,其中水平滴答滴答似乎是随机的,不要尝试排列数据。我的数据和代码也在下面。任何帮助与此赞赏。Flot - x轴的滴答滴答与实际数据不一致

图片位于http://imgur.com/VVrvi(抱歉,不能附加图片还)

代码:

$.plot(placeholder, 
      data, 
      { 
       yaxes: [ { tickFormatter: centFormatter, max: 101, min: -0.1, tickSize: 20 }, { position: "right", min: -0, } ], 
       xaxes: [ { mode: "time", minTickSize: [1, "day"], } ], 
       series: { 
        lines: { show: true }, 
        points: { show: true } 
       }, 
       grid: { hoverable: true, clickable: true }, 
    }); 

数据为蓝线:

[2012-08-19] => 3612220 
[2012-08-26] => 3570080 
[2012-09-02] => 3576040 
[2012-09-09] => 3597380 
[2012-09-16] => 3593040 
[2012-09-23] => 3579480 
[2012-09-30] => 3638840 
[2012-10-21] => 13 

我尝试了各种方案供蜱,minTickSize等..没有运气。

回答

1

问题是您的日期数据来自您的服务器的时区,然后通过在浏览器中的flot呈现UTC。您需要仔细阅读时间系列数据部分的documentation

默认行为是Flot始终按照UTC的 显示时间戳。原因在于核心Javascript日期对象不支持其他固定时区的 。通常您的数据是在另一时间 区域,因此可能需要一点点调整以解决此限制。

想象一下,您的服务器的时区是UTC + 8小时。当你在2012-08-19的服务器上创建时间戳时,你实际得到的是2012-08-19上午8点。解决这个问题的最简单的方法是用UTC生成时间戳(这在许多语言中都是可能的,示例在flot文档中给出)。如果这是不可能的,只是毫秒的正确数量添加到您生成的时间戳,在我们的例子中的情况下,应该是这样的(伪代码):

myTz = new Date('2012-08-19').toTimestamp(); //this is 8am on the 19th in milliseconds 
myTz = myTz - 8*60*60*1000; //this is 8 hours 
+0

感谢您的回答,现在,这似乎是显而易见的。这也让我意识到为什么其他一些事情表现奇怪。 – superphonic