【问题标题】:How to generate highcharts chart from multiple local json files如何从多个本地 json 文件生成 highcharts 图表
【发布时间】:2013-12-16 03:44:38
【问题描述】:

我正在尝试使用来自多个本地保存的 json 文件的数据构建一个 highcharts 条形图,但遇到了一些麻烦。为简单起见,我想遍历所有文件,搜索特定字符串并将计数用作我的图表的数据。我是这样处理的:

options.series[0].name = 'Test';
options.series[0].data = [];

//Loop over the different local files and do a search count in each  
var localfiles = new Array('localfile1.json', 'localfile2.json');

for (var i=0; i<locfiles.length; i++) {
    //do a count here
    $.getJSON(localfiles[i], function(data) {
    var count = 0;
    var index = 0;
    var entry;
    for (index = 0; index < data.length; ++index) {
        entry = data[index];
        if (entry.searchkey == "searchstring") {
            count ++;
        }
        options.series[0].data.push(count);
    });
});

var chart = new Highcharts.Chart(options);

我意识到我没有正确传递选项数组。但我不确定我应该用什么方式编码。有什么建议吗?

提前致谢。

【问题讨论】:

    标签: javascript json highcharts local-storage


    【解决方案1】:

    要获得 2 个条,您需要将 options.series[0].data.push(count); 放在第二个循环之外,否则您最终会得到很多条增长

    options.series[0].name = 'Test';
    options.series[0].data = [];
    
    //Loop over the different local files and do a search count in each  
    var localfiles = new Array('localfile1.json', 'localfile2.json');
    
    for (var i=0; i<locfiles.length; i++) {
        //do a count here
        $.getJSON(localfiles[i], function(data) {
        var count = 0;
        var index = 0;
        var entry;
        for (index = 0; index < data.length; ++index) {
            entry = data[index];
            if (entry.searchkey == "searchstring") {
                count ++;
            }
        });
        options.series[0].data.push(count);
    });
    
    var chart = new Highcharts.Chart(options);
    

    这样你会为每个 json 文件获得 1 个栏

    回答你的评论

    你可以使用addSeries

         var series1 = {
                            data: [],
                            name: ""
                       }
         chart.addSeries(series1);
    

    如果你想删除所有以前的系列,你可以这样做

    while(chart.series.length > 0){
        chart.series[0].remove(true);
    }
    

    【讨论】:

    • 嗨,莫斯。是的,我明白你的意思(这是我的一个错误)。不过我的问题是,此时代码“选项”不再在范围内,因此我无法将计数推送到它。
    • 你可以使用addSeries查看答案
    • 谢谢 Moes,这正是我想要的。
    猜你喜欢
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多