简体   繁体   English

Highcharts的JSON数据格式

[英]JSON Data formatting for Highcharts

I have a json object as shown below. 我有一个json对象,如下所示。 I would like it to groupBy based on a specific property say "SEX" and pass it to highcharts such that I have only one xAxis category for "TIME" and chart should look like below: 我希望它根据特定的属性groupBy说“ SEX”,并将其传递给highcharts,这样我只有一个xAxis类别用于“ TIME”,并且图表应如下所示: 在此处输入图片说明

[{"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},]

How do we achieve it for the above JSON format..?? 对于上述JSON格式,我们如何实现呢?

First of all, you should use filter method in order to obtain two arrays: one for male and another for female entities. 首先,您应该使用filter方法以获得两个数组:一个用于male实体,另一个用于female实体。

Then use map method in order to obtain dates , femaleRates and maleRates arrays . 然后使用map方法以获得datesfemaleRatesmaleRates 数组

 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); 

The last step is to display data in your chart . 最后一步是在图表中显示数据。

 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> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM