2016/2/2追記
グラフが表示されない原因の一つが、データがない時だと分かりました。
グラフによっては、存在しないデータだけ非表示となるのですが、折れ線だとうまくいきませんでした。
JavaScriptで、データをPHPの変数で与えているときに、
変数の配列が空の場合は、対象データから外すことは可能でしょうか?
例えば、以下のコードで、$var_6が空の場合は、[●●●],までを非表示にするとか・・・
var data = google.visualization.arrayToDataTable([ ['Year', '新規ユーザー', 'リピーター'], ['<?php echo $var_6[access]; ?>', <?php echo $var_6[newer]; ?>, <?php echo $var_6[repeater_count]; ?>], ['<?php echo $var_5[access]; ?>', <?php echo $var_5[newer]; ?>, <?php echo $var_5[repeater_count]; ?>], ['<?php echo $var_4[access]; ?>', <?php echo $var_4[newer]; ?>, <?php echo $var_4[repeater_count]; ?>], ['<?php echo $var_3[access]; ?>', <?php echo $var_3[newer]; ?>, <?php echo $var_3[repeater_count]; ?>], ['<?php echo $var_2[access]; ?>', <?php echo $var_2[newer]; ?>, <?php echo $var_2[repeater_count]; ?>], ['<?php echo $var[access]; ?>', <?php echo $var[newer]; ?>, <?php echo $var[repeater_count]; ?>], ]); ``` ※もともとの質問内容 JSONデータ取得済みの2つのファイル、array.jsonとarray2.jsonがあるのですが、 これらの2つのファイルを読み込む形でグラフを表示させたいと思っています。 しかし、それぞれ、1ページ内に表示させようとすると、どちらか一方しか表示されません。 最初は、関数名がぶつかっているのかと思い、drawChart2などに変更したのですが、 効果なし。可能な変数は名前を変えてみたのですがダメでした。 consoleログなどをところどころ、いじると、たまに、もう1方のグラフだけが出たりするので、 ひょっとすると、$.Deferred()が関係しているのかと推測している状況です。 他のサイトを見ても、GoogleChartsを使って複数のグラフを並べて表示させているので、 できるはずだと思うのですが… 何か考えられる原因があれば教えてください。 ```ここに言語を入力 <script type="text/javascript"> google.load("visualization", "1.1", {packages:["line"]}); google.setOnLoadCallback(drawChart); //JSONデータ加工処理 var result = []; //console.log(typeof result); function drawChart() { var df = $.Deferred(); $(function(){ $.ajax({ url:'array.json', dataType:'json', }).done(function(data_j){ console.log("success"); console.log(typeof result); //document.write(data); var keys = Object.keys(data_j[0]); for (var i = 0; i < data_j.length; i++) { for (var j = 0; j < keys.length; j++) { var key = keys[j]; //if(key == 'this'){key = '今月'}; if (typeof result[j] == 'undefined') { result[j] = [ key == 'access_type' ? 'Month' : key ]; } result[j].push(data_j[i][key]); } //document.write(result); } for(var k = 0; k < result.length; k++) { switch(result[k][0]){ case 'this': result[k][0] = '今月'; break; case 'one': result[k][0] = '1ヶ月前'; break; case 'two': result[k][0] = '2ヶ月前'; break; case 'three': result[k][0] = '3ヶ月前'; break; case 'four': result[k][0] = '4ヶ月前'; break; case 'five': result[k][0] = '5ヶ月前'; break; case 'six': result[k][0] = '半年前'; break; case 'seven': result[k][0] = '7ヶ月前'; break; case 'eight': result[k][0] = '8ヶ月前'; break; case 'nine': result[k][0] = '9ヶ月前'; break; case 'ten': result[k][0] = '10ヶ月前'; break; case 'eleven': result[k][0] = '11ヶ月前'; break; case 'year': result[k][0] = '1年前'; break; } } console.log(result); df.resolve(); }).fail(function(){ console.log("error"); }); }); df.done(function(){ var data = google.visualization.arrayToDataTable(result); var chart = new google.charts.Line(document.getElementById('chart_div')); chart.draw(data); }); } </script> <div style="padding-top:20pt"> <h2>【グラフ】</h2> <div id="chart_div" style="width: 1200px; height: 500px;"></div> </div><!--padding 20pt --> <script type="text/javascript"> google.load("visualization", "1.1", {packages:["line"]}); google.setOnLoadCallback(drawChart); //JSONデータ加工処理 var result3 = []; function drawChart() { var df = $.Deferred(); $(function(){ $.ajax({ url:'array2.json', dataType:'json', }).done(function(data_j){ console.log("success"); //console.log(typeof result); var keys = Object.keys(data_j[0]); //document.write(keys2); for (var i = 0; i < data_j.length; i++) { for (var j = 0; j < keys.length; j++) { var key = keys[j]; if (typeof result3[j] == 'undefined') { result3[j] = [ key == 'prefectures_name' ? 'Month' : key ]; } result3[j].push(data_j[i][key]); } //document.write(result); //console.log(result3); } for(var k = 0; k < result3.length; k++) { switch(result3[k][0]){ case 'this': result3[k][0] = '今月'; break; case 'one': result3[k][0] = '1ヶ月前'; break; case 'two': result3[k][0] = '2ヶ月前'; break; case 'three': result3[k][0] = '3ヶ月前'; break; case 'four': result3[k][0] = '4ヶ月前'; break; case 'five': result3[k][0] = '5ヶ月前'; break; case 'six': result3[k][0] = '半年前'; break; case 'seven': result3[k][0] = '7ヶ月前'; break; case 'eight': result3[k][0] = '8ヶ月前'; break; case 'nine': result3[k][0] = '9ヶ月前'; break; case 'ten': result3[k][0] = '10ヶ月前'; break; case 'eleven': result3[k][0] = '11ヶ月前'; break; case 'year': result3[k][0] = '1年前'; break; } } console.log(result3); df.resolve(); }).fail(function(){ console.log("error"); }); }); df.done(function(){ var data = google.visualization.arrayToDataTable(result3); //document.write(data); var chart = new google.charts.Line(document.getElementById('chart_div2')); chart.draw(data); }); } </script> <div style="padding-top:20pt"> <h2>【グラフ2】</h2> <div id="chart_div2" style="width: 1200px; height: 500px;"></div> </div><!--padding 20pt --> ```
回答5件
あなたの回答
tips
プレビュー