2012-05-11 11 views
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

आप chart.redraw जोड़ने के लिए() की जरूरत है;

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

तो विंडो का आकार बदलने के दौरान यह कैसे ट्रिगर कर रहा है? – 3gwebtrain

+0

मुझे लगता है कि उनके पास window.resize हैंडलर है और उस पर रेड्रो कॉल करें। –

+0

समझ में आता है। धन्यवाद। – 3gwebtrain

8

समस्या आप addSeries के रूप में झूठी के सेट पैरामीटर सेट है।
इस मामले में आपको सत्य के रूप में सेट करना होगा और नई सीरी जोड़ने के बाद चार्ट को फिर से खींचा जाएगा।

एक सेरी के लिए।

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

निम्नलिखित उदाहरण की तरह।
jsfiddle

या आप प्रत्येक में एक सेरी से अधिक जोड़ना चाहते हैं तो क्लिक करें तुम सिर्फ एक बात बदलना होगा।

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

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

आप अपने श्रृंखला के सभी जोड़ देगा और उसके बाद चार्ट पुनः बनाने, ताकि आप अपने चार्ट हर बार जब आप एक नया सेरी जोड़ने पुनः बनाने का नहीं है।

संबंधित मुद्दे