所以我有一个JSON对象,我试图用Highcharts
绘制。 JSON对象类似于以下内容:
json_data = [
{
'name': "col1",
'data': [1, 2, 3, 4, 5]},
{
'name': "col2",
'data': [2, 4, 6, 8, 10]},
{
'name': "col3",
'data': [2, 3, 4, 5, 6]},
{
'name': "col4",
'data': [-1, -2, -3, -4, -5]},
]
我可以使用以下代码通过Highcharts
绘制它:
$('#container').highcharts({
chart: {
type: 'line',
},
legend: {
layout: 'vertical',
align: 'right',
verticalAlign: 'middle',
borderWidth: 0,
},
title: {
text: 'Data',
x: -20 // center title
},
xAxis: {
title: {text: 'Velocity (m/sec)'},
},
yAxis: {title: {text: 'Force (N)'}},
series: json_data,
});
这会在我的json_data
中绘制所有4列,但我要做的是针对col2
绘制col1
,针对col4
绘制col3
相同的图表,因此图表中只有2个线图。换句话说,x轴将由col1
和col3
定义,并且两个线图将具有不同的间隔(x-ticks)。我知道我可以在series
参数中定义不同的series:
,但我很难理解如何从我的JSON对象中选择它们。
基本上我需要将我的JSON从其原始格式重新排列为两个系列的数据,如下所示:
// col2 against col1
series1 = [ [1, 2],
[2, 4],
[3, 6],
[4, 8],
[5, 10]
]
// col4 against col3
series2 = [ [2, -1],
[3, -2],
[4, -3],
[5, -4],
[6, -5]
]
任何有关如何实现这一目标的帮助将不胜感激。
答案 0 :(得分:1)
对于任何后代,这里是我提出的解决方案,假设每个数据数组的长度相同(我的用例):
var arr = [json_data];
// first series data to plot
var series1 = [];
for (var i = 0; i < arr[0][0].data.length; i++)
{
var temp = [];
temp.push(arr[0][0].data[i]);
temp.push(arr[0][1].data[i]);
series1.push(temp);
}
// second series data to plot
var series2 = [];
for (var i = 0; i < arr[0][0].data.length; i++)
{
var temp = [];
temp.push(arr[0][2].data[i]);
temp.push(arr[0][3].data[i]);
series2.push(temp);
}
在我的highcharts series:
参数中:
series: [{
name: "Series 1",
data: series1
}, {
name: "Series 2",
data: series2
}],