2012-11-06 153 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