我正在研究HighCharts样条不规则数据.这里数据传递为
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 ],
]
Run Code Online (Sandbox Code Playgroud)
但是,我是通过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 ],
]
Run Code Online (Sandbox Code Playgroud)
因此,数据点不会被绘制.如何将日期时间转换为UTC或后端(python)的任何其他日期时间格式,这将使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()
Run Code Online (Sandbox Code Playgroud)
然后将其传递给UI.因此我的数据发送为
[[1383760800.0, 1870.2000000000007], [1383762600.0, 0.30000000000000004], [1383761700.0, 4.299999999999802]]
现在,当我将此数据传递给高等图时,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,
}]
});
}
Run Code Online (Sandbox Code Playgroud)
sbe*_*rry 11
问题是HighCharts期望以毫秒而不是秒为单位给出时间序列数据,因此您需要输入乘数1000.
你可以从你的字符串转换为毫秒,因为epoch像这样:
>>> int(datetime.datetime.strptime("2013-11-07 00:10:27", "%Y-%m-%d %H:%M:%S").strftime('%s')) * 1000
1383811827000
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5695 次 |
| 最近记录: |