2017-03-07 22 views
0

xAxisのカスタム注文やフォーマットをハイチャートで定義できるかどうかは疑問です。私のデータセットはxAxisに使用される日付時刻を持っていますが、クライアントはxAxisに「期間」を表示するように指定しています。期間は30分のスライスとして指定されます。つまり、1日に48の期間があります。ハイチャート - カスタムX軸フォーマット

データの範囲は、前日の期間から現在の日までの期間です。 2017年7月3日の期間11の例2017年6月3日の期間11(10時00分)のために、X軸はそうのようになります。

enter image description here

現在、私はこれを行うことを試みてきたのをいじることにより、各点の実際のdateTimeは、Ymd H:i:{Period}に設定され、dateFormatを使用してxAxisの秒数のみを表示します。しかし、これはデータの間にギャップを残す2017-03-06 23:59:{期間48}と2017-03-07 00:00:{期間11}

+2

タイムスタンプに基づいてポイントを取得しましたが、X軸に正しいラベルがありませんか?私はモデル(タイムスタンプ)に触れません。私は関数f.xを作成します。 'createLabelFromTimestamp(タイムスタンプ)'。次に、HMSを抽出し、それらに基づいて期間を計算する。値が0の場合は、period-numberではなくdateを返します。 –

+0

xAxisのラベルにこれを表示するにはどうすればいいですか? –

+0

http://api.highcharts.com/highcharts/xAxis.labels.formatter –

答えて

0

あなたのシリーズデータが[<timestamp in milliseconds>, <value>]あなたはデータを単なるままにして、ラベルの計算と提示を簡単に行うことができます。

ラベルを表示するには、xAxis.labels.formatter(場合によってはtickInterval)を使用してください。たとえば:

xAxis: { 
    type: 'datetime', 
    labels: { 
     formatter: function() { 
      return createLabelFromTimestamp(this.value); 
     } 
    }, 
    tickInterval: 1800000 
} 

(質問で説明したように)時間数の計算は、このように、たとえば行うことができます。

function createLabelFromTimestamp(timestamp) { 
    var hms = timestamp % (1800000 * 48); 
    var period = hms/1800000; 

    // if 0-th period, show date instead 
    if(period == 0) { 
     var date = new Date(timestamp); 
     return date.toDateString(); 
    } 
    // otherwise show period number 
    else { 
     return period; 
    } 
} 

は、我々は単に何を見つけるために、昼と分裂を離れモジュロ30-

実際にはthis JSFiddle exampleを参照してください。

関連する問題