[英]Firebase data not plotting in HighCharts
我想使用Highcharts使用我的Firebase數據繪制圖形。 圖的軸出現了,但我無法繪制圖。
我正在使用的Javascript代碼:
var config = {
apiKey: "",
authDomain: "",
databaseURL: "",
projectId: "",
storageBucket: "",
messagingSenderId: ""
};
firebase.initializeApp(config);
var dbRef0 = firebase.database().ref().child("");
var dbRef1 = firebase.database().ref().child("Meter2");
var dataSetFirebaseTotalActivePower1 = [];
dbRef1.limitToLast(20).on('child_added',function(snap) {
var TotalActivePower1 = snap.val().totalActivePower;
var Time1 = snap.val().time;
dataSetFirebaseTotalActivePower1.push({x: Time1 ,y: TotalActivePower1});
console.log(dataSetFirebaseTotalActivePower1);
});
Highcharts.chart('container', {
chart: {
type: 'areaspline'
},
title: {
text: 'Total Active Power Graph'
},
legend: {
layout: 'vertical',
align: 'left',
verticalAlign: 'top',
x: 150,
y: 100,
floating: true,
borderWidth: 1,
backgroundColor: (Highcharts.theme &&
Highcharts.theme.legendBackgroundColor) || '#FFFFFF'
},
xAxis: {
type: 'datetime',
title: {
text: 'Time'
},
plotBands: [{
from: 4.5,
to: 6.5,
color: 'rgba(68, 170, 213, .2)'
}]
},
yAxis: {
title: {
text: 'Total Active Power, kWh'
}
},
tooltip: {
shared: true,
valueSuffix: ' units'
},
credits: {
enabled: false
},
plotOptions: {
areaspline: {
fillOpacity: 0.5
}
},
series: [{
data: [dataSetFirebaseTotalActivePower1]
}]
});
圖表出現,但為空。
您的圖表配置對我來說看起來不錯,您正在體驗的是Firebase中的數據是異步輸入的,這意味着在創建圖表時,您的數組為空,然后節點才開始涌入一。
您可以通過addPoint API調用將數據直接添加到圖表中,而不是填充結果數組:
渲染時間過后,向系列添加一個點。 該點可以添加到序列的開頭或中間,也可以在結尾處添加一個X值。
嘗試對您的child_added
事件回調進行此更新:
dbRef1.limitToLast(20).on('child_added', function(snap) {
var TotalActivePower1 = snap.val().totalActivePower;
var Time1 = snap.val().time;
var DataPoint = { x: Time1, y: TotalActivePower1 };
chart.series[0].addPoint(DataPoint, true);
});
您可能會了解Firebase API為何是異步的?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.