在highcharts中创建饼图

时间:2013-12-09 13:05:16

标签: javascript jquery json charts highcharts

以下是我想要在highcharts中创建饼图的JSON数据格式。

{
  "title": {"text": "Pie"},

  "series": 
  [
    {
        "type": "pie",
        "name": "Actual",
        "data": 
         [
            [
                "Salesgrowth",
                45
            ],
            [
                "marketshare",
                26.8
            ]
         ]
    }
  ]
}

这是有效的JSON,我从Web服务获取此输出,当我调用此服务并唤起此方法运行此JSON输出以创建饼时,我得到如下错误,

Uncaught TypeError: Cannot set property 'renderTo' of undefined 

下面是我用来调用我的文件的JQuery函数,我从我的Web服务中存储了这个JSON输出,

function loadJson() {
       $(document).ready(function () {
           //alert("inside");
           var chart;
           var seriesData;
           $.getJSON("val1.json", function (data) {
               var chartoptions = data;
               chartoptions.chart.renderTo = 'container';
               chart = new Highcharts.Chart(chartoptions);

           });

       });
   },

并且此功能与其他类型的图表(如条形图,折线图和柱形图)运行良好...使用各种图表进行测试,我只能用饼图面临问题...任何帮助将不胜感激< / p>

---------更新的问题------  下面是我为了获取值而更改的JSON输出

{
   "title":{"text":"Financial"},
   "chart":{"type":"pie"},
   "series":
     [ {"name":"Actual-Market Share","data":["Market Share",30]},{"name":"Actual-Market Share","data":["Sales Growth",70]}]}

以下是我得到的输出,

我无法确定我到底搞砸了什么......任何想法都会有很大的帮助......

enter image description here

----------更新了输出-----------

  {
    "legend":{"enabled":"true"},
    "title":{"text":"Financial"}, 
    "chart":{"type":"pie"},
    "series":[{"name":"Actual","data":[{"str":"Market Share","flo":20}]},
              {"name":"Actual","data":[{"str":"Sales Growth","flo":30}]},
              {"name":"Actual","data":[{"str":"Operating Profit","flo":40}]},
              {"name":"Actual","data":[{"str":"Gross Margin %","flo":10}]}]}

1 个答案:

答案 0 :(得分:1)

您的json不包含图表对象,因此设置chart.renderTo将不起作用。

如果您可以更改网络服务,请将其添加到您的json:

 chart: {
    },

如果无法更改后端,可以在设置renderTo之前更改javascript以添加图表对象:

$.getJSON("val1.json", function (data) {
           var chartoptions = data;
           if (typeof chartoptions.chart === 'undefined')  {
               chartoptions.chart = {};
           }
           chartoptions.chart.renderTo = 'container';
           chart = new Highcharts.Chart(chartoptions);
       });