7

HighCharts を使用して、月単位で作成されたユーザー数をプロットしました。x軸に月を表示することができ、pointIntervalを以下のように設定しました

ポイント間隔:24 * 3600 * 1000 * 31

しかし、これはやみくもに与えられたものであり、点を正しくプロットしません。毎月1日にポイントをプロットする必要があります。ただし、上記の間隔は、月の初日ではなく月単位でポイントをバインドするのに役立ちます。このでは、私の問題について説明します。ツールチップは明確なアイデアを提供します。これが私のコードです

series: [{
        type: 'area',
        name: 'CDP Created',
        pointInterval: 24 * 3600 * 1000 * 31,
        pointStart: Date.UTC(2005, 0, 01),          
        dataGrouping: {
            enabled: false
        },
        data: [0, 0, 0, 0, 0, 0, 0, 148.5, 216.4, 194.1, 95.6, 54.4]

    }]

月に応じて pointInterval を設定する方法はありますか。上記のように単に pointInterval を指定すると、31 日ごとに計算されるためです。これは、月が 28 日または 30 日ある場合に問題を引き起こします。それを達成する方法。また、コンテナ div の幅を調整すると、x 軸の値が正しく表示されなくなります。前もって感謝します

4

3 に答える 3

0

日付タグを手動で生成し、次のようにデータ リストに追加できます。

series: [{
        data: [["Jan 1, 2005", 0], ["Feb 1, 2005", 0], ..., ["Dec 1, 2005", 54.4]],
        pointInterval: 24 * 3600 * 1000 * 31,
        pointStart: Date.UTC(2005, 0, 01)         
    }]

このように、pointInterval をそのまま (x 軸の概算ビューの場合) 使用し、(正確なデータの場合) グラフのドットでタグを使用できます。

チャートを拡大すると、ドットと x 軸の目盛りがわずかに重なっていることがわかりますが、完全な位置合わせが必要ない場合は、これで問題ありません。

日付タグ (たとえば、「2005 年 1 月 1 日」) を生成するには、次のようにします。

var data = [0, 0, 0, 0, 0, 0, 0, 148.5, 216.4, 194.1, 95.6, 54.4];
var date = new Date("January 1, 2005");
var monthNameList = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];

for (i = 0; x < data.length; i++)
{
   var stringDate = monthNameList[date.getMonth()] + " 1, " + date.getFullYear();
    resultList.push(stringDate);
    date.setMonth(date.getMonth() + 1);
}

次に、各項目をデータに追加します。

編集済み:上記の最初の回答は、日付タグを生成するための非常に適切な方法だと思います。(JSFiddleを確認してください)

于 2015-01-19T15:36:18.837 に答える