我与HighCharts战斗相当长的一段时间的数据输入格式的series
选项。 最后,我看到的链接在这里解决了我的问题,数据格式和输入。
将由HighCharts饼图识别的数据格式是这样的(format 1)
通过上面的链接所指示的:
[["chrome",15],["firefox",20]]
其实我是想从外部URL 动态数据输入和格式化数据,以便HighCharts能认可它。 我从URL得到的数据格式是这样的(format 2)
[
{
"status": "Stopped \/ Idle",
"val": 17.469444444444,
}, {
"status": "Working",
"val": 0,
}, {
"status": "Headland Turning",
"val": 0,
}, {
"status": "Transport",
"val": 0.15333333333333,
}
]
这已经是JSON格式。
我只是想知道的是,我有必要从写数据分析器format 2
至format 1
? 还是我失去的东西,HighCharts可以识别JSON格式的数据,我实际上并不需要写一个解析器?
我是新来HighCharts可以随意指出这一点,如果我的一些问题描述并不能使你sense..Thank!
编辑 :感谢所有球员回答我的问题!
当脚本期望在特定格式的数据,你经常有你的数据映射到适合的格式。 这可以在服务器代码或使用JavaScript来修改
可以使用jQuery $.map
重新配置对象或阵列到另一个阵列。
DEMO: http://jsfiddle.net/qpsSe/1
请注意,在样品JSON尾随逗号需要移除验证JSON
/* "json" is your response object, modify variable names to match */
var chartData=$.map( json, function( obj,i){
return [[ obj.status, obj.val]];
})
$ .MAP API文档
在本地JavaScript替代方法
var chartData=[];
for( i=0; i<json.length; i++){
chartData.push( [ json[i]['status'], json[i]['val'] ])
}
据我所知这是Highcharts是多么希望其数据。 话虽这么说,解析器是很容易的:
var data; // this is your received data
var highchartsData = []; // this is data for highcharts
$.each(data, function(i, e) {
highchartsData.push([e.status, e.val]);
});
有一点需要注意的是,如果您收到的数据是文本(比如,从一个AJAX调用的响应),那么你需要将其转换为JavaScript对象,像这样:
var data = $.parseJSON(textData);
你需要把分配方案时做出解析器在HighCharts预处理指出基本上,你解析数据,包括它的选项:
var serie1 = json.map( function(e) {
return [e.status, e.val];
});
options.series.push({data: serie1});
这里是小提琴使用$ .MAP和选项的工作示例
由于Highcharts 3.0,类别也可以通过给每个点的名称和设置轴型到“类别”萃取。
对于列条形图这将是:
xAxis: {
type: 'category',
},
series: [{
data: [{
name: 'Point 1',
color: '#00FF00',
y: 1
}, {
name: 'Point 2',
color: '#FF00FF',
y: 5
}]
}]
您可以绑定图表使用JSON数据,直接。 你只需要设置JSON属性名称为highchart标准。 “Y”的价值和“名”的标签。
你的JSON应该像如下:
[
{
name: "Stopped \/ Idle",
y: 17.469444444444
}, {
name: "Working",
y: 0
}, {
name: "Headland Turning",
y: 0
}, {
name: "Transport",
y: 0.15333333333333
}
]