質問編集履歴

2

誤記修正

2016/02/02 07:26

投稿

Satochan24
Satochan24

スコア113

test CHANGED
File without changes
test CHANGED
@@ -18,488 +18,480 @@
18
18
 
19
19
  ``````ここに言語を入力
20
20
 
21
- JavaScriptとPHP
21
+ var data = google.visualization.arrayToDataTable([
22
+
23
+ ['Year', '新規ユーザー', 'リピーター'],
24
+
25
+ ['<?php echo $var_6[access]; ?>', <?php echo $var_6[newer]; ?>, <?php echo $var_6[repeater_count]; ?>],
26
+
27
+ ['<?php echo $var_5[access]; ?>', <?php echo $var_5[newer]; ?>, <?php echo $var_5[repeater_count]; ?>],
28
+
29
+ ['<?php echo $var_4[access]; ?>', <?php echo $var_4[newer]; ?>, <?php echo $var_4[repeater_count]; ?>],
30
+
31
+ ['<?php echo $var_3[access]; ?>', <?php echo $var_3[newer]; ?>, <?php echo $var_3[repeater_count]; ?>],
32
+
33
+ ['<?php echo $var_2[access]; ?>', <?php echo $var_2[newer]; ?>, <?php echo $var_2[repeater_count]; ?>],
34
+
35
+ ['<?php echo $var[access]; ?>', <?php echo $var[newer]; ?>, <?php echo $var[repeater_count]; ?>],
36
+
37
+ ]);
22
38
 
