2

highstock を使用して異なる時間範囲のシリーズをプロットしましたが、シリーズを追加/削除した後、ナビゲーターの時間範囲が正しく更新されませんでした。コードはhttp://jsfiddle.net/QssUu/1/で共有されています

$(function() {

$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?', function(data2) {
    // Create the chart
    window.chart = new Highcharts.StockChart({
        chart : {
            renderTo : 'container'
        },

        rangeSelector : {
            selected : 5
        },

        title : {
            text : 'AAPL Stock Price'
        },

        series : [{
            name : 'AAPL',
            data : data2,
            tooltip: {
                valueDecimals: 2
            }
        }]
    },function(chart){


        var newSeries = {
            name : 'new',
            data : [[1010112000000,55],[1136246400000,60.10],[1138752000000,65.03],[1204502400000,70.41],[1257120000000,75.47],[1349049600000,80.59]]
        };

        $('#btn1').click(function(){
            chart.addSeries(newSeries); //add new serie
        });

        $('#btn2').click(function(){
            chart.series[0].remove(); //remove serie from chart
        });            
    });
});

以下は、私が行った手順のリストです。

  1. チャート rangeSelector を「all」に設定して、チャートにシリーズ 1 を作成します。
  2. 「シリーズ 2 を追加」をクリックして、チャートにシリーズ 2 を作成します。シリーズ 1 と 2 (2001 年 12 月 31 日から開始) の両方をカバーするように、ナビゲーターの時間範囲が更新されることを期待しています。ただし、まだシリーズ 1 しか含まれていません。
  3. グラフからシリーズ 1 を削除するには、[シリーズ 1 を削除] をクリックします。シリーズ 2 の時間範囲のみを含むようにナビゲーターが更新されることを期待していますが、シリーズ 1 の時間範囲はまだ含まれています。

シリーズを追加/削除した後にナビゲーターの時間範囲を更新する方法を教えてもらえますか? rangeSelector の「from」と「to」もそれに応じて更新できるとよいでしょう。私のアプリケーションでは、2 つ以上のシリーズを使用し、いつでも任意のシリーズを追加/削除することに注意してください。したがって、ソリューションは 2 つ以上のシリーズで機能するはずです。

前もって感謝します!

アレックス

4

2 に答える 2

2

addSeries をクリックした後、setExtremes()を使用してカスタム範囲を設定できます。

于 2013-09-02T09:34:37.210 に答える
2

ここにjsfiddleがあります http://jsfiddle.net/A8kY9/

id をナビゲーターに追加します

navigator: {
    enabled: true,
    series: {
            id: 'navigator'
    }
},

            var nav = chart.get('navigator');
            nav.setData(newSeries.data);
            chart.xAxis[0].setExtremes();

それがより明確であることを願っています パトリック

于 2014-03-26T15:24:30.493 に答える