teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

6

間違い修正

2016/12/06 03:13

投稿

abbey000
abbey000

スコア7

title CHANGED
File without changes
body CHANGED
@@ -32,7 +32,7 @@
32
32
  <script src="js/jquery-3.1.1.min.js"></script>
33
33
  <script src="js/jQuery.csv.js"></script>
34
34
  <script src="http://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.3.0/Chart.min.js"></script>
35
- <script src="mychart.js"></script>
35
+ <script src="js/mychart.js"></script>
36
36
  <title>A</title>
37
37
  </head>
38
38
  <body>
@@ -45,6 +45,8 @@
45
45
  <form name="pullForm">
46
46
  <select name="pullMenu">
47
47
  <option value="a_data.csv">a_data.csv</option>
48
+ <input type="hidden" name="graph_title" value="グラフタイトル">
49
+ <input type="hidden" name="target_title" value="グラフタイトル2">
48
50
  </select>
49
51
  </form>
50
52
 

5

ソース書き直し

2016/12/06 03:13

投稿

abbey000
abbey000

スコア7

title CHANGED
File without changes
body CHANGED
@@ -17,51 +17,226 @@
17
17
  chart.thml
18
18
  ```
19
19
  コード
20
+ <!DOCTYPE html>
21
+ <html lang="en">
22
+ <style>
23
+ @media screen and (min-width: 768px) {
24
+ .chart_container {
25
+ width: 640px;
26
+ margin: auto;
27
+ }
28
+ }
29
+ </style>
30
+ <head>
31
+ <meta charset="UTF-8">
20
- <script src="js/jquery-3.1.1.min.js"></script>
32
+ <script src="js/jquery-3.1.1.min.js"></script>
33
+ <script src="js/jQuery.csv.js"></script>
21
- <script src="http://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.3.0/Chart.min.js"></script>
34
+ <script src="http://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.3.0/Chart.min.js"></script>
22
- <script src="js/jQuery.csv.js"></script>
23
- <script src="js/mychart.js"></script>
35
+ <script src="mychart.js"></script>
36
+ <title>A</title>
37
+ </head>
24
38
  <body>
39
+
40
+ <!--ここにグラフが挿入されます-->
25
- <div id="contents">
41
+ <div style="width: 600; height: 600;">
26
- <ul id="news"></ul>
42
+ <canvas id="myChart" style="width: 100%; height: auto;"></canvas>
27
43
  </div>
44
+ <br/>
45
+ <form name="pullForm">
46
+ <select name="pullMenu">
47
+ <option value="a_data.csv">a_data.csv</option>
48
+ </select>
49
+ </form>
50
+
51
+ <!--ボタンを押すとリロードします。-->
52
+ <input type="button" id="update_chart" value="グラフ表示" onclick="main()"/>
53
+ <!--ここにCSVデータが挿入されます-->
54
+ <div id="news"></div>
28
55
  </body>
56
+ </html>
29
57
  ```
30
-
58
+ a_data.csv
59
+ ```ここに言語を入力
60
+ 1, 3, 22, 6
61
+ 2, -24, 15, 8
62
+ 3, -20, 32, 15
63
+ ```
31
64
  data.csv
32
65
  ```
33
66
  日付,目標
34
67
  1,231
35
68
  2,462
36
- 2,693
69
+ 3,693
37
70
  ```
38
71
 
39
72
 
40
73
  mychart.js
