JavaScriptでHighchartを用いてグラフの描写をしているのですが、思った通りのグラフになってくれません.以下の手書きのようなグラフを構成したいと思っています。横軸が総発言量、縦軸がユーザー名です
以下のコードは主にグラフを構成している部分です。
主な変数は以下の通りです。
keys...ユーザー名入がっている
arr...ユーザーの発言量が入っている
user...ユーザーの総発言量
useract...ユーザーの総発言量が入った配列
下に続く
JavaScript
1var activity = obj[goukei].analysis.frame.activity; 2 var stu = obj[goukei].student; 3 var keys = Object.keys(activity);//keys:ユーザー名の入った配列 4 var user = 0; 5 var useract = []; 6 for (var i = 0; i < keys.length; i++) { 7 var arr = activity[keys[i]]; 8 keys[i] = ("ユーザー"+(i+1)); 9 for(var j = 0; j < arr.length; j++){ 10 user = user + parseFloat(arr[j]); 11 12 } 13 14 useract[i] = user 15 16 //console.log("総発言量"+ useract[1]); 17 18 19 20 x.series.push({name: keys[i], data: useract}); 21 22 user = 0; 23 24 } 25 26 27 for (var i = 0; i < arr.length; i ++) { 28 var count=0; 29 count=5*i; 30 31 } 32 33 $('#container2').highcharts(x); 34 }, 35 error:function() { 36 //取得失敗時に実行する処理 37 console.log("何らかの理由で失敗しました"); 38 } 39 })}); 40 41 42 var x = { 43 44 chart: { 45 type: 'bar', 46 47 }, 48 title: { 49 text: '議論の可視化' 50 51 }, 52 subtitle: { 53 text: 'Source: Wikipedia.org' 54 55 }, 56 xAxis: { 57 categories: [], 58 59 60 tickmarkPlacement: 'on', 61 title: { 62 enabled: false 63 } 64 }, 65 yAxis: { 66 67 title: { 68 text: 'Activity', 69 70 }, 71 72 }, 73 tooltip: { 74 shared: true, 75 76 }, 77 plotOptions: { 78 area: { 79 lineColor: '#707070', 80 lineWidth: 1, 81 marker: { 82 lineWidth: 1, 83 lineColor: '#707070' 84 } 85 } 86 }, 87 credits: { 88 enabled: false 89 }, 90 series: [] 91 92};
このプログラムを実行すると以下のグラフが得られます。
余計に2本グラフが構成されてしまいます。おそらく以下の箇所の最初のfor文中に記述しており、二回ループしているためだとは思いますが、for文外に記述するとグラフの形は理想的なものになりますが、ユーザー名1,2が結合してしまい全体水色のグラフになってしまします。
最初の手書きのグラフに近づけるにはどこを改善すればいいでしょうか?
ご教授お願いいたします。
JavaScript
1var activity = obj[goukei].analysis.frame.activity; 2 var stu = obj[goukei].student; 3 var keys = Object.keys(activity);//keys:ユーザー名の入った配列 4 var user = 0; 5 var useract = []; 6 for (var i = 0; i < keys.length; i++) { 7 var arr = activity[keys[i]]; 8 keys[i] = ("ユーザー"+(i+1)); 9 for(var j = 0; j < arr.length; j++){ 10 user = user + parseFloat(arr[j]); 11 12 } 13 14 useract[i] = user 15 16 //console.log("総発言量"+ useract[1]); 17 18 19 20 x.series.push({name: keys[i], data: useract}); 21 22 user = 0; 23 24 }
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/06 22:58
2018/09/07 01:37
2018/09/08 01:02 編集
2018/09/08 01:50
2018/09/18 20:56
2018/09/18 23:27