2013-06-05 4 views
1

Utilisez les graphiques actifs pour le graphique à secteurs. Voici le code JS pour elle:Highcharts Données du graphique à secteurs Format via php

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

var graphData = $("#graphContentdata").val(); 
console.log(graphData); 
var options = { 
     chart: { 
      renderTo: 'graphContainer', 
      plotBackgroundColor: null, 
      plotBorderWidth: null, 
      plotShadow: false 
     }, 
     title: { 
      text: 'SOV' 
     }, 
     tooltip: { 
      formatter: function() { 
       return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %'; 
      } 
     }, 
     plotOptions: { 
      pie: { 
       allowPointSelect: true, 
       cursor: 'pointer', 
       dataLabels: { 
        enabled: true, 
        color: '#000000', 
        connectorColor: '#000000', 
        formatter: function() { 
         return '<b>'+ this.point.name +'</b>: '+ this.percentage +' %'; 
        } 
       } 
      } 
     }, 
     series: [{ 
      type: 'pie', 
      name: 'Browser share', 
      data: [] 
     }] 
    } 

    chart = new Highcharts.Chart(options); 
    chart.series[0].setData("["+graphData+"]"); 

}); 

et le code PHP pour générer les données:

foreach ($sumArray as $key=>$value) 
    { 
     $sumArray[$key] = array_sum($value); 
     $percent = (number_format(($sumArray[$key]/$sovGrandTotal)*100,2)); 

     $data[] = "['$key', $percent]";    
    } 
    $data = join(",", $data); 

?>    
    <input type='hidden' id='graphContentdata' value="<?php echo $data; ?>"> 

Le format de données Am obtenir est:

['www.quora.com', 0.23],['www.slideshare.net', 0.25],['me', 99.52] 

problème est:

chart.series[0].setData("["+graphData+"]"); 

ne créant pas de graphique, mais si je copie coller la valeur de la console à palce de la variable graphData, son travail comme:

chart.series[0].setData([['www.quora.com', 0.23],['www.slideshare.net', 0.25],['me', 99.52]]); 

travaille.

Quelle est l'erreur que je fais ici ???

+0

Avez-vous essayé de mettre l'écho json_encode ($ Les données); ? En fait, vos données sont un tableau php qui n'a aucune valeur dans js. Quoi qu'il en soit, écrire que dans la valeur de l'entrée n'est pas le meilleur moyen. – stefanz

+0

J'ai essayé echo json_encode ($ data); mais il donne une chaîne vide ... – Arul

+0

tous les autres formats pour le transmettre aux données de camembert ??? [moi] = 99.52 [www.quora.com] = 0.23 [www.slideshare.net] = 0.25 – Arul

Répondre

0

Le problème est votre données sont passant votre en tant que chaîne lorsque vous utilisez

chart.series[0].setData("["+graphData+"]"); 

Vous devez set your data as an Array. Vous pouvez le faire en convertissant votre chaîne en utilisant eval:

chart.series[0].setData(eval("["+graphData+"]")); 

Vous pouvez également use jQuery to convert your String to JSON, mais dans ce cas, vous must use double quotes ouvrir et fermer des chaînes:

$.parseJSON("[[\"www.quora.com\", 0.23],[\"www.slideshare.net\", 0.25],[\"me\", 99.52]]"); 
Questions connexes