2

我正在尝试用输入数据提供 highcharts 图表,但面临一个问题。我通过 json 获取数据,然后将它们添加到数据中,如下所示:

function getGraphValues() {
period.deviceID = user.deviceID;
var postData = JSON.stringify(period);
var postArray = {json:postData};
$.ajax({
    type: 'POST',
    url: "getData.php",
    data: postArray,
    success: function(data)
    {
        data1 = JSON.parse(data);
        if (data1.status == "ok" )
        {
        var stats = data1.metrics.split("/");
        $(function () {
            $('#container').highcharts(
        {
            chart: {type: 'bubble',zoomType: 'xy'},
            title: {text: 'Highcharts Bubbles'},
            series: [{data: [getData(stats)]}]
        });});
        }
           else
           {
           alert("error");
           }}
});}   


function getData(stats)
{
var data;
var stats;
 for (var j = 0; j < stats.length; j++) 
 {
 data += "[" + j + "," + stats[j] + "," + stats[j]*8 + "],";
 }
 stats = data.split(",");
return stats;
}

所以,以这样的方式,我确实得到了这种形式的统计数据:[47,47,21],[20,12,4],[6,76,91],[38,30,60],[57 ,98,64],[61,17,80],[83,60,13],[67,78,75] 存储在字符串变量中。我的问题是我无法将这个字符串传递给数据输入,因为它等待的是数字而不是字符串。我应该如何以可接受的方式提供数据属性?如果需要,如何在 getData 函数中创建数组数组?谢谢你。

4

1 回答 1

1

如果我没看错你的问题,你想getData返回一个二维数组。我相信以下功能可以满足您的需求:

function getData(stats) {
    var result = [];
    for (var j = 0; j < stats.length; j++) {
        var data = [j, stats[j], stats[j]*8];
        result.push(data);
    }
    return result;
}

这是一个jsFiddle 演示

这是另一个在 highcharts 气泡图中使用上面定义的 getData 函数的示例:

$(function () {
    function getData(stats) {
        var result = [];
        for (var j = 0; j < stats.length; j++) {
            var data = [j, stats[j], stats[j]*8];
            result.push(data);
        }
        console.debug(result);
        return result;
    }

    $('#container').highcharts({
        chart: {type: 'bubble',zoomType: 'xy'},
        title: {text: 'Highcharts Bubbles'},
        series: [{data: getData([1,2,3])}]
    });
});

以及相应的jsFiddle 演示

于 2013-09-09T16:01:11.663 回答