2017-04-25 1 views
1

Je dois créer une table de données pour passer un graphique google à partir d'un tableau: Je récupère des données, comme exemple de température, de l'API OpenWeather en PHP et je convertis le tableau de température en tableau javascript. De ce tableau je construis le tableau de données avec ce code:Création d'un tableau datable pour Google Chart

<script type="text/javascript"> 
    var temp=new Array(); 
    <?php 
    for($i=0;$i<count($temperatura);$i++){?> 
    temp[<?php echo $i; ?>]="<?php echo "$temperatura[$i]"; ?>"; 
    <?php 
    }?> 

     google.charts.load('current', {'packages':['line']}); 
     google.charts.setOnLoadCallback(drawChart); 

     function drawChart() { 

     var data2 = new Array(); 

     data2[0] = [ 'Data', 'Temp.' ]; 
     for (i = 0; i < temp.length; i++) { 
       data2[i + 1] = [ '10/04/2017', 'temp[i]' ]; 
     } 


     var data = google.visualization.arrayToDataTable(data2, false); 
     document.write(data); //this cause the message [object Object] 

     var options = { 
     chart: { 
      title: 'Box Office Earnings in First Two Weeks of Opening', 
      subtitle: 'in millions of dollars (USD)' 
     }, 
     width: 900, 
     height: 500, 
     axes: { 
      x: { 
      0: {side: 'top'} 
      } 
     } 
     }; 

     var chart = new google.charts.Line(document.getElementById('chart_div')); 

     chart.draw(data, google.charts.Line.convertOptions(options)); 
     }  
    } 
    </script> 

    <div id="chart_div"></div> 

Dans le navigateur, je vois le message [objet objet] et je ne comprends pas ce qui est faux. Peut m'aider? J'ai lu quelques questions similaires mais elles ne résolvent pas mon problème.

+0

Il semble que la table de données comporte des lignes: 35..mais quand j'essaie d'imprimer le graphique, la donnée est nulle et le graphique est vide. Comment puis-je imprimer la table de données? –

+0

Positionner le document.write suggéré après le mot clé le résultat est: [["Data", "Temperatura"], [["2017-04-30 15:00:00", "17.51"]], [[" 2017-04-30 18:00:00 "," 15.34 "]], [[" 2017-04-30 21:00:00 "," 12.55 "]], d'autres valeurs ..., [[" 2017 -05-04 21:00:00 "," 13.3 "]]] –

+0

Utilisation de document.write (JSON.stringify (data)); après var data = .... le résultat est "{\" cols \ ": [{\" label \ ": \" Données \ ", \" type \ ": \" chaîne \ "}, {\" label \ ": \" Temperatura \ ", \" type \ ": \" chaîne \ "}], \" lignes \ ": [{\" c \ ": [{\" v \ ": \" 2017-04 -30 15:00:00 \ "}, {\" v \ ": \" 17.51 ​​\ "}]} ...., espérant que cela peut aider à résoudre mon problème. –

Répondre

0

Ceci est mon nouveau code:

<script type="text/javascript"> 
    var temp=new Array(); 
    <?php 
    for($i=0;$i<count($temperatura);$i++){?> 
    temp[<?php echo $i; ?>]="<?php echo "$temperatura[$i]"; ?>"; 
    <?php 
    }?> 

    var dataora=new Array(); 
    <?php 
    for($i=0;$i<count($dataora);$i++){ 
    ?> 
     dataora[<?php echo $i; ?>]="<?php echo "$dataora[$i]"; ?>"; 
    <?php 
    }?> 

     google.charts.load('current', {'packages':['line']}); 
     google.charts.setOnLoadCallback(drawChart); 

     function drawChart() { 

     var data2 = new Array(); 

     data2[0] = [ 'Data', 'Temperatura' ]; 
     for (i = 0; i < temp.length; i++) { 
       data2[i + 1] = [ [dataora[i]], [parseFloat(temp[i]) ] ]; 
     } 

     var data = google.visualization.arrayToDataTable(data2, false); 

     document.write(JSON.stringify(data)); 

     console.log(data); 

     var options = { 
       chart: { 
       title: 'Previsioni Temperatura', 
       subtitle: 'in °C' 
      }, 
     width: 1000, 
     height: 500, 
     axes: { 
     } 
     }; 

Je récupérer le tableau de date à partir des résultats de openweather. Dans la console j'ai l'erreur:

Erreur: conteneur est pas défini jsapi_compiled_default_module.js: 63: 448

Le résultat de la

document.write(JSON.stringify(data)); 

est:

"{\"cols\":[{\"label\":\"Data\",\"type\":\"timeofday\"},{\"label  
\":\"Temperatura\",\"type\":\"timeofday\"}],\"rows\":[{\"c\":[{\"v 
\":[\"2017-05-01 15:00:00\"]},{\"v\":[17.35]}]},{\"c\":[{\"v\":[\"2017-05-01 
18:00:00\"]},{\"v\":[15.72]}]},{\"c\":[{\"v\":[\"2017-05-01 21:00:00\"]}, 
{\"v\": [15.32]}]},.....{\"c\":[{\"v\":[\"2017-05-06 12:00:00\"]},{\"v\":  
[17.32]}]}]}" 

J'essaie plus de modifier le code, mais pas de résultats. Suggestions?