具有外部CSV $ .get的Highcharts - 没有xAxis日期

问题描述 投票:0回答:2

我正在尝试使用此CSV创建样条图表:

slave_id,date,time,rtc_temp,temp1,temp2,temp3
1,2017/12/26,16:42:59,21,11.50,13.13,5.88
2,2017/12/26,16:43:29,21,14.13,20.63,99.99
1,2017/12/26,16:44:00,21,11.50,13.13,5.88
2,2017/12/26,16:44:30,21,14.13,20.63,99.99
1,2017/12/26,16:45:01,21,11.50,13.13,5.88
2,2017/12/26,16:45:31,21,14.13,20.63,99.99
1,2017/12/26,16:46:02,21,11.50,13.13,5.88
2,2017/12/26,16:46:32,21,14.13,20.63,99.99

如您所见,here [IMAGE],图表显示日期和时间,但x轴不接受日期/时间。

我曾尝试使用date.UTC,但这也不起作用。有人能指出我正确的方向吗?

https://jsfiddle.net/asvoy6b9/ [由于CSV丢失而无法正常工作]

Full code [Hastebin]

csv highcharts
2个回答
1
投票

我看到代码中的date变量是一个字符串:

            // all data lines start with a double quote
            line = line.split(',');
            date = line[1] + " " + line[2];

            (...)

                RTC.push([
                    date,
                    parseInt(line[3], 10)
                ]);

如果您选择将点的选项构造为两个值的数组,并且第一个值是一个字符串,那么它将被视为其name属性(而不是x)。

说明:https://www.highcharts.com/docs/chart-concepts/series

在那种情况下,Highcharts将后续整数分配为所有点的x值(这就是为什么有00:00:00.000(1970年1月1日),00:00:00.001等值的原因)。

您需要将日期解析为时间戳。您可以使用Date.UTC()https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/UTC)或其他功能。


0
投票

我已经设法使用以下代码使用Date.UTC

var yyyymmdd = line[2].split("-"); //Split the date: 2017 12 16
var hhmmss = line[3].split(":"); //Split the time: 16 11 14
var date = Date.UTC(yyyymmdd[0], yyyymmdd[1] - 1, yyyymmdd[2], hhmmss[0], hhmmss[1], hhmmss[2]); //Stitch 'em together using Date.UTC
© www.soinside.com 2019 - 2024. All rights reserved.