7

動的関数を使用してハイチャート描画を作成していますが、関数が呼び出された後はまったく描画されません。後でウィンドウのサイズを変更すると、データがレンダリングされますか?これには具体的な理由がありますか?

私の機能:

var chart;
$(document).ready(function(){

    function randomData(len){
        var arr = [];
        for(var i = 0; i<len;i++){
            arr.push(Math.random())
        }
        return arr;
    }

    var options = {
        chart:{
            renderTo:'graph',
            type:'line'
        },
        title:{
            text:null
        },
        xAxis: {
            plotBands: [{
                    from: 5,
                    to: 6,
                    color: 'yellow',
                    label: {
                            text: 'Yellow'
                    }
            }, {
                    from: 10,
                    to: 11,
                    color: 'green',
                    label: {
                            text: 'Green'
                    }
            }]
    },
        plotOptions:{
            series:{
                animation:false,
                dataLabels:{enabled:true,formatter:function(){return Highcharts.numberFormat(this.y)}}
            }
        }
    }

    chart = new Highcharts.Chart(options);
    var i = 1, s1,s2,s3,s4;

    function createChart(){
        s1 = chart.addSeries({data:randomData(20),name:'Line'+i},false);
    }

    $('#create').click(function(){  createChart() });

})

plsは私のjsfiddleをチェックします。

http://jsfiddle.net/w46Sr/

4

2 に答える 2

8

問題は、 addSeriesの設定パラメーターをfalseに設定することです。
この場合、trueに設定する必要があり、新しいシリーズを追加した後にグラフが再描画されます。1つのシリーズ

の場合。

chart.addSeries({data:randomData(20),name:'Line'+i},true);

次の例のように。
jsfiddle

または、クリックごとに複数のシリーズを追加する場合は、1つだけ変更する必要があります。

function createChart(seriesData){
    s1 = chart.addSeries(seriesData,false);
}

$('#create').click(function(){
    createChart(seriesData);
    chart.redraw();
});

すべてのシリーズを追加し、その後チャートを再描画するので、新しいシリーズを追加するたびにチャートを再描画する必要はありません。

于 2012-05-11T11:28:51.417 に答える
4

chart.redraw();を追加する必要があります。

function createChart(){
    s1 = chart.addSeries({data:randomData(20),name:'Line'+i},false);
    chart.redraw();
}
于 2012-05-11T10:39:42.613 に答える