【发布时间】:2017-12-20 04:00:45
【问题描述】:
我正在使用以下代码在 CanvasJS 中呈现 OHLC 图表:
<script>
var candleData = [];
var chart = new CanvasJS.Chart("chartContainer", {
title: {
text: 'Demo Stacker Candlestick Chart (Realtime)'
},
zoomEnabled: true,
axisY: {
includeZero: false,
title: 'Price',
prefix: '$'
},
axisX: {
interval: 1,
},
data: [{
type: 'ohlc',
dataPoints: candleData
}
]
});
function mapDataToPointObject(data) {
var dataPoints = [];
for(var i = 0; i < data.length; i++) {
var obj = data[i];
var newObj = {
x: new Date(obj.time),
y: [
obj.open,
obj.high,
obj.low,
obj.close
]
}
dataPoints.push(newObj);
}
return dataPoints;
}
function updateChart() {
$.ajax({
url: 'http://localhost:8080',
success: function(data) {
candleData = JSON.parse(data);
candleData = mapDataToPointObject(candleData);
chart.render();
}
});
}
$(function(){
setInterval(() => {
updateChart();
}, 500);
});
数据正确加载,解析为正确的格式,并且render() 在间隔内被调用,就像它应该的那样。问题是,虽然图表轴和标题都正确呈现,但没有数据显示。图表为空。
工作原理是将数据直接设置到图表中
chart.options.data[0].dataPoints = candleData;
为什么我上面的解决方案不起作用呢?有没有一种方法可以更新图表的dataPoints,而无需硬编码图表数据点的直接访问器?
【问题讨论】:
标签: javascript canvasjs