javascript - 具有来自 JSON 的多个系列的 Highcharts

标签 javascript json highcharts

经过几天的阅读和测试(并且已经在这里发布但问题错误)我真的需要你,因为我一次又一次地失败......

我的目标:在同一张图表上有许多系列(以及 future 的许多图表) 我的数据源:一个 mysql 和一个 json 输出:

"[{"name":"Station 1","data":"1360191600,398.625"},{"name":"Station 1","data":"1360192500,398.625"},{"name":"Station 1","data":"1360193400,398.25"},{"name":"Station 1","data":"1360194300,397.375"},{"name":"Station 1","data":"1360195200,397.5"},{"name":"Station 1","data":"1360196100,397.5"},{"name":"Station 1","data":"1360199700,396.75"},{"name":"Station 1","data":"1360200600,397"}...

这些数据是一个例子,因为在正常时间我有很多站,有些只有时间戳数据。

此时我最大的失败是将这些信息发送到系列:[] 选项。

我尝试了一些这样的循环:

            data=JSON.parse(data) ;
            var series = [];
            series.data = [];
            $.each(data,function(i,ligne) {

                var string = JSON.stringify(ligne);
                var obj = $.parseJSON(string);
                //var index_serie = obj.name.slice(0,1) ;
                console.log(obj) ;
                points=(obj.data) ;
                series.name=obj.name ;
                series.data.push(points) ;
            }) ;
            options.series.push(series) ;
            console.log(options.series) ;

            var chart = new Highcharts.Chart(options);

图表的选项在 ajax 调用之前定义。

我尝试使用其他格式的 json,例如 ["name":"station1","data":"[1321654,10],[5465... 但我很难在我的 sql 中添加 []查询和 GROUP_CONCAT 有一些限制(2014 字符)

所以帮我创建一个漂亮的循环,以便用他们的名字等渲染多个系列

感谢您的帮助...

最佳答案

您不能将“几乎”JSON 更改为“另一个”JSON 吗?也许是这样的:

[{
    "name":'station 1',
    "data": [ [360191600,398.625], [360191600,398.625], [360191600,398.625] ... [360191600,398.625] ]
}, {
    "name":'station 2',
    "data": [ [360191600,398.625], [360191600,398.625], [360191600,398.625] ... [360191600,398.625] ]
}]

如果没有,您必须为您的值添加一些解析,例如:

data = JSON.parse(data);
var names = [];
$.each(data, function (i, ligne) {
    var ind = names.indexOf(ligne.name),
        splited = ligne.data.split(','),
        x = parseFloat(splited[0]),
        y = parseFloat(splited[1]);
    if (ind == -1) {
        /*series name spotted first time need to add new series */
        ind = names.push(ligne.name) - 1;
        options.series.push({
            data: [],
            name: ligne.name
        });
    } 
    if(!isNaN(x) && !isNaN(y)){
        options.series[ind].data.push([x,y]);    
    }
});

和工作 jsfiddle:http://jsfiddle.net/3bQne/40/

关于javascript - 具有来自 JSON 的多个系列的 Highcharts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14824467/

相关文章:

javascript - 是否有可能在 powerbi 视觉对象的格式 Pane 中添加下拉菜单?

javascript - 如何从数组中的 textarea HTML 标记获取数据,然后循环遍历它?

json - ColdFusion 解析 JSON

javascript - highcharts 总是控制台有关 bubble_compiled.js 的错误?

javascript - 在表中提交按钮后在 HTML 中保留 input=date 值

javascript - ng-grid:竖条没有达到应有的高度

javascript - REST api 支持的 JavaScript 表

mysql - 在 MySQL 的 WHERE 子句中使用 IF 来排序条件并更新列(节目表的列)

javascript - React highcharts中的世界地图路径数据

Highcharts 独立框架为空