带有data.csv的Highstock从01.01.1970开始

时间:2013-06-05 08:19:27

标签: jquery csv highcharts highstock

我已经开始尝试使用Highstock图表来显示我的光伏数据。 问题是,图表从01-01-1970 00:00:00开始。 它会忽略我的csv文件中的日期和时间。

此代码与此处的一些示例相同,但不起作用。

我的data.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:06:00,160
  2011-08-04 00:00:00,120

我的index.html

$(document).ready(function() {

    var c = [];
    var d = [];
    var options = {
            chart: {
                renderTo: 'content',
                defaultSeriesType: 'line'
            },

            xAxis: {
                title: {
                    text: 'Datum'
                },
                type: 'datetime',
                categories: c
            },
            yAxis: {
                title: {
                    text: 'Stromertrag [wH]'
                }
            },
            series: [{
                data: d,
            }]
    };

    var jqxhr = $.get('../data/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.StockChart(options);

    });
});

2 个答案:

答案 0 :(得分:0)

如果您有定期间隔数据,那么您可以使用数据系列的pointStartpointInterval属性,请参阅Highcharts文档中的此示例:

plotOptions: {
    series: {
        pointStart: Date.UTC(2010, 0, 1),
        pointInterval: 24 * 3600 * 1000 // one day
    }
},

http://jsfiddle.net/gh/get/jquery/1.7.2/highslide-software/highcharts.com/tree/master/samples/highcharts/plotoptions/series-pointstart-datetime/

由于看起来您的间隔不规则,您需要将时间戳转换为unix/epoch time(毫秒)并将其与您的数据一起传递。

答案 1 :(得分:0)

Highcharts使用时间戳(以毫秒为单位的时间),因此您可以在JSON中使用pointStart / pointInterval或将miliseconds设置为x值,或使用Date.UTC()函数返回正确的数据。

数据应按x升序排序