我在Plotly中绘制number array时遇到问题。因此,我们可以不费吹灰之力地跳过主题。
这里是HTML代码:
<script src="plotly.min.js"></script>
<!-- <link rel="stylesheet" type="text/css" href="styles.css"> -->
</head>
<body>
<script src="https://www.gstatic.com/firebasejs/7.2.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.2.0/firebase-analytics.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.2.1/firebase-auth.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.2.1/firebase-database.js"></script>
<div class="navbar"><span>Analog Plotter by remidosol</span></div>
<div class="wrapper">
<div id="chart"></div>
<script src="FireConfig.js"></script>
<script>
Plotly.plot('chart',[{
y:[analogval()],
type:'line'
}]);
var cnt = 0;
setInterval(function(){
Plotly.extendTraces('chart',{ y:[[analogval()]]}, [0]);
cnt++;
if(cnt > 300) {
Plotly.relayout('chart',{
xaxis: {
range: [cnt-300,cnt]
}
});
}
},15);
</script>
</div>
</body>
如何绘制从Firebase读取的数字ARRAY?我一次更改了getData函数的返回代码。(就像我将一个num数组参数放置到getData一样,但这并没有使plot.ly代码能够绘制数据)。我可以从Firebase读取数据,但无法绘制它。
以下是我的网站和控制台的视图:It reads data but can't plot.
您能帮我吗?此代码有什么问题? 顺便说一句,Firebase配置块还可以,我在创建此主题之前对其进行了更改。我在等你的帮助。从现在开始谢谢你。编辑:我可以获取数据,并通过replace和slice方法将其转换为数字。现在是正确的。但是plot.ly代码仍然不绘制数据线。
遵循上述功能,这是下面的代码:
function analogval(){
databaseiot.orderByChild("analog").on('value', function(dataSnapshot) {
var arru = dataSnapshot.val().analog;
arru.toString();
arru = arru.replace(/\\r/g,'');
arru = arru.slice(1, 4);
arru = Number(arru);
console.log(arru);
return arru;
//arru = data.val().analog.split(",").map(Number);
})}
问题出在您的analogval()
函数中。如果我没记错的话,您当前的analogval ()
实现不会返回任何内容。您的return语句在传递给.on()
方法的回调函数中。您需要的是拥有analogval()
函数以返回数组的值。
一种方法是创建一个对array
可见的变量(例如analogval()
),并将array
的值设置为您从Firebase读取的值,然后从array
中返回analogval()
:] >
var array;
function analogval(){
databaseiot.orderByChild("analog").on('value', function(dataSnapshot) {
var arru = dataSnapshot.val().analog;
arru.toString();
arru = arru.replace(/\\r/g,'');
arru = arru.slice(1, 4);
arru = Number(arru);
console.log(arru);
array = arru;
});
return array;
}