1

我有以下格式的 JSON 文件:

[

  { name: 'Pay Off',
    data: [ [2850,0], 
            [3135,0], 
            [3420,0], 
            [3705,0], 
            [3990,0], 
            [4275,0], 
            [4560,0], 
            [4845,0], 
            [5130,0], 
            [5415,0], 
            [5700,0], 
            [5985,285],
            [6270,570], 
            [6555,855], 
            [6840,1140],
            [7125,1425],
            [7410,1710],
            [7695,1995],
            [7980,2280],
            [8265,2565],
            [8550,2850]
        ]
},

{
    name: 'Profit',
    data: [ [2850,-250],    
            [3135,-250],
            [3420,-250],
            [3705,-250],
            [3990,-250],
            [4275,-250],
            [4560,-250],
            [4845,-250],
            [5130,-250],
            [5415,-250],
            [5700,-250],
            [5985,35],
            [6270,320],
            [6555,605],
            [6840,890],
            [7125,1175],
            [7410,1460],
            [7695,1745],
            [7980,2030],
            [8265,2315],
            [8550,2600]
        ]
    }
]

我必须一起绘制“支付”和“利润”的图表。根据要求,甚至可以将更多地块添加到列表中。数据数组将 x 轴作为第 0 个元素,将 y 轴作为第一个元素。我目前正在做的是以下 -

$(document).ready(function() {
  var options = {
      chart: {
          renderTo: 'container',
          type: 'line'
          },
    title: {
        text: 'PayOff Curve'
    },
    legend: {
            layout: 'vertical',
            align: 'right',
            verticalAlign: 'middle',
            borderWidth: 0
    },
    series: []
};
$.getJSON('data.json', function(list) {
    var newseries = {
        name: '',
        data: []
    };

    $.each(list, function(i,item){
        newseries.name = item.name;
        newseries.data = item.data;
        options.series.push(newseries);    
    });

           // Create the chart
    var chart = new Highcharts.Chart(options);
  }); 

但我根本没有任何图表。我无法弄清楚它的问题,因为我对 JavaScript 和 Python 都是新手。请提出一种有效的方法来做到这一点。谢谢你的帮助..

4

2 回答 2

4

您的 JSON 不正确,请尝试验证它。属性名称应有双引号,从:更改name: 'Pay Off'为:"name": "Pay Off"

于 2013-07-08T13:28:32.653 回答
2

您的 JSON 对 highcharts 系列有效 - 您根本不需要尝试转换它:

$(document).ready(function() {
    var options = {
        chart: {
            renderTo: 'container',
            type: 'line'
        },
        title: {
          text: 'PayOff Curve'
        },
        legend: {
            layout: 'vertical',
            align: 'right',
            verticalAlign: 'middle',
            borderWidth: 0
        },
        series: []
    };
    $.getJSON('data.json', function(list) {
        options.series = list; // <- just assign the data to the series property.
        var chart = new Highcharts.Chart(options);
    }); 
});

如果这仍然不起作用,请打开控制台以查看是否存在 JavaScript 错误。

这是一个小提琴

于 2013-07-08T12:49:13.173 回答