简体   繁体   English

我正在尝试使用Highcharts JS创建条形图,但是条形图不会在该图上绘制吗?

[英]I'm trying to create a bar graph with Highcharts JS, but the bars won't draw on the graph?

This is my coding it works for a small csv file having couple of rows and columns but not for the file with many rows and columns. 这是我的编码,它适用于具有几行和几列的小型csv文件,但不适用于具有很多行和列的文件。

This is a part of the file for which I want to create graph: 这是我要为其创建图形的文件的一部分:

Date    Time    Tcoll   Tstor   TglyHXin    TglyHXout   TH2OHXout   Tcold       Thot
01/01/2013  0:00:54 103.34  103.32  26.94   23.06   32.31   13.81   40.06   46.06
01/01/2013  0:01:55 103.29  103.3   26.94   23.06   32.31   13.81   40.06   46
01/01/2013  0:02:55 103.29  103.33  26.95   23.06   32.31   13.81   40.06   46
01/01/2013  0:03:55 103.29  103.03  26.94   23.06   32.31   13.81   40.06   46.05
01/01/2013  0:04:55 103.34  103.27  26.94   23.06   32.31   13.81   40.06   46.02
01/01/2013  0:05:55 103.39  103.33  26.94   23.06   32.31   13.81   40.04   45.99
01/01/2013  0:06:55 103.3   103.01  26.94   23.06   32.31   13.81   40.05   45.94
01/01/2013  0:07:55 103.42  103.17  26.94   23.06   32.31   13.81   40.06   45.89
01/01/2013  0:08:55 103.37  103.16  26.94   23.06   32.31   13.8    40.03   45.88
01/01/2013  0:09:55 103.34  103.28  26.94   23.06   32.31   13.8    40.01   45.88

Here is the coding: 这是代码:

var options = {
    chart: {
        renderTo: 'container',
        defaultSeriesType: 'column'
    },
    title: {
        text: 'January Analysis'
    },
    xAxis: {
        categories: []
    },
    yAxis: {
        title: {
            text: 'Temperature'
        }
    },
    series: []
};

$.get('WEL_log_2013_01.csv', function(data) {
    // Split the lines
    var lines = data.split('\n');

    // Iterate over the lines and add categories or series
    $.each(lines, function(lineNo, line) {
        var items = line.split(',');

        // header line containes categories
        if (lineNo == 0) {
            $.each(items, function(itemNo, item) {
                if (itemNo > 0) options.xAxis.categories.push(item);
            });
        }

        // the rest of the lines contain data with their name in the first position
        else {
            var series = {
                data: []
            };
            $.each(items, function(itemNo, item) {
                if (itemNo == 0) {
                    series.name = item;
                } else {
                    series.data.push(parseFloat(item));
                }
            });

            options.series.push(series);

        }

    });

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

Hope this time I am specific with my question and will not get minus points and get closed.. 希望这次我对我的问题很具体,不会减分,不会被关闭。

Thanks 谢谢

The problem is that you have inncorect parser to your CSV, You need to produce csv which items are separated by comma, or modify parser. 问题是您的CSV解析器不正确,您需要生成csv哪些项目用逗号分隔,或修改解析器。 Because ie in this line: 因为ie在这一行:

 $.each(lines, function(lineNo, line) {
    var items = line.split(',');

You try to extract all items from line, by comma, which doens't. 您尝试用逗号提取行中的所有项目,但不要这样做。 You need to replace it by "white space": 您需要将其替换为“空白”:

var items = line.split(' ');

as you have in the CSV. 就像您在CSV中一样。 Morever you try to push "Date Time Tcoll Tstor TglyHXin TglyHXout TH2OHXout Tcold Tho" these values to categories, but I assume that you would like ot have dates from first column. 此外,您尝试将“ Date Time Tcoll Tstor TglyHXin TglyHXout TH2OHXout Tcold Tho”这些值推入类别,但是我假设您希望第一列中有日期。 As a result it should be: 结果应该是:

$.each(lines, function(lineNo, line) {
    var items = line.split(' ');

    // header line containes categories
    if (lineNo > 0) {
        var series = {
            data: []
        };

                options.xAxis.categories.push(item[0]);
                series.data.push(parseFloat(item[2]));

        options.series.push(series);

    }

});

In this series.data.push(parseFloat(item[2])) line you define which column should be y value. 在此series.data.push(parseFloat(item[2]))行中,您定义哪一列应为y值。 For instance, I choose third column. 例如,我选择第三列。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM