【问题标题】:Problem showing data from a csv file for highcharts为 highcharts 显示 csv 文件中的数据时出现问题
【发布时间】:2011-08-14 15:03:50
【问题描述】:

我正在尝试使用 .csv 文件中的数据创建一个高图 line 图表。但我的网页只显示 x 和 y 轴的标题,但没有数据。代码如下:

$(document).ready(function() {
    var c = [];
    var d = [];

$.get('data.csv', function(data) {                  
    alert("data in the file: " + data);
    var lines = data.split('\n');   
    $.each(lines, function(lineNo, line) {
        var items = line.split(',');
        c.push(items[0]);       
        d.push(parseInt(items[1])); 
    });
});

var options = {
        chart: {
            renderTo: 'chart',
            defaultSeriesType: 'line'
        },
        title: {
            text: 'Weight Monitor'
        },
        xAxis: {
            title: {
                text: 'Date Measured'
            },
            categories: c
        },
        yAxis: {
            title: {
                text: 'Weight (in Lbs)'
            }
        },
        series: [{
            data: d
        }]
};
var chart = new Highcharts.Chart(options);
    });

我试图在屏幕上打印从文件读取的数据,只是为了检查文件是否被正确读取并且我得到了正确的数据,但我的图表仍然没有显示任何内容。

以下是我的 csv 文件中的数据:

    2011-08-01 00:00:00,155
    2011-08-02 00:00:00,156
    2011-08-03 00:00:00,157
    2011-08-03 00:00:00,160

其中左值是要在 x 轴上显示的日期,右值是图形的读取点。

任何帮助将不胜感激。

【问题讨论】:

标签: javascript highcharts


【解决方案1】:

您的代码完美运行。


<script type="text/javascript">

    $(document).ready(function() {

        var c = [];
        var d = [];

        $.get('data.csv', function(data) {
            var lines = data.split('\n');
            $.each(lines, function(lineNo, line) {
                var items = line.split(',');
                c.push(items[0]);
                d.push(parseInt(items[1]));
            });
        });

        var options = {
                chart: {
                    renderTo: 'chart',
                    defaultSeriesType: 'line'
                },
                title: {
                    text: 'reading'
                },
                xAxis: {
                    title: {
                        text: 'Date Measurement'
                    },
                    categories: c
                },
                yAxis: {
                    title: {
                        text: 'reading'
                    }
                },
                series: [{
                    data: d
                }]
        };

        var chart = new Highcharts.Chart(options);

    });


</script>   

复制整个代码并将其保存为目录中的 .html 文件,并在同一目录中创建 data.csv 文件,并确保没有空行、不需要的空格和换行符结束。

然后打开 .html 文件,图表应该会显示正确的数据。

【讨论】:

    【解决方案2】:

    在 $.get 中添加图表。 注意,我们不能在 Ajax 回调之外创建图表,因为我们必须等待从服务器返回的数据。见this

    $.get('data.csv', function(data) {
    
            var lines = data.split('\n');
    
            $.each(lines, function(lineNo, line) {
                var items = line.split(',');
                c.push(items[0]);
                d.push(parseInt(items[1]));
            });
            var chart = new Highcharts.Chart(options);
    
        },'Text');
    

    还要明确提及 "Text" 的数据返回类型,这在某些时候可能会成为问题。

    【讨论】:

      【解决方案3】:

      您必须正确阅读文档。见http://www.highcharts.com/documentation/how-to-use#preprocessing

      他们已经有一个 csv http://highcharts.com/studies/data-from-csv.htm 的演示。

      请浏览文档并熟悉自己! .

      【讨论】:

      • 感谢您的回复。但我完全阅读了文档,甚至尝试编写与演示 csv 文件一样的确切代码,但什么也没发生。所以我通过定义简单的数组(如 var c、var d)来更改我的代码。但仍然没有动静。我不知道这是否是问题,因为我正在使用 Zend 框架 for php
      • 引用 tried to print the data read from file on screen just to check if the file was read properly and i got the proper data ,所以 Zend 框架和 PHP 都无能为力。你得到了 csv,然后你需要填充它并通过。我从未使用过它,但只是通过文档我觉得它很容易抓住。一切都很好解释。
      • 谢谢哈里。我得到了我的图表工作。这是图表问题的初始化。现在解决了。
      猜你喜欢
      • 1970-01-01
      • 2019-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多