1

HighCharts、HighStock、ライブデータ/ライブチャートに大きな問題があります。

チェックしてください :

http://jsfiddle.net/5RutC/160/

そして、シリーズの1番目(ランダムデータ)を削除してみてください。チャートの更新が停止します。シリーズの1番目を再度選択すると、すべての値で更新が続行されます。

どういうわけかこれを克服することは可能ですか、それともHighCharts / HighStockのバグですか?

ありがとう

HTMLコード:

<script src="http://code.highcharts.com/stock/highstock.js"></script>
<script src="http://code.highcharts.com/stock/modules/exporting.js"></script>

<div id="container" style="height: 500px; min-width: 500px"></div>​ 

Javascriptコード:

$(function() {

    Highcharts.setOptions({
        global : {
            useUTC : false
        }
    });

    // Create the chart
    window.chart = new Highcharts.StockChart({
        chart : {
            renderTo : 'container',
            events : {
                load : function() {

                    // set up the updating of the chart each second
                    var series = this.series[0];
                    var series1 = this.series[1];
                    var chart = this;
                    setInterval(function() {
                        var x = (new Date()).getTime(), // current time
                        y = Math.round(Math.random() * 100);
                        y1 = Math.round(Math.random() * 100);
                        series.addPoint([x, y], false, true);
                        series1.addPoint([x, y1], false, true);
                        chart.redraw();
                    }, 1000);
                }
            }
        },

        rangeSelector: {
            buttons: [{
                count: 1,
                type: 'minute',
                text: '1M'
            }, {
                count: 5,
                type: 'minute',
                text: '5M'
            }, {
                type: 'all',
                text: 'All'
            }],
            inputEnabled: false,
            selected: 0
        },

        title : {
            text : 'Live random data'
        },
        legend: {
                align: 'right',
                layout: 'vertical',
                verticalAlign: 'top',
                y: 45,
                enabled: 'true'
            },

        exporting: {
            enabled: false
        },

        series : [{
            name : 'Random data',
            data : (function() {
                // generate an array of random data
                var data = [], time = (new Date()).getTime(), i;

                for( i = -999; i <= 0; i++) {
                    data.push([
                        time + i * 1000,
                        Math.round(Math.random() * 100)
                    ]);
                }
                return data;
            })()
        },{
            name : 'Random data2',
            data : (function() {
                // generate an array of random data
                var data = [], time = (new Date()).getTime(), i;

                for( i = -999; i <= 0; i++) {
                    data.push([
                        time + i * 1000,
                        Math.round(Math.random() * 100)
                    ]);
                }
                return data;
            })()
        }]
    });

});

</ p>

4

1 に答える 1

2

highchartsは第1シリーズの処理が少し異なるようです。highstock#Axis.setExtremes()回避策は、次のように使用してxAxisの極値を明示的に設定できます。

var xAxis=chart.xAxis[0];
xAxis.setExtremes(xAxis.min,x,true,false); // Set extreme and redraw !

ライブチャートで最初のシリーズを非表示にする| Highchart&Highstock

于 2012-11-03T15:19:23.113 に答える