1

簡単なグラフを書いたところです。このグラフでは、線がマーカーの前に移動しているため、非常に奇妙に思えます。これはアニメーションのプロパティに関するものだと確信していますが、問題の原因はわかりません。

ここで私のコードを調べることができます

次のコードで値を設定します

function () {

    // set up the updating of the chart each second
    var series1 = this.series[0];
    var series2 = this.series[1];
    var series3 = this.series[2];

    setInterval(function () {
        var x = (new Date()).getTime(), // current time
            y = Math.random();
        series1.addPoint([x, y], true, true);

        var x = (new Date()).getTime(), // current time
            y = Math.random();
        series2.addPoint([x, y], true, true);

        var x = (new Date()).getTime(), // current time
            y = Math.random();
        series3.addPoint([x, y], true, true);

    }, 1000);

}
4

2 に答える 2

2

これはaddPointが原因で、すべてのグラフを3回再描画します。ですから、チャートを1/2ポイント再描画せず、最後にのみ再描画することをお勧めします。

http://jsfiddle.net/md7hW/4/

setInterval(function() {
                            var x = (new Date()).getTime(), // current time
                                    y = Math.random();
                            series1.addPoint([x, y], false, true);

                            var x = (new Date()).getTime(), // current time
                                    y = Math.random();
                            series2.addPoint([x, y], false, true);

                            var x = (new Date()).getTime(), // current time
                                    y = Math.random();
                            series3.addPoint([x, y], true, true);

                        }, 1000);

http://api.highcharts.com/highcharts#Series.addPoint()

于 2013-03-18T15:35:48.623 に答える
0

@sebastian、私を正しい方向に向けてくれてありがとう。私も同様の問題に直面していましたが、動的データを扱っていました。ポイントを追加するときに再描画パラメーターにfalseを渡してから、チャートオブジェクトで再描画を呼び出して、私の場合に最適に機能することがわかりました。

var chart, REFRESH_DELAY = 1000;
function requestData(){
    $.ajax({
        url: "/reports/realtime",
        format:"json",
        cache: false,
        success: function (data) {
            for (var i = 0 ; i < data.length && i < chart.series.length; i++) {
                var series = chart.series[i], 
                    shift = series.data.length > 20,
                    point = data[i];
                series.addPoint(point, false, shift);
            }
            chart.redraw();
            setTimeout(requestData, REFRESH_DELAY);
        }
    });
}
于 2013-03-20T16:58:57.993 に答える