質問編集履歴

6

間違い修正

2016/12/06 03:13

投稿

abbey000
abbey000

スコア7

test CHANGED
File without changes
test CHANGED
@@ -66,7 +66,7 @@
66
66
 
67
67
  <script src="http://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.3.0/Chart.min.js"></script>
68
68
 
69
- <script src="mychart.js"></script>
69
+ <script src="js/mychart.js"></script>
70
70
 
71
71
  <title>A</title>
72
72
 
@@ -92,6 +92,10 @@
92
92
 
93
93
  <option value="a_data.csv">a_data.csv</option>
94
94
 
95
+ <input type="hidden" name="graph_title" value="グラフタイトル">
96
+
97
+ <input type="hidden" name="target_title" value="グラフタイトル2">
98
+
95
99
  </select>
96
100
 
97
101
  </form>

5

ソース書き直し

2016/12/06 03:13

投稿

abbey000
abbey000

スコア7

test CHANGED
File without changes
test CHANGED
@@ -36,27 +36,93 @@
36
36
 
37
37
  コード
38
38
 
39
+ <!DOCTYPE html>
40
+
41
+ <html lang="en">
42
+
43
+ <style>
44
+
45
+ @media screen and (min-width: 768px) {
46
+
47
+ .chart_container {
48
+
49
+ width: 640px;
50
+
51
+ margin: auto;
52
+
53
+ }
54
+
55
+ }
56
+
57
+ </style>
58
+
59
+ <head>
60
+
61
+ <meta charset="UTF-8">
62
+
39
- <script src="js/jquery-3.1.1.min.js"></script>
63
+ <script src="js/jquery-3.1.1.min.js"></script>
64
+
40
-
65
+ <script src="js/jQuery.csv.js"></script>
66
+
41
- <script src="http://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.3.0/Chart.min.js"></script>
67
+ <script src="http://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.3.0/Chart.min.js"></script>
42
-
43
- <script src="js/jQuery.csv.js"></script>
68
+
44
-
45
- <script src="js/mychart.js"></script>
69
+ <script src="mychart.js"></script>
70
+
71
+ <title>A</title>
72
+
73
+ </head>
46
74
 
47
75
  <body>
48
76
 
77
+
78
+
79
+ <!--ここにグラフが挿入されます-->
80
+
49
- <div id="contents">
81
+ <div style="width: 600; height: 600;">
50
-
82
+
51
- <ul id="news"></ul>
83
+ <canvas id="myChart" style="width: 100%; height: auto;"></canvas>
52
84
 
53
85
  </div>
54
86
 
87
+ <br/>
88
+
89
+ <form name="pullForm">
90
+
91
+ <select name="pullMenu">
92
+
93
+ <option value="a_data.csv">a_data.csv</option>
94
+
95
+ </select>
96
+
97
+ </form>
98
+
99
+
100
+
101
+ <!--ボタンを押すとリロードします。-->
102
+
103
+ <input type="button" id="update_chart" value="グラフ表示" onclick="main()"/>
104
+
105
+ <!--ここにCSVデータが挿入されます-->
106
+
107
+ <div id="news"></div>
108
+
55
109
  </body>
56
110
 
111
+ </html>
112
+
57
- ```
113
+ ```
114
+
58
-
115
+ a_data.csv
116
+
59
-
117
+ ```ここに言語を入力
118
+
119
+ 1, 3, 22, 6
120
+
121
+ 2, -24, 15, 8
122
+
123
+ 3, -20, 32, 15
124
+
125
+ ```
60
126
 
61
127
  data.csv
62
128
 
@@ -68,7 +134,7 @@
68
134
 
69
135
  2,462
70
136
 
71
- 2,693
137
+ 3,693
72
138
 
73
139
  ```
74
140
 
@@ -80,6 +146,38 @@
80
146
 
81
147
  ```
82
148
 
