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

問題は、日付データがサーバーのタイムゾーンから取得され、ブラウザの flot によって 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 に答える