23
39
  ```
24
40
 
25
- var data = google.visualization.arrayToDataTable([
26
-
27
- ['Year', '新規ユーザー', 'リピーター'],
28
-
29
- ['<?php echo $var_6[access]; ?>', <?php echo $var_6[newer]; ?>, <?php echo $var_6[repeater_count]; ?>],
30
-
31
- ['<?php echo $var_5[access]; ?>', <?php echo $var_5[newer]; ?>, <?php echo $var_5[repeater_count]; ?>],
32
-
33
- ['<?php echo $var_4[access]; ?>', <?php echo $var_4[newer]; ?>, <?php echo $var_4[repeater_count]; ?>],
34
-
35
- ['<?php echo $var_3[access]; ?>', <?php echo $var_3[newer]; ?>, <?php echo $var_3[repeater_count]; ?>],
36
-
37
- ['<?php echo $var_2[access]; ?>', <?php echo $var_2[newer]; ?>, <?php echo $var_2[repeater_count]; ?>],
38
-
39
- ['<?php echo $var[access]; ?>', <?php echo $var[newer]; ?>, <?php echo $var[repeater_count]; ?>],
40
-
41
- ]);
41
+ ※もともとの質問内容
42
+
43
+ JSONデータ取得済みの2つのファイル、array.jsonとarray2.jsonがあるのですが、
44
+
45
+ これらの2つのファイルを読み込む形でグラフを表示させたいと思っています。
46
+
47
+
48
+
49
+ しかし、それぞれ、1ページ内に表示させようとすると、どちらか一方しか表示されません。
50
+
51
+ 最初は、関数名がぶつかっているのかと思い、drawChart2などに変更したのですが、
52
+
53
+ 効果なし。可能な変数は名前を変えてみたのですがダメでした。
54
+
55
+
56
+
57
+ consoleログなどをところどころ、いじると、たまに、もう1方のグラフだけが出たりするので、
58
+
59
+ ひょっとすると、$.Deferred()が関係しているのかと推測している状況です。
60
+
61
+
62
+
63
+ 他のサイトを見ても、GoogleChartsを使って複数のグラフを並べて表示させているので、
64
+
65
+ できるはずだと思うのですが…
66
+
67
+ 何か考えられる原因があれば教えてください。
68
+
69
+
70
+
71
+ ```ここに言語を入力
72
+
73
+ <script type="text/javascript">
74
+
75
+ google.load("visualization", "1.1", {packages:["line"]});
76
+
77
+ google.setOnLoadCallback(drawChart);
78
+
79
+
80
+
81
+ //JSONデータ加工処理
82
+
83
+ var result = [];
84
+
85
+ //console.log(typeof result);
86
+
87
+
88
+
89
+ function drawChart() {
90
+
91
+
92
+
93
+ var df = $.Deferred();
94
+
95
+
96
+
97
+ $(function(){
98
+
99
+ $.ajax({
100
+
101
+ url:'array.json',
102
+
103
+ dataType:'json',
104
+
105
+ }).done(function(data_j){
106
+
107
+ console.log("success");
108
+
109
+ console.log(typeof result);
110
+
111
+ //document.write(data);
112
+
113
+
114
+
115
+ var keys = Object.keys(data_j[0]);
116
+
117
+
118
+
119
+ for (var i = 0; i < data_j.length; i++) {
120
+
121
+ for (var j = 0; j < keys.length; j++) {
122
+
123
+ var key = keys[j];
124
+
125
+ //if(key == 'this'){key = '今月'};
126
+
127
+ if (typeof result[j] == 'undefined') {
128
+
129
+ result[j] = [ key == 'access_type' ? 'Month' : key ];
130
+
131
+ }
132
+
133
+ result[j].push(data_j[i][key]);
134
+
135
+ }
136
+
137
+ //document.write(result);
138
+
139
+ }
140
+
141
+ for(var k = 0; k < result.length; k++)
142
+
143
+ {
144
+
145
+ switch(result[k][0]){
146
+
147
+ case 'this':
148
+
149
+ result[k][0] = '今月';
150
+
151
+ break;
152
+
153
+ case 'one':
154
+
155
+ result[k][0] = '1ヶ月前';
156
+
157
+ break;
158
+
159
+ case 'two':
160
+
161
+ result[k][0] = '2ヶ月前';
162
+
163
+ break;
164
+
165
+ case 'three':
166
+
167
+ result[k][0] = '3ヶ月前';
168
+
169
+ break;
170
+
171
+ case 'four':
172
+
173
+ result[k][0] = '4ヶ月前';
174
+
175
+ break;
176
+
177
+ case 'five':
178
+
179
+ result[k][0] = '5ヶ月前';
180
+
181
+ break;
182
+
183
+ case 'six':
184
+
185
+ result[k][0] = '半年前';
186
+
187
+ break;
188
+
189
+ case 'seven':
190
+
191
+ result[k][0] = '7ヶ月前';
192
+
193
+ break;
194
+
195
+ case 'eight':
196
+
197
+ result[k][0] = '8ヶ月前';
198
+
199
+ break;
200
+
201
+ case 'nine':
202
+
203
+ result[k][0] = '9ヶ月前';
204
+
205
+ break;
206
+
207
+ case 'ten':
208
+
209
+ result[k][0] = '10ヶ月前';
210
+
211
+ break;
212
+
213
+ case 'eleven':
214
+
215
+ result[k][0] = '11ヶ月前';
216
+
217
+ break;
218
+
219
+ case 'year':
220
+
221
+ result[k][0] = '1年前';
222
+
223
+ break;
224
+
225
+
226
+
227
+ }
228
+
229
+ }
230
+
231
+ console.log(result);
232
+
233
+
234
+
235
+ df.resolve();
236
+
237
+ }).fail(function(){
238
+
239
+ console.log("error");
240
+
241
+ });
242
+
243
+ });
244
+
245
+
246
+
247
+ df.done(function(){
248
+
249
+ var data = google.visualization.arrayToDataTable(result);
250
+
251
+
252
+
253
+ var chart = new google.charts.Line(document.getElementById('chart_div'));
254
+
255
+
256
+
257
+ chart.draw(data);
258
+
259
+
260
+
261
+ });
262
+
263
+ }
264
+
265
+
266
+
267
+ </script>
268
+
269
+ <div style="padding-top:20pt">
270
+
271
+ <h2>【グラフ】</h2>
272
+
273
+ <div id="chart_div" style="width: 1200px; height: 500px;"></div>
274
+
275
+ </div><!--padding 20pt -->
276
+
277
+
278
+
279
+
280
+
281
+
282
+
283
+ <script type="text/javascript">
284
+
285
+ google.load("visualization", "1.1", {packages:["line"]});
286
+
287
+ google.setOnLoadCallback(drawChart);
288
+
289
+
290
+
291
+ //JSONデータ加工処理
292
+
293
+ var result3 = [];
294
+
295
+
296
+
297
+ function drawChart() {
298
+
299
+
300
+
301
+ var df = $.Deferred();
302
+
303
+
304
+
305
+
306
+
307
+ $(function(){
308
+
309
+ $.ajax({
310
+
311
+ url:'array2.json',
312
+
313
+ dataType:'json',
314
+
315
+ }).done(function(data_j){
316
+
317
+ console.log("success");
318
+
319
+ //console.log(typeof result);
320
+
321
+
322
+
323
+ var keys = Object.keys(data_j[0]);
324
+
325
+
326
+
327
+ //document.write(keys2);
328
+
329
+
330
+
331
+
332
+
333
+ for (var i = 0; i < data_j.length; i++) {
334
+
335
+ for (var j = 0; j < keys.length; j++) {
336
+
337
+ var key = keys[j];
338
+
339
+ if (typeof result3[j] == 'undefined') {
340
+
341
+ result3[j] = [ key == 'prefectures_name' ? 'Month' : key ];
342
+
343
+ }
344
+
345
+ result3[j].push(data_j[i][key]);
346
+
347
+ }
348
+
349
+ //document.write(result);
350
+
351
+ //console.log(result3);
352
+
353
+ }
354
+
355
+ for(var k = 0; k < result3.length; k++)
356
+
357
+ {
358
+
359
+ switch(result3[k][0]){
360
+
361
+ case 'this':
362
+
363
+ result3[k][0] = '今月';
364
+
365
+ break;
366
+
367
+ case 'one':
368
+
369
+ result3[k][0] = '1ヶ月前';
370
+
371
+ break;
372
+
373
+ case 'two':
374
+
375
+ result3[k][0] = '2ヶ月前';
376
+
377
+ break;
378
+
379
+ case 'three':
380
+
381
+ result3[k][0] = '3ヶ月前';
382
+
383
+ break;
384
+
385
+ case 'four':
386
+
387
+ result3[k][0] = '4ヶ月前';
388
+
389
+ break;
390
+
391
+ case 'five':
392
+
393
+ result3[k][0] = '5ヶ月前';
394
+
395
+ break;
396
+
397
+ case 'six':
398
+
399
+ result3[k][0] = '半年前';
400
+
401
+ break;
402
+
403
+ case 'seven':
404
+
405
+ result3[k][0] = '7ヶ月前';
406
+
407
+ break;
408
+
409
+ case 'eight':
410
+
411
+ result3[k][0] = '8ヶ月前';
412
+
413
+ break;
414
+
415
+ case 'nine':
416
+
417
+ result3[k][0] = '9ヶ月前';
418
+
419
+ break;
420
+
421
+ case 'ten':
422
+
423
+ result3[k][0] = '10ヶ月前';
424
+
425
+ break;
426
+
427
+ case 'eleven':
428
+
429
+ result3[k][0] = '11ヶ月前';
430
+
431
+ break;
432
+
433
+ case 'year':
434
+
435
+ result3[k][0] = '1年前';
436
+
437
+ break;
438
+
439
+
440
+
441
+ }
442
+
443
+ }
444
+
445
+ console.log(result3);
446
+
447
+
448
+
449
+
450
+
451
+ df.resolve();
452
+
453
+ }).fail(function(){
454
+
455
+ console.log("error");
456
+
457
+ });
458
+
459
+ });
460
+
461
+
462
+
463
+ df.done(function(){
464
+
465
+ var data = google.visualization.arrayToDataTable(result3);
466
+
467
+ //document.write(data);
468
+
469
+
470
+
471
+ var chart = new google.charts.Line(document.getElementById('chart_div2'));
472
+
473
+
474
+
475
+ chart.draw(data);
476
+
477
+
478
+
479
+ });
480
+
481
+ }
482
+
483
+
484
+
485
+
486
+
487
+ </script>
488
+
489
+ <div style="padding-top:20pt">
490
+
491
+ <h2>【グラフ2】</h2>
492
+
493
+ <div id="chart_div2" style="width: 1200px; height: 500px;"></div>
494
+
495
+ </div><!--padding 20pt -->
42
496
 