41
74
  ```
75
+ function csv2Array(str) {
76
+ var csvData = [];
77
+ //CR削除
78
+ str = str.replace(/\r\n/g, '\n');
79
+ //空行削除
80
+ str = str.replace(/\n+/g, '\n');
81
+ //空白削除
82
+ str = str.replace(/\s+,|,\s+/g, ',');
83
+ var lines = str.split('\n');
84
+ for (var i = 0; i < lines.length; i++) {
85
+ var cells = lines[i].split(",");
86
+ csvData.push(cells);
87
+ }
88
+ return csvData;
89
+ }
90
+
42
91
  var insert = '';
43
92
  var csvList;
44
93
  $(function t_csv(){
45
94
  var target_csv = '#news';
46
95
  $.ajax({
96
+ dataType: 'text',
47
- url: 'data.csv',
97
+ url: 'h_j_t_data2.csv',
48
98
  success: function(data) {
49
99
  csvList = $.csv()(data);
50
100
  for(var i = 1, n = csvList.length; i < n; i++){
51
101
  insert += ( csvList[i][1] + ( i!=n-1 ? "," : "" ) );
52
102
  }
53
- $(target_csv).append(insert);//htmlで表示する為
103
+ $(target_csv).append(insert);
54
104
  }
55
105
  });
56
106
  });
57
107
 
58
108
 
109
+ // リクエストにjqueryを利用する場合
110
+ function main_jquery() {
111
+ var csvData = $.ajax({
112
+ //グラフ表示内容取得
113
+ //url: 'j_data.csv',
114
+ url: document.pullForm.pullMenu.value,
115
+ dataType: 'text',
116
+ cache: false
117
+ //cache: true
118
+ }).then(function (resText) {
119
+ var data = csv2Array(resText);
120
+ drawBarChart(data)
121
+ })
122
+ }
123
+
124
+
125
+ //colormapもどき
126
+ function mycolmap(l) {
127
+ function rgbaStr(rgba) {
128
+ return 'rgba(' + rgba.join(',') + ')';
129
+ }
130
+ var cStr = [];
131
+ var color_from = [54, 162, 235, 0.3];
132
+ var color_to = [255, 99, 132, 0.3];
133
+ var l1 = l - 1;
134
+ for (var i = 0; i < l; i++) {
135
+ var c = [];
136
+ var j = 0;
137
+ for (; j < 3; ++j) {
138
+ c[j] = Math.floor(color_from[j] * (l1 - i) / l1 + color_to[j] * (i) / l1);
139
+ }
140
+ // alpha doesn't need floor
141
+ c[j] = color_from[j] * (l1 - i) / l1 + color_to[j] * (i) / l1;
142
+ cStr[i] = rgbaStr(c)
143
+ }
144
+ return cStr;
145
+ }
146
+
147
+ //common part
148
+
149
+ function drawBarChart(data) {
150
+
151
+ // set chart labels and data
152
+ var tmpLabels = [];
153
+ var dataList = [];
154
+ //var nameList2 = ["A", "B", "C"];
155
+ var nameList = ["D", "E", "F"];
156
+
157
+ //先頭行の列数からデータ数を導出する
158
+ var numData = data[0].length-1;
159
+ var bgcolList = mycolmap(numData);
160
+
161
+ for (var i = 0; i < numData; i++) {
162
+ dataList[i] = [];
163
+ }
164
+
165
+ for (var row in data) {
166
+ tmpLabels.push(data[row][0])
167
+ for (var i = 0; i < numData; i++) {
168
+ dataList[i].push(data[row][i+1]);
169
+ }
170
+ };
171
+
172
+ var datasetList = [];
173
+ for (var i = 0; i < numData; i++) {
59
- datasetList.push({
174
+ datasetList.push({
175
+ label: nameList[i],
176
+ backgroundColor: bgcolList[i],
177
+ data: dataList[i]
178
+ });
179
+ }
180
+
181
+ datasetList.push({
60
- type: 'line',
182
+ type: 'line',
61
- label: "グラフのラベル",
183
+ label: document.pullForm.target_title.value,
62
- scaleShowLabels : false,
184
+ scaleShowLabels : false,
63
- backgroundColor: "rgba(70, 150, 150, 1)",
185
+ backgroundColor: "rgba(70, 150, 150, 1)",
64
- fill: false,
186
+ fill: false,
187
+ //data:arr;
65
- data:[231,462,693];//CSVから値を入れたい箇所
188
+ data:[231,462,693]/////CSVから値を入れたい箇所/////
66
- });
189
+ });
190
+ var chartData = {
191
+ labels: tmpLabels,
192
+ datasets: datasetList
193
+ };
194
+
195
+ var ctx = document.getElementById("myChart").getContext("2d");
196
+ ctx.canvas.width = 1000;
197
+ ctx.canvas.height = 600;
198
+ // for chart.js 2.0
199
+
200
+ var myChart = new Chart(ctx, {
201
+ type: 'bar',
202
+ data: chartData,
203
+ options: {
204
+ title: {
205
+ display: true,
206
+ text: document.pullForm.graph_title.value, //グラフの見出し
207
+ padding:6
208
+ },
209
+ scales: {
210
+ xAxes: [{
211
+ stacked: true, //積み上げ棒グラフにする設定
212
+ ticks: {
213
+ autoSkip: false,
214
+ maxRotation: 90,
215
+ minRotation: 90
216
+ }
217
+ }],
218
+ yAxes: [{
219
+ stacked: true,//積み上げ棒グラフにする設定
220
+ scaleLabel: {
221
+ display: true,
222
+ labelString: 'TEST',
223
+ fontSize: 14
224
+ }
225
+ }]
226
+ },
227
+ legend: {
228
+ display: true,
229
+ position: 'right'
230
+ }
231
+ }
232
+ });
233
+
234
+ }
235
+
236
+ // ここがメイン
237
+ function main() {
238
+ main_jquery();
239
+ }
240
+
241
+ main();
67
242
  ```

4

リンクの追加

2016/12/06 03:07

投稿

abbey000
abbey000

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,13 +1,13 @@
1
1
  javascriptとAjax?での値受け渡し
