首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >高级图表:解析多变量JSON数据

高级图表:解析多变量JSON数据
EN

Stack Overflow用户
提问于 2013-01-30 09:21:38
回答 1查看 2.9K关注 0票数 1

我正在尝试制作一个类似于本演示中的图表的高级图表:使用json数据的http://www.highcharts.com/demo/column-basic,但我不知道如何在合理的情况下解析json数据。我的数据按星期分类,分为三类.以下是一个例子:

代码语言:javascript
复制
{ "Monday": { "inv": 1126, "oppm": 276, "perc": "24.51" }, "Tuesday": { "inv": 1072, "oppm": 273, "perc": "25.47" }, "Wednesday": { "inv": 1032, "oppm": 271, "perc": "26.26" }, "Thursday": { "inv": 989, "oppm": 259, "perc": "26.19" }, "Friday": { "inv": 937, "oppm": 240, "perc": "25.61" } }

有办法在简单的事情上做到这一点吗?如果我改变我的json数据结构会有帮助吗?

提前感谢!

编辑:解决方案:

我找到了一种不太复杂的方法,尽管我相信如果你知道你的JS,它会更容易做。无论如何,这个解决方案与我的JSON数据一起工作得很好:

代码语言:javascript
复制
//Convert received AJAX data
success: function(data)
{                       
    cleanData = $.parseJSON(data);

    //Make some empty arrays for the categories and data
    days = Array();
    inv = Array();
    oppm = Array();
    perc = Array();

    //Iterate the data and fill in the new arrays
    $.each(cleanData, function(index, value) {
        days.push(index);
        inv.push(parseFloat(value['inv']));
        oppm.push(parseFloat(value['oppm']));
        perc.push(parseFloat(value['perc']));
    });

    //Use the new arrays in the chart
    chart1 = new Highcharts.Chart({
        chart: {
            renderTo: 'div_chart',
            type: 'column'
        },
        xAxis:{
            categories: days,
            title: {
                text: 'Week day'
            }
        },
        series: [{
                name: 'Invited',
                data: inv
            }, {
                name: 'Met',
                data: oppm
            }, {
                name: '%',
                data: perc
            }],
   });
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-01-30 09:51:03

您可以在这里编辑这个示例:http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/demo/column-basic/

在查看了如何对其进行格式化以及如何将数据添加到脚本之后,似乎有几个for循环可以工作,但我认为您需要稍微更改JSON格式。

下面是我要做的方法(psueodocode):

代码语言:javascript
复制
var json = [
    {
        "day":"monday",
        "inv": 1126, 
        "oppm": 276, 
        "perc": "24.51"

    },
    {
         "day":"Tuesday",
         "inv": 1072, 
         "oppm": 273, 
         "perc": "25.47" 
    }
];

然后,通过循环遍历高海图调用中的“类别”选项,并获得所有的时间:

代码语言:javascript
复制
var myCategories;
var idx=0;
for (var key in json) {
    myCategories[idx]=json[key]['day'];
    idx++;
}

然后在High图表配置中:

代码语言:javascript
复制
 xAxis: {
            categories: myCategories
        },

然后,您所需要做的就是再次做相同的事情,在highchars的“系列”调用中设置您的数据点,这将涉及到更多的内容,但也是相同的想法。

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14600422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档