2013-05-02 18 views
7

Sto cercando di rendere il mio grafico di rendering pieno del 100% del div padre senza successo. C'è un modo per rimuovere lo spazio sui lati sinistro e destro?Problema di larghezza massima di HighCharts

http://jsfiddle.net/sKV9d/

var chart = new Highcharts.Chart({ 
    chart: { 
     renderTo: 'chart', 
     margin: 0, 
     width: 300, 
     height: 200, 
     defaultSeriesType: 'areaspline' 
    },  

    series: [{ 
     data: [33,4,15,6,7,8, 73,2, 33,4,25],  

     marker: { 
      enabled: false 
     } 
    }] 
}); 

risposta

9

Se si rimuovono le opzioni width: 300, height: 200 come questo:

var chart = new Highcharts.Chart({ 
chart: { 
    renderTo: 'chart', 
    margin: 0, 
    defaultSeriesType: 'areaspline' 
},  

... 

riempirà automaticamente il contenitore.

+6

Ho provato questo e non funziona –

+0

Come ha detto Highcharts doc: una larghezza esplicita per il grafico.Per impostazione predefinita (quando null) la larghezza viene calcolata dalla larghezza dell'offset dell'elemento contenitore. Il valore predefinito è null. funziona –

5

Prova questo:

var height= $("#container").height(); 
var width= $("#container").width(); 

var chart = new Highcharts.Chart({ 
    chart: { 
     renderTo: 'chart', 
     margin: 0, 
     width: width, 
     height: height, 
     defaultSeriesType: 'areaspline' 
    },  

    series: [{ 
     data: [33,4,15,6,7,8, 73,2, 33,4,25],  

     marker: { 
      enabled: false 
     } 
    }] 
}); 
+0

Ha ancora lacune purtroppo. Il grafico stesso (svg) è a tutta larghezza, sembra solo che i dati stessi abbiano una lacuna. – user2341636

4

ho risolto da

window.dispatchEvent(new Event('resize')); 

UPD:

  1. Remov e larghezza e altezza attributi.
  2. aggiungere nel css il seguente codice per adeguare blocco grafico 100% di #container:

grafico {width: 100%; altezza: 100%; }

2a. un altro modo è - nel caso se non è possibile definire dimensione del contenitore durante la fase di "design" è possibile ridisporre grafico dopo carico grafico (cioè chart.reflow chiamata();):

chart: { 

    events: { 
     load: function(event) { 
     **event.target.reflow();** 
     } 
    } 
}, 

Vedi esempio http://jsfiddle.net/yfjLce3o/

+0

Questo non fornisce una risposta alla domanda. Per criticare o richiedere chiarimenti da un autore, lascia un commento sotto il loro post. - [Dalla recensione] (/ recensione/post di bassa qualità/11731250) –

+0

Sì, hai ragione, non è una risposta completa. Ne ho trovato un altro e lo aggiungerò come commento all'autore. –

+0

Non sembra il 100% per me, c'è ancora uno spazio bianco di 3 px. – ram4nd

0

Se non si fornisce la proprietà width al grafico, dovrebbe automaticamente ottenere la larghezza del contenitore. Quindi basta rimuovere la larghezza dal grafico e dare il contenitore width: 100% e questo dovrebbe funzionare.

Se si desidera una larghezza specifica, è sufficiente modificare la larghezza del contenitore in base a una dimensione specifica. Il grafico dovrebbe essere ancora al 100% di quella dimensione. JSFiddle

Esempio:

HTML

<div id="container"> 
    <div id="chart"></div> 
</div> 

JS

var chart = new Highcharts.Chart({ 

    chart: { 
     renderTo: 'chart', 
     margin: 0, 
     height: 200, 
     defaultSeriesType: 'areaspline' 
    }, 

    series: [{ 
     data: [33,4,15,6,7,8, 73,2, 33,4,25], 

     marker: { 
      enabled: false 
     } 
    }] 
}); 

CSS

#container { 
    width: 100%; 
    height: 200px; 
} 
5

Il problema è a causa della JQ interfaccia utente dopo aver reso il tuo grafico chiama questo codice per ridisporre il grafico. Questo risolto il mio problema

chart.reflow(); 
+0

questo è in realtà funziona per me –

Problemi correlati