2
2
 
3
- chart.js(http://www.chartjs.org/)
3
+ [chart.js](http://www.chartjs.org/)
4
4
  を使ってグラフの表示に挑戦しているのですが
5
5
  同じJS内下記部分
6
6
  data:[231,462,693];
7
7
  へCSVから取得した値を入れたいのですが
8
8
  うまくいきません。
9
9
  ※値の渡し方をわかっておりません
10
- (CSVの取得はjQuery.csv.jsを使用させていただいて取り込めました
10
+ (CSVの取得は[jQuery.csv.js](http://cly7796.net/wp/javascript/ajax-get-csv/)を使用させていただいて取り込めました
11
11
  http://cly7796.net/wp/javascript/ajax-get-csv/)
12
12
 
13
13
  hrml内には

3

URLのついか

2016/12/05 10:32

投稿

abbey000
abbey000

スコア7

title CHANGED
File without changes
body CHANGED
@@ -1,23 +1,22 @@
1
1
  javascriptとAjax?での値受け渡し
2
2
 
3
+ chart.js(http://www.chartjs.org/)
3
- chart.jsを使ってグラフの表示に挑戦しているのですが
4
+ を使ってグラフの表示に挑戦しているのですが
4
5
  同じJS内下記部分
5
6
  data:[231,462,693];
6
7
  へCSVから取得した値を入れたいのですが
7
8
  うまくいきません。
8
9
  ※値の渡し方をわかっておりません
9
- (CSVの取得はjQuery.csv.jsを使用させていただいて取り込めました
10
+ (CSVの取得はjQuery.csv.jsを使用させていただいて取り込めました
11
+ http://cly7796.net/wp/javascript/ajax-get-csv/)
10
12
 
11
13
  hrml内には
12
14
  231,462,693と表示されたのですがどうすれば良いのか
13
15
  教えていただけませんでしょうか。
14
16
 
15
-
16
-
17
-
18
- ///////////
19
- chart.html
17
+ chart.thml
20
- ///////////
18
+ ```
19
+ コード
21
20
  <script src="js/jquery-3.1.1.min.js"></script>
22
21
  <script src="http://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.3.0/Chart.min.js"></script>
23
22
  <script src="js/jQuery.csv.js"></script>
@@ -27,19 +26,19 @@
27
26
  <ul id="news"></ul>
28
27
  </div>
29
28
  </body>
29
+ ```
30
30
 
31
- ///////////
32
31
  data.csv
33
- ///////////
32
+ ```
34
33
  日付,目標
35
34
  1,231
36
35
  2,462
37
36
  2,693
37
+ ```
38
38
 
39
39
 
40
- ///////////
41
40
  mychart.js
42
- //////////
41
+ ```
43
42
  var insert = '';
44
43
  var csvList;
45
44
  $(function t_csv(){
@@ -64,4 +63,5 @@
64
63
  backgroundColor: "rgba(70, 150, 150, 1)",
65
64
  fill: false,
66
65
  data:[231,462,693];//CSVから値を入れたい箇所
67
- });
66
+ });
67
+ ```

2

余分なソースを削除

2016/12/05 10:29

投稿

abbey000
abbey000

スコア7

title CHANGED
File without changes
body CHANGED
@@ -59,7 +59,7 @@
59
59
 
60
60
  datasetList.push({
61
61
  type: 'line',
62
- label: document.pullForm.target_title.value,
62
+ label: "グラフのラベル",
63
63
  scaleShowLabels : false,
64
64
  backgroundColor: "rgba(70, 150, 150, 1)",
65
65
  fill: false,

1

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

2016/12/05 08:09

投稿

abbey000
abbey000

スコア7

title CHANGED
File without changes
body CHANGED
@@ -5,7 +5,9 @@
5
5
  data:[231,462,693];
6
6
  へCSVから取得した値を入れたいのですが
7
7
  うまくいきません。
8
+ ※値の渡し方をわかっておりません
8
9
  (CSVの取得はjQuery.csv.jsを使用させていただいて取り込めました)
10
+
9
11
  hrml内には
10
12
  231,462,693と表示されたのですがどうすれば良いのか
11
13
  教えていただけませんでしょうか。
@@ -16,11 +18,16 @@
16
18
  ///////////
17
19
  chart.html
18
20
  ///////////
21
+ <script src="js/jquery-3.1.1.min.js"></script>
22
+ <script src="http://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.3.0/Chart.min.js"></script>
23
+ <script src="js/jQuery.csv.js"></script>
24
+ <script src="js/mychart.js"></script>
25
+ <body>
19
26
  <div id="contents">
20
27
  <ul id="news"></ul>
21
28
  </div>
29
+ </body>
22
30
 
23
-
24
31
  ///////////
25
32
  data.csv
26
33
  ///////////