2012-05-11 13 views
7

Estoy haciendo un dibujo de un diagrama alto usando la función dinámica, no está desgarrando después de la función llamada. más tarde, si cambio el tamaño de la ventana, ¿se renderiza la información? ¿Alguna razón específica para esto?Creación dinámica de Highchart: no se representa correctamente

mi función:

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 comprueban mi jsFiddle.

http://jsfiddle.net/w46Sr/

Respuesta

4

es necesario agregar chart.redraw();

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

¿cómo se activa mientras se cambia el tamaño de la ventana? – 3gwebtrain

+0

Supongo que tienen window.resize handler y llaman a redibujar en él. –

+0

tiene sentido. Gracias. – 3gwebtrain

8

El problema es que se establece el parámetro conjunto de addSeries como falso.
En este caso, debe establecer como verdadero y volverá a dibujar el gráfico después de agregar la nueva serie.

Para una serie.

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

Como en el siguiente ejemplo.
jsfiddle

O si desea agregar más de un serie en cada clic sólo hay que cambiar una cosa.

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

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

Va a añadir todos los de su serie y después de que volver a dibujar el gráfico, por lo que no tiene que volver a dibujar el gráfico cada vez que se agrega una nueva serie.

Cuestiones relacionadas