0

如下图所示,我遇到了以下问题,其中水平刻度似乎是随机的,并且不尝试与数据对齐。我的数据和代码也在下面。对此的任何帮助表示赞赏。

图片位于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 等。没有运气。

4

1 回答 1

1

问题是您的日期数据来自您服务器的时区,然后通过浏览器中的浮点数以 UTC 呈现。您需要仔细阅读文档的时间序列数据部分。

默认行为是 Flot 始终根据 UTC 显示时间戳。原因是核心 Javascript Date 对象不支持其他固定时区。通常您的数据位于另一个时区,因此可能需要进行一些调整才能解决此限制。

假设您的服务器的时区是 UTC+8 小时。当您在服务器上为 2012 年 8 月 19 日创建时间戳时,您实际得到的是 2012 年 8 月 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
于 2012-11-06T16:23:07.150 回答