我正在研究 HighCharts Spline 不规则数据。这里的数据被传递为
data: [
[Date.UTC(1970, 9, 27), 0 ],
[Date.UTC(1970, 10, 10), 0.6 ],
[Date.UTC(1970, 10, 18), 0.7 ],
[Date.UTC(1970, 11, 2), 0.8 ],
[Date.UTC(1970, 11, 9), 0.6 ],
[Date.UTC(1970, 11, 16), 0.6 ],
]
但是,我通过 AJAX 调用从 python 后端发送数据
data: [
"2013-11-07 00:10:27", 0 ],
"2013-11-07 00:10:27", 1 ],
"2013-11-07 00:10:27", 2 ],
"2013-11-07 00:10:27", 3 ],
"2013-11-07 00:10:27", 4 ],
"2013-11-07 00:10:27", 5 ],
]
因此,不会绘制数据点。如何在后端(python)将日期时间转换为 UTC 或任何其他格式的日期时间,这将使 Highcharts 能够绘制正确的 X 和 Y 轴点。?
这是我尝试过的。由于 UTC 时间Date.UTC(1970, 9, 27)
返回秒数,因此我将时间转换为自 1970 年 1 月 1 日以来经过的总秒数。
time = "2013-11-06 18:00:00"
time = ((datetime.datetime.strptime(time, '%Y-%m-%d %H:%M:%S'))-datetime.datetime(1970,1,1)).total_seconds()
然后将其传递给 UI。因此我的数据被发送为
[[1383760800.0, 1870.2000000000007], [1383762600.0, 0.30000000000000004], [1383761700.0, 4.299999999999802]]
现在,当我将这些数据传递给 highcharts 时,Y 轴显示正确的值,但 X 轴(需要在其上绘制日期时间)显示时间为 05:52。
我该如何纠正?
这是我的 Highcharts 代码。
function comparison_chart(result) {
var MAXPOINTS = 20;
Highcharts.setOptions({
global: {
useUTC: false,
}
});
$('#container').highcharts({
chart: {
events: {
load: function() {
// set up the updating of the chart each second
var series = this.series[0];
setInterval(function() {
var x = (new Date()).getTime(), // current time
y = Math.random();
if(series.data.length > MAXPOINTS){
series.addPoint([x, y], true, true);
}
else{
series.addPoint([x, y], true, false);
}
},5000);
},
}
},
title: {
text: 'Energy Chart'
},
xAxis: {
type: 'datetime',
dateTimeLabelFormats: { // don't display the dummy year
month: '%e. %b',
year: '%b'
}
},
tooltip: {
formatter: function() {
var s;
s = this.y + 'kWh';
return s;
}
},
series: [{
type: 'spline',
name: 'Random data',
data: result,
showInLegend: true,
}]
});
}