私は HighCharts Spline Irregular Data に取り組んでいます。ここで、データは次のように渡されます
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) で datetime を UTC またはその他の datetime 形式に変換するにはどうすればよいですか?
これが私が試したことです。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]]
このデータをハイチャートに渡すと、Y 軸には正しい値が表示されますが、X 軸 (日時をプロットする必要がある) には時間が 05:52 として表示されます。
どうすれば修正できますか?
これが私のハイチャートコードです。
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,
}]
});
}