43
497
  ```
44
-
45
-
46
-
47
-
48
-
49
- ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
50
-
51
- JSONデータ取得済みの2つのファイル、array.jsonとarray2.jsonがあるのですが、
52
-
53
- これらの2つのファイルを読み込む形でグラフを表示させたいと思っています。
54
-
55
-
56
-
57
- しかし、それぞれ、1ページ内に表示させようとすると、どちらか一方しか表示されません。
58
-
59
- 最初は、関数名がぶつかっているのかと思い、drawChart2などに変更したのですが、
60
-
61
- 効果なし。可能な変数は名前を変えてみたのですがダメでした。
62
-
63
-
64
-
65
- consoleログなどをところどころ、いじると、たまに、もう1方のグラフだけが出たりするので、
66
-
67
- ひょっとすると、$.Deferred()が関係しているのかと推測している状況です。
68
-
69
-
70
-
71
- 他のサイトを見ても、GoogleChartsを使って複数のグラフを並べて表示させているので、
72
-
73
- できるはずだと思うのですが…
74
-
75
- 何か考えられる原因があれば教えてください。
76
-
77
-
78
-
79
- ```ここに言語を入力
80
-
81
- <script type="text/javascript">
82
-
83
- google.load("visualization", "1.1", {packages:["line"]});
84
-
85
- google.setOnLoadCallback(drawChart);
86
-
87
-
88
-
89
- //JSONデータ加工処理
90
-
91
- var result = [];
92
-
93
- //console.log(typeof result);
94
-
95
-
96
-
97
- function drawChart() {
98
-
99
-
100
-
101
- var df = $.Deferred();
102
-
103
-
104
-
105
- $(function(){
106
-
107
- $.ajax({
108
-
109
- url:'array.json',
110
-
111
- dataType:'json',
112
-
113
- }).done(function(data_j){
114
-
115
- console.log("success");
116
-
117
- console.log(typeof result);
118
-
119
- //document.write(data);
120
-
121
-
122
-
123
- var keys = Object.keys(data_j[0]);
124
-
125
-
126
-
127
- for (var i = 0; i < data_j.length; i++) {
128
-
129
- for (var j = 0; j < keys.length; j++) {
130
-
131
- var key = keys[j];
132
-
133
- //if(key == 'this'){key = '今月'};
134
-
135
- if (typeof result[j] == 'undefined') {
136
-
137
- result[j] = [ key == 'access_type' ? 'Month' : key ];
138
-
139
- }
140
-
141
- result[j].push(data_j[i][key]);
142
-
143
- }
144
-
145
- //document.write(result);
146
-
147
- }
148
-
149
- for(var k = 0; k < result.length; k++)
150
-
151
- {
152
-
153
- switch(result[k][0]){
154
-
155
- case 'this':
156
-
157
- result[k][0] = '今月';
158
-
159
- break;
160
-
161
- case 'one':
162
-
163
- result[k][0] = '1ヶ月前';
164
-
165
- break;
166
-
167
- case 'two':
168
-
169
- result[k][0] = '2ヶ月前';
170
-
171
- break;
172
-
173
- case 'three':
174
-
175
- result[k][0] = '3ヶ月前';
176
-
177
- break;
178
-
179
- case 'four':
180
-
181
- result[k][0] = '4ヶ月前';
182
-
183
- break;
184
-
185
- case 'five':
186
-
187
- result[k][0] = '5ヶ月前';
188
-
189
- break;
190
-
191
- case 'six':
192
-
193
- result[k][0] = '半年前';
194
-
195
- break;
196
-
197
- case 'seven':
198
-
199
- result[k][0] = '7ヶ月前';
200
-
201
- break;
202
-
203
- case 'eight':
204
-
205
- result[k][0] = '8ヶ月前';
206
-
207
- break;
208
-
209
- case 'nine':
210
-
211
- result[k][0] = '9ヶ月前';
212
-
213
- break;
214
-
215
- case 'ten':
216
-
217
- result[k][0] = '10ヶ月前';
218
-
219
- break;
220
-
221
- case 'eleven':
222
-
223
- result[k][0] = '11ヶ月前';
224
-
225
- break;
226
-
227
- case 'year':
228
-
229
- result[k][0] = '1年前';
230
-
231
- break;
232
-
233
-
234
-
235
- }
236
-
237
- }
238
-
239
- console.log(result);
240
-
241
-
242
-
243
- df.resolve();
244
-
245
- }).fail(function(){
246
-
247
- console.log("error");
248
-
249
- });
250
-
251
- });
252
-
253
-
254
-
255
- df.done(function(){
256
-
257
- var data = google.visualization.arrayToDataTable(result);
258
-
259
-
260
-
261
- var chart = new google.charts.Line(document.getElementById('chart_div'));
262
-
263
-
264
-
265
- chart.draw(data);
266
-
267
-
268
-
269
- });
270
-
271
- }
272
-
273
-
274
-
275
- </script>
276
-
277
- <div style="padding-top:20pt">
278
-
279
- <h2>【グラフ】</h2>
280
-
281
- <div id="chart_div" style="width: 1200px; height: 500px;"></div>
282
-
283
- </div><!--padding 20pt -->
284
-
285
-
286
-
287
-
288
-
289
-
290
-
291
- <script type="text/javascript">
292
-
293
- google.load("visualization", "1.1", {packages:["line"]});
294
-
295
- google.setOnLoadCallback(drawChart);
296
-
297
-
298
-
299
- //JSONデータ加工処理
300
-
301
- var result3 = [];
302
-
303
-
304
-
305
- function drawChart() {
306
-
307
-
308
-
309
- var df = $.Deferred();
310
-
311
-
312
-
313
-
314
-
315
- $(function(){
316
-
317
- $.ajax({
318
-
319
- url:'array2.json',
320
-
321
- dataType:'json',
322
-
323
- }).done(function(data_j){
324
-
325
- console.log("success");
326
-
327
- //console.log(typeof result);
328
-
329
-
330
-
331
- var keys = Object.keys(data_j[0]);
332
-
333
-
334
-
335
- //document.write(keys2);
336
-
337
-
338
-
339
-
340
-
341
- for (var i = 0; i < data_j.length; i++) {
342
-
343
- for (var j = 0; j < keys.length; j++) {
344
-
345
- var key = keys[j];
346
-
347
- if (typeof result3[j] == 'undefined') {
348
-
349
- result3[j] = [ key == 'prefectures_name' ? 'Month' : key ];
350
-
351
- }
352
-
353
- result3[j].push(data_j[i][key]);
354
-
355
- }
356
-
357
- //document.write(result);
358
-
359
- //console.log(result3);
360
-
361
- }
362
-
363
- for(var k = 0; k < result3.length; k++)
364
-
365
- {
366
-
367
- switch(result3[k][0]){
368
-
369
- case 'this':
370
-
371
- result3[k][0] = '今月';
372
-
373
- break;
374
-
375
- case 'one':
376
-
377
- result3[k][0] = '1ヶ月前';
378
-
379
- break;
380
-
381
- case 'two':
382
-
383
- result3[k][0] = '2ヶ月前';
384
-
385
- break;
386
-
387
- case 'three':
388
-
389
- result3[k][0] = '3ヶ月前';
390
-
391
- break;
392
-
393
- case 'four':
394
-
395
- result3[k][0] = '4ヶ月前';
396
-
397
- break;
398
-
399
- case 'five':
400
-
401
- result3[k][0] = '5ヶ月前';
402
-
403
- break;
404
-
405
- case 'six':
406
-
407
- result3[k][0] = '半年前';
408
-
409
- break;
410
-
411
- case 'seven':
412
-
413
- result3[k][0] = '7ヶ月前';
414
-
415
- break;
416
-
417
- case 'eight':
418
-
419
- result3[k][0] = '8ヶ月前';
420
-
421
- break;
422
-
423
- case 'nine':
424
-
425
- result3[k][0] = '9ヶ月前';
426
-
427
- break;
428
-
429
- case 'ten':
430
-
431
- result3[k][0] = '10ヶ月前';
432
-
433
- break;
434
-
435
- case 'eleven':
436
-
437
- result3[k][0] = '11ヶ月前';
438
-
439
- break;
440
-
441
- case 'year':
442
-
443
- result3[k][0] = '1年前';
444
-
445
- break;
446
-
447
-
448
-
449
- }
450
-
451
- }
452
-
453
- console.log(result3);
454
-
455
-
456
-
457
-
458
-
459
- df.resolve();
460
-
461
- }).fail(function(){
462
-
463
- console.log("error");
464
-
465
- });
466
-
467
- });
468
-
469
-
470
-
471
- df.done(function(){
472
-
473
- var data = google.visualization.arrayToDataTable(result3);
474
-
475
- //document.write(data);
476
-
477
-
478
-
479
- var chart = new google.charts.Line(document.getElementById('chart_div2'));
480
-
481
-
482
-
483
- chart.draw(data);
484
-
485
-
486
-
487
- });
488
-
489
- }
490
-
491
-
492
-
493
-
494
-
495
- </script>
496
-
497
- <div style="padding-top:20pt">
498
-
499
- <h2>【グラフ2】</h2>
500
-
501
- <div id="chart_div2" style="width: 1200px; height: 500px;"></div>
502
-
503
- </div><!--padding 20pt -->
504
-
505
- ```

1

問題の一部原因判明と新たな問題点

2016/02/02 07:26

投稿

Satochan24
Satochan24

スコア113

test CHANGED
File without changes
test CHANGED
@@ -1,3 +1,53 @@
1
+ 2016/2/2追記
2
+
3
+
4
+
5
+ グラフが表示されない原因の一つが、データがない時だと分かりました。
6
+
7
+ グラフによっては、存在しないデータだけ非表示となるのですが、折れ線だとうまくいきませんでした。
8
+
9
+ JavaScriptで、データをPHPの変数で与えているときに、
10
+
11
+ 変数の配列が空の場合は、対象データから外すことは可能でしょうか?
12
+
13
+
14
+
15
+ 例えば、以下のコードで、$var_6が空の場合は、[●●●],までを非表示にするとか・・・
16
+
17
+
18
+
19
+ ``````ここに言語を入力
20
+
21
+ JavaScriptとPHP
22
+
23
+ ```
24
+
25
+ var data = google.visualization.arrayToDataTable([
26
+
27
+ ['Year', '新規ユーザー', 'リピーター'],
28
+
29
+ ['<?php echo $var_6[access]; ?>', <?php echo $var_6[newer]; ?>, <?php echo $var_6[repeater_count]; ?>],
30
+
31
+ ['<?php echo $var_5[access]; ?>', <?php echo $var_5[newer]; ?>, <?php echo $var_5[repeater_count]; ?>],
32
+
33
+ ['<?php echo $var_4[access]; ?>', <?php echo $var_4[newer]; ?>, <?php echo $var_4[repeater_count]; ?>],
34
+
35
+ ['<?php echo $var_3[access]; ?>', <?php echo $var_3[newer]; ?>, <?php echo $var_3[repeater_count]; ?>],
36
+
37
+ ['<?php echo $var_2[access]; ?>', <?php echo $var_2[newer]; ?>, <?php echo $var_2[repeater_count]; ?>],
38
+
39
+ ['<?php echo $var[access]; ?>', <?php echo $var[newer]; ?>, <?php echo $var[repeater_count]; ?>],
40
+
41
+ ]);
42
+
43
+ ```
44
+
45
+
46
+
47
+
48
+
49
+ ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
50
+
1
51
  JSONデータ取得済みの2つのファイル、array.jsonとarray2.jsonがあるのですが、
2
52
 
3
53
  これらの2つのファイルを読み込む形でグラフを表示させたいと思っています。