【问题标题】:Charts using Highcharts with multiple series from JSON使用来自 JSON 的多个系列的 Highcharts 图表
【发布时间】:2013-07-08 12:06:20
【问题描述】:

我有一个以下格式的 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]
        ]
    }
]

我必须同时绘制“Pay Off”和“Profit”的图表。根据要求,甚至可以将更多地块添加到列表中。数据数组将 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 都是新手。请提出一种有效的方法来做到这一点。 谢谢你的帮助。。

【问题讨论】:

  • But there is some issue with it。你是要告诉我们这个问题,还是我们应该猜测?
  • 我没有得到任何情节,我无法像我所说的那样弄清楚这个问题,因为我对 JavaScript 和 Python 都是新手。请帮助您知道执行此任务的方法,即从给定格式的 JSON 文件中读取数据并使用 Highcharts 中的不同行绘制数据。

标签: javascript json highcharts


【解决方案1】:

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

【讨论】:

    【解决方案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 错误。

    这是fiddle

    【讨论】:

    • 我试过这个,但是当我从 JSON 文件中获取数据时它不起作用。此外,控制台上没有错误。从文件中读取数据是一项要求。
    • 当我试图打印从文件中读取的列表时,没有输出。我尝试读取文件的方式一定有错误。请帮帮我。
    • 在 JSON 请求中将函数分配给 .fail() 以查看 JSON 请求中的错误。看看here 看看它是如何完成的。
    • 看看Pawel's answer。您缺少键周围的引号。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    相关资源
    最近更新 更多