2017-10-07 5 views
1

私は以下のようにjsonオブジェクトを持っています。私たちはどのようにenter image description hereJSONハイチャートのデータ書式

[{"TIME":"2017-09-15","SEX":"MALE","ARIZONA":483280000.0,"IDAHO":6624960.0,"RATE":98.6291686272}, 
{"TIME":"2017-09-15","SEX":"FEMALE","ARIZONA":1034350000.0,"IDAHO":32409500.0,"RATE":96.8666697274}, 
{"TIME":"2017-09-16","SEX":"MALE","ARIZONA":482379000.0,"IDAHO":9578100.0,"RATE":98.0144001036}, 
{"TIME":"2017-09-16","SEX":"FEMALE","ARIZONA":1052960000.0,"IDAHO":40686800.0,"RATE":96.1359744871}, 
{"TIME":"2017-09-17","SEX":"FEMALE","ARIZONA":1052530000.0,"IDAHO":41476900.0,"RATE":96.0593301937}, 
{"TIME":"2017-09-17","SEX":"MALE","ARIZONA":1052590000.0,"IDAHO":41479900.0,"RATE":96.0893301937},] 

:私は「SEX」と言うと、私は「TIME」のための唯一のX軸のカテゴリを持っており、グラフは以下のようになりますようhighchartsに渡し、特定のプロパティに基づいてGROUPBYにそれを希望します上記のJSON形式のためにそれを実現します.. ??

答えて

2

まず、malefemaleエンティティの2つの配列を取得するには、filterメソッドを使用する必要があります。

そしてdatesfemaleRatesmaleRatesアレイを得るためにmap方法を使用。

let array=[{"TIME":"2017-09-15","SEX":"MALE","ARIZONA":483280000.0,"IDAHO":6624960.0,"RATE":98.6291686272}, {"TIME":"2017-09-15","SEX":"FEMALE","ARIZONA":1034350000.0,"IDAHO":32409500.0,"RATE":96.8666697274}, {"TIME":"2017-09-16","SEX":"MALE","ARIZONA":482379000.0,"IDAHO":9578100.0,"RATE":98.0144001036}, {"TIME":"2017-09-16","SEX":"FEMALE","ARIZONA":1052960000.0,"IDAHO":40686800.0,"RATE":96.1359744871}, {"TIME":"2017-09-17","SEX":"FEMALE","ARIZONA":1052530000.0,"IDAHO":41476900.0,"RATE":96.0593301937}, {"TIME":"2017-09-17","SEX":"MALE","ARIZONA":1052590000.0,"IDAHO":41479900.0,"RATE":96.0893301937}]; 
 
let males=array.filter(a=>a.SEX=='MALE'); 
 
let females=array.filter(a=>a.SEX=='FEMALE'); 
 
let dates=males.map(a=>a.TIME); 
 
let malesRates=males.map(a=>a.RATE); 
 
let femaleRates=females.map(a=>a.RATE); 
 
console.log(dates); 
 
console.log(malesRates); 
 
console.log(femaleRates);

最後のステップは、あなたのチャートでデータを表示することです。答えを

let array=[{"TIME":"2017-09-15","SEX":"MALE","ARIZONA":483280000.0,"IDAHO":6624960.0,"RATE":98.6291686272}, {"TIME":"2017-09-15","SEX":"FEMALE","ARIZONA":1034350000.0,"IDAHO":32409500.0,"RATE":96.8666697274}, {"TIME":"2017-09-16","SEX":"MALE","ARIZONA":482379000.0,"IDAHO":9578100.0,"RATE":98.0144001036}, {"TIME":"2017-09-16","SEX":"FEMALE","ARIZONA":1052960000.0,"IDAHO":40686800.0,"RATE":96.1359744871}, {"TIME":"2017-09-17","SEX":"FEMALE","ARIZONA":1052530000.0,"IDAHO":41476900.0,"RATE":96.0593301937}, {"TIME":"2017-09-17","SEX":"MALE","ARIZONA":1052590000.0,"IDAHO":41479900.0,"RATE":96.0893301937}]; 
 
let males=array.filter(a=>a.SEX=='MALE'); 
 
let females=array.filter(a=>a.SEX=='FEMALE'); 
 
let dates=males.map(a=>a.TIME); 
 
let malesRates=males.map(a=>a.RATE); 
 
let femaleRates=females.map(a=>a.RATE); 
 
Highcharts.chart('container', { 
 
    xAxis: { 
 
     categories:dates 
 
    }, 
 
    series: [{ 
 
     name: 'Males', 
 
     data: malesRates 
 
    }, { 
 
     name: 'Females', 
 
     data:femaleRates 
 
    }], 
 

 
    responsive: { 
 
     rules: [{ 
 
      condition: { 
 
       maxWidth: 500 
 
      }, 
 
      chartOptions: { 
 
       legend: { 
 
        layout: 'horizontal', 
 
        align: 'center', 
 
        verticalAlign: 'bottom' 
 
       } 
 
      } 
 
     }] 
 
    } 
 

 
});
<script src="https://code.highcharts.com/highcharts.js"></script> 
 
<script src="https://code.highcharts.com/modules/series-label.js"></script> 
 
<script src="https://code.highcharts.com/modules/exporting.js"></script> 
 

 
<div id="container"></div>

+0

感謝。もう1つの質問がありますが、実際JSONデータには別のデータ系列を作成してハイチャートにしたいという、たくさんの地区[Arizona、Idaho、NY、AU ....]があります。それらのすべて(200個)のためにマップメソッドを書くことを減らす他の方法はありますか? – MoChen

関連する問題