【问题标题】:To create piechart in highcharts在 highcharts 中创建饼图
【发布时间】:2013-12-09 13:05:16
【问题描述】:

下面是我想要在 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);

           });

       });
   },

并且此功能与其他类型的图表(如条形图、折线图和柱形图)一起运行良好......经过各种图表测试,我只遇到饼图的问题......任何帮助将不胜感激

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

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

下面是我得到的输出,

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

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

  {
    "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}]}]}

【问题讨论】:

  • 不要改变你的系列对象。您最初发布的那个看起来不错。使用原始数据对象尝试我的解决方案。
  • 嘿@SteveP..我做到了..但它不起作用..
  • 再试一次。我有一个错字。
  • @SteveP..thanks ..它工作..我搞砸了一个逗号..非常感谢

标签: javascript jquery json charts highcharts


【解决方案1】:

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

如果您可以更改网络服务,请让它在您的 json 中添加以下内容:

 chart: {
    },

如果你不能改变后端,你可以改变你的javascript在设置renderTo之前添加图表对象:

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

【讨论】:

  • 谢谢..但是如果您看到我更新的问题,那么您就会知道我也包含了图表标签..您可以查找更新的问题..它将非常感谢我那么..谢谢,
  • ..你能检查我更新的输出并告诉我有什么问题吗..我无法绘制饼图...
  • 您的系列数据有误。您需要一个具有多个数据点的系列对象。您原始代码中的系列是正确的。
  • @SteveP... 你能告诉我如何在列表中使用两个参数吗?请参阅下面的链接以获取完整问题 [stackoverflow.com/questions/20490623/….. 问题是当我序列化我的最终变量时它给我的数据内容为字符串:浮点数,这不是所需的格式
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多