处理 JSON 数据以在 Highcharts 中使用
Processing JSON data to use in Highcharts
我想使用 highcharts 从外部数据源制作图表。我遇到的问题是我有不兼容的数据:
{
"channel":{
"id":1123376,
"name":"Global Weather Experiment Raspberry Pi",
"latitude":"0.0",
"longitude":"0.0",
"field1":"Temperature",
"field2":"Presurre",
"field3":"Humidity",
"field4":"Air Quality",
"field5":"Rain",
"field6":"Wind Speed",
"field7":"Wind Direction",
"field8":"Wind Power",
"created_at":"2016-10-22T11:37:27Z",
"updated_at":"2017-06-11T10:01:02Z",
"last_entry_id":5438},
"feeds":[
{
"created_at":"2017-06-11T09:01:02Z",
"entry_id":5437,
"field1":"23.13"
},
{
"created_at":"2017-06-11T10:01:02Z",
"entry_id":5438,
"field1":"23.88"
}
]}
我需要转换 "created_at" 和 "field1" 使其看起来像这样:
?([
[Date.UTC(2017,6,11,09,01,02Z),23.13],
[Date.UTC(2017,6,11,10,01,02Z),23.88]
]);
当然还有更多条目,我需要帮助创建可以转换它的循环,尤其是日期。
var data={
"channel":{
"id":1123376,
"name":"Global Weather Experiment Raspberry Pi",
"latitude":"0.0",
"longitude":"0.0",
"field1":"Temperature",
"field2":"Presurre",
"field3":"Humidity",
"field4":"Air Quality",
"field5":"Rain",
"field6":"Wind Speed",
"field7":"Wind Direction",
"field8":"Wind Power",
"created_at":"2016-10-22T11:37:27Z",
"updated_at":"2017-06-11T10:01:02Z",
"last_entry_id":5438},
"feeds":[
{
"created_at":"2017-06-11T09:01:02Z",
"entry_id":5437,
"field1":"23.13"
},
{
"created_at":"2017-06-11T10:01:02Z",
"entry_id":5438,
"field1":"23.88"
}
]}
//console.log(data.feeds)
var rqData=data.feeds;
var formattedData=[]
for(var i=0;i<rqData.length;i++){
//formattedData array contains (fist data) date in milliseconds and (second data) in number
formattedData.push([Date.parse(rqData[i].created_at),Number(rqData[i].field1)])
}
//console.log(formattedData)
Highcharts.chart('container', {
chart: {
type: 'spline'
},
title: {
text: 'Snow depth at Vikjafjellet, Norway'
},
subtitle: {
text: 'Irregular time data in Highcharts JS'
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats: { // don't display the dummy year
month: '%e. %b',
year: '%b'
},
title: {
text: 'Date'
}
},
yAxis: {
title: {
text: 'Snow depth (m)'
},
min: 0
},
tooltip: {
headerFormat: '<b>{series.name}</b><br>',
pointFormat: '{point.x:%e. %b}: {point.y:.2f} m'
},
plotOptions: {
spline: {
marker: {
enabled: true
}
}
},
series: [{
name: 'Some Year',
// Define the data points. All series have a dummy year
// of 1970/71 in order to be compared on the same x axis. Note
// that in JavaScript, months start at 0 for January, 1 for February etc.
data: formattedData
}]
});
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
在 highcharts 中通过 formattedData
作为
series: [{
name: 'Some Year'
data: formattedData
}]
并且 xAxis
包含 type: 'datetime',
我想使用 highcharts 从外部数据源制作图表。我遇到的问题是我有不兼容的数据:
{
"channel":{
"id":1123376,
"name":"Global Weather Experiment Raspberry Pi",
"latitude":"0.0",
"longitude":"0.0",
"field1":"Temperature",
"field2":"Presurre",
"field3":"Humidity",
"field4":"Air Quality",
"field5":"Rain",
"field6":"Wind Speed",
"field7":"Wind Direction",
"field8":"Wind Power",
"created_at":"2016-10-22T11:37:27Z",
"updated_at":"2017-06-11T10:01:02Z",
"last_entry_id":5438},
"feeds":[
{
"created_at":"2017-06-11T09:01:02Z",
"entry_id":5437,
"field1":"23.13"
},
{
"created_at":"2017-06-11T10:01:02Z",
"entry_id":5438,
"field1":"23.88"
}
]}
我需要转换 "created_at" 和 "field1" 使其看起来像这样:
?([
[Date.UTC(2017,6,11,09,01,02Z),23.13],
[Date.UTC(2017,6,11,10,01,02Z),23.88]
]);
当然还有更多条目,我需要帮助创建可以转换它的循环,尤其是日期。
var data={
"channel":{
"id":1123376,
"name":"Global Weather Experiment Raspberry Pi",
"latitude":"0.0",
"longitude":"0.0",
"field1":"Temperature",
"field2":"Presurre",
"field3":"Humidity",
"field4":"Air Quality",
"field5":"Rain",
"field6":"Wind Speed",
"field7":"Wind Direction",
"field8":"Wind Power",
"created_at":"2016-10-22T11:37:27Z",
"updated_at":"2017-06-11T10:01:02Z",
"last_entry_id":5438},
"feeds":[
{
"created_at":"2017-06-11T09:01:02Z",
"entry_id":5437,
"field1":"23.13"
},
{
"created_at":"2017-06-11T10:01:02Z",
"entry_id":5438,
"field1":"23.88"
}
]}
//console.log(data.feeds)
var rqData=data.feeds;
var formattedData=[]
for(var i=0;i<rqData.length;i++){
//formattedData array contains (fist data) date in milliseconds and (second data) in number
formattedData.push([Date.parse(rqData[i].created_at),Number(rqData[i].field1)])
}
//console.log(formattedData)
Highcharts.chart('container', {
chart: {
type: 'spline'
},
title: {
text: 'Snow depth at Vikjafjellet, Norway'
},
subtitle: {
text: 'Irregular time data in Highcharts JS'
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats: { // don't display the dummy year
month: '%e. %b',
year: '%b'
},
title: {
text: 'Date'
}
},
yAxis: {
title: {
text: 'Snow depth (m)'
},
min: 0
},
tooltip: {
headerFormat: '<b>{series.name}</b><br>',
pointFormat: '{point.x:%e. %b}: {point.y:.2f} m'
},
plotOptions: {
spline: {
marker: {
enabled: true
}
}
},
series: [{
name: 'Some Year',
// Define the data points. All series have a dummy year
// of 1970/71 in order to be compared on the same x axis. Note
// that in JavaScript, months start at 0 for January, 1 for February etc.
data: formattedData
}]
});
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/modules/exporting.js"></script>
<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>
在 highcharts 中通过 formattedData
作为
series: [{
name: 'Some Year'
data: formattedData
}]
并且 xAxis
包含 type: 'datetime',