149
+ function csv2Array(str) {
150
+
151
+ var csvData = [];
152
+
153
+ //CR削除
154
+
155
+ str = str.replace(/\r\n/g, '\n');
156
+
157
+ //空行削除
158
+
159
+ str = str.replace(/\n+/g, '\n');
160
+
161
+ //空白削除
162
+
163
+ str = str.replace(/\s+,|,\s+/g, ',');
164
+
165
+ var lines = str.split('\n');
166
+
167
+ for (var i = 0; i < lines.length; i++) {
168
+
169
+ var cells = lines[i].split(",");
170
+
171
+ csvData.push(cells);
172
+
173
+ }
174
+
175
+ return csvData;
176
+
177
+ }
178
+
179
+
180
+
83
181
  var insert = '';
84
182
 
85
183
  var csvList;
@@ -90,7 +188,9 @@
90
188
 
91
189
  $.ajax({
92
190
 
191
+ dataType: 'text',
192
+
93
- url: 'data.csv',
193
+ url: 'h_j_t_data2.csv',
94
194
 
95
195
  success: function(data) {
96
196
 
@@ -102,7 +202,7 @@
102
202
 
103
203
  }
104
204
 
105
- $(target_csv).append(insert);//htmlで表示する為
205
+ $(target_csv).append(insert);
106
206
 
107
207
  }
108
208
 
@@ -114,20 +214,270 @@
114
214
 
115
215
 
116
216
 
117
- datasetList.push({
118
-
119
- type: 'line',
120
-
121
- label: "グラフのラベル",
122
-
123
- scaleShowLabels : false,
124
-
125
- backgroundColor: "rgba(70, 150, 150, 1)",
126
-
127
- fill: false,
128
-
129
- data:[231,462,693];//CSVから値を入れたい箇所
130
-
131
- });
132
-
133
- ```
217
+ // リクエストにjqueryを利用する場合
218
+
219
+ function main_jquery() {
220
+
221
+ var csvData = $.ajax({
222
+
223
+ //グラフ表示内容取得
224
+
225
+ //url: 'j_data.csv',
226
+
227
+ url: document.pullForm.pullMenu.value,
228
+
229
+ dataType: 'text',
230
+
231
+ cache: false
232
+
233
+ //cache: true
234
+
235
+ }).then(function (resText) {
236
+
237
+ var data = csv2Array(resText);
238
+
239
+ drawBarChart(data)
240
+
241
+ })
242
+
243
+ }
244
+
245
+
246
+
247
+
248
+
249
+ //colormapもどき
250
+
251
+ function mycolmap(l) {
252
+
253
+ function rgbaStr(rgba) {
254
+
255
+ return 'rgba(' + rgba.join(',') + ')';
256
+
257
+ }
258
+
259
+ var cStr = [];
260
+
261
+ var color_from = [54, 162, 235, 0.3];
262
+
263
+ var color_to = [255, 99, 132, 0.3];
264
+
265
+ var l1 = l - 1;
266
+
267
+ for (var i = 0; i < l; i++) {
268
+
269
+ var c = [];
270
+
271
+ var j = 0;
272
+
273
+ for (; j < 3; ++j) {
274
+
275
+ c[j] = Math.floor(color_from[j] * (l1 - i) / l1 + color_to[j] * (i) / l1);
276
+
277
+ }
278
+
279
+ // alpha doesn't need floor
280
+
281
+ c[j] = color_from[j] * (l1 - i) / l1 + color_to[j] * (i) / l1;
282
+
283
+ cStr[i] = rgbaStr(c)
284
+
285
+ }
286
+
287
+ return cStr;
288
+
289
+ }
290
+
291
+
292
+
293
+ //common part
294
+
295
+
296
+
297
+ function drawBarChart(data) {
298
+
299
+
300
+
301
+ // set chart labels and data
302
+
303
+ var tmpLabels = [];
304
+
305
+ var dataList = [];
306
+
307
+ //var nameList2 = ["A", "B", "C"];
308
+
309
+ var nameList = ["D", "E", "F"];
310
+
311
+
312
+
313
+ //先頭行の列数からデータ数を導出する
314
+
315
+ var numData = data[0].length-1;
316
+
317
+ var bgcolList = mycolmap(numData);
318
+
319
+
320
+
321
+ for (var i = 0; i < numData; i++) {
322
+
323
+ dataList[i] = [];
324
+
325
+ }
326
+
327
+
328
+
329
+ for (var row in data) {
330
+
331
+ tmpLabels.push(data[row][0])
332
+
333
+ for (var i = 0; i < numData; i++) {
334
+
335
+ dataList[i].push(data[row][i+1]);
336
+
337
+ }
338
+
339
+ };
340
+
341
+
342
+
343
+ var datasetList = [];
344
+
345
+ for (var i = 0; i < numData; i++) {
346
+
347
+ datasetList.push({
348
+
349
+ label: nameList[i],
350
+
351
+ backgroundColor: bgcolList[i],
352
+
353
+ data: dataList[i]
354
+
355
+ });
356
+
357
+ }
358
+
359
+
360
+
361
+ datasetList.push({
362
+
363
+ type: 'line',
364
+
365
+ label: document.pullForm.target_title.value,
366
+
367
+ scaleShowLabels : false,
368
+
369
+ backgroundColor: "rgba(70, 150, 150, 1)",
370
+
371
+ fill: false,
372
+
373
+ //data:arr;
374
+
375
+ data:[231,462,693]/////CSVから値を入れたい箇所/////
376
+
377
+ });
378
+
379
+ var chartData = {
380
+
381
+ labels: tmpLabels,
382
+
383
+ datasets: datasetList
384
+
385
+ };
386
+
387
+
388
+
389
+ var ctx = document.getElementById("myChart").getContext("2d");
390
+
391
+ ctx.canvas.width = 1000;
392
+
393
+ ctx.canvas.height = 600;
394
+
395
+ // for chart.js 2.0
396
+
397
+
398
+
399
+ var myChart = new Chart(ctx, {
400
+
401
+ type: 'bar',
402
+
403
+ data: chartData,
404
+
405
+ options: {
406
+
407
+ title: {
408
+
409
+ display: true,
410
+
411
+ text: document.pullForm.graph_title.value, //グラフの見出し
412
+
413
+ padding:6
414
+
415
+ },
416
+
417
+ scales: {
418
+
419
+ xAxes: [{
420
+
421
+ stacked: true, //積み上げ棒グラフにする設定
422
+
423
+ ticks: {
424
+
425
+ autoSkip: false,
426
+
427
+ maxRotation: 90,
428
+
429
+ minRotation: 90
430
+
431
+ }
432
+
433
+ }],
434
+
435
+ yAxes: [{
436
+
437
+ stacked: true,//積み上げ棒グラフにする設定
438
+
439
+ scaleLabel: {
440
+
441
+ display: true,
442
+
443
+ labelString: 'TEST',
444
+
445
+ fontSize: 14
446
+
447
+ }
448
+
449
+ }]
450
+
451
+ },
452
+
453
+ legend: {
454
+
455
+ display: true,
456
+
457
+ position: 'right'
458
+
459
+ }
460
+
461
+ }
462
+
463
+ });
464
+
465
+
466
+
467
+ }
468
+
469
+
470
+
471
+ // ここがメイン
472
+
473
+ function main() {
474
+
475
+ main_jquery();
476
+
477
+ }
478
+
479
+
480
+
481
+ main();
482
+
483
+ ```

4

リンクの追加

2016/12/06 03:07

投稿

abbey000
abbey000

スコア7

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
 
4
4
 
5
- chart.js(http://www.chartjs.org/)
5
+ [chart.js](http://www.chartjs.org/)
6
6
 
7
7
  を使ってグラフの表示に挑戦しているのですが
8
8
 
@@ -16,7 +16,7 @@
16
16
 
17
17
  ※値の渡し方をわかっておりません
18
18
 
19
- (CSVの取得はjQuery.csv.jsを使用させていただいて取り込めました
19
+ (CSVの取得は[jQuery.csv.js](http://cly7796.net/wp/javascript/ajax-get-csv/)を使用させていただいて取り込めました
20
20
 
21
21
  http://cly7796.net/wp/javascript/ajax-get-csv/)
22
22
 

3

URLのついか

2016/12/05 10:32

投稿

abbey000
abbey000

スコア7

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
 
4
4
 
5
+ chart.js(http://www.chartjs.org/)
6
+
5
- chart.jsを使ってグラフの表示に挑戦しているのですが
7
+ を使ってグラフの表示に挑戦しているのですが
6
8
 
7
9
  同じJS内下記部分
8
10
 
@@ -14,7 +16,9 @@
14
16
 
15
17
  ※値の渡し方をわかっておりません
16
18
 
17
- (CSVの取得はjQuery.csv.jsを使用させていただいて取り込めました
19
+ (CSVの取得はjQuery.csv.jsを使用させていただいて取り込めました
20
+
21
+ http://cly7796.net/wp/javascript/ajax-get-csv/)
18
22
 
19
23
 
20
24
 
@@ -26,17 +30,11 @@
26
30
 
27
31
 
28
32
 
33
+ chart.thml
29
34
 
35
+ ```
30
36
 
31
-
32
-
33
-
34
-
35
- ///////////
36
-
37
- chart.html
37
+ コード
38
-
39
- ///////////
40
38
 
41
39
  <script src="js/jquery-3.1.1.min.js"></script>
42
40
 
@@ -56,13 +54,13 @@
56
54
 
57
55
  </body>
58
56
 
57
+ ```
59
58
 
60
59
 
61
- ///////////
62
60
 
63
61
  data.csv
64
62
 
65
- ///////////
63
+ ```
66
64
 
67
65
  日付,目標
68
66
 
@@ -72,15 +70,15 @@
72
70
 
73
71
  2,693
74
72
 
73
+ ```
75
74
 
76
75
 
77
76
 
78
77
 
79
- ///////////
80
78
 
81
79
  mychart.js
82
80
 
83
- //////////
81
+ ```
84
82
 
85
83
  var insert = '';
86
84
 
@@ -131,3 +129,5 @@
131
129
  data:[231,462,693];//CSVから値を入れたい箇所
132
130
 
133
131
  });
132
+
133
+ ```

2

余分なソースを削除

2016/12/05 10:29

投稿

abbey000
abbey000

スコア7

test CHANGED
File without changes
test CHANGED
@@ -120,7 +120,7 @@
120
120
 
121
121
  type: 'line',
122
122
 
123
- label: document.pullForm.target_title.value,
123
+ label: "グラフのラベル",
124
124
 
125
125
  scaleShowLabels : false,
126
126
 

1

初心者すぎて何がわかっていないのかを表記

2016/12/05 08:09

投稿

abbey000
abbey000

スコア7

test CHANGED
File without changes
test CHANGED
@@ -12,7 +12,11 @@
12
12
 
13
13
  うまくいきません。
14
14
 
15
+ ※値の渡し方をわかっておりません
16
+
15
17
  (CSVの取得はjQuery.csv.jsを使用させていただいて取り込めました)
18
+
19
+
16
20
 
17
21
  hrml内には
18
22
 
@@ -34,13 +38,23 @@
34
38
 
35
39
  ///////////
36
40
 
41
+ <script src="js/jquery-3.1.1.min.js"></script>
42
+
43
+ <script src="http://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.3.0/Chart.min.js"></script>
44
+
45
+ <script src="js/jQuery.csv.js"></script>
46
+
47
+ <script src="js/mychart.js"></script>
48
+
49
+ <body>
50
+
37
51
  <div id="contents">
38
52
 
39
53
  <ul id="news"></ul>
40
54
 
41
55
  </div>
42
56
 
43
-
57
+ </body>
44
58
 
45
59
 
46
60