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,感谢您为我指明正确的方向。我遇到了类似的问题,但处理的是动态数据。我发现在添加我的点时为 redraw 参数传递 false ,然后在图表对象上调用 redraw 以最适合我的情况。

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 回答