【发布时间】:2023-03-15 22:12:01
【问题描述】:
我正在从我的页面上的 websocket 连接接收数据,我想在 Highcharts 深度图表上绘制该数据。
深度图:https://www.highcharts.com/docs/stock/depth-chart
这是我的代码:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.highcharts.com/highcharts.js"></script>
<script language="javascript">
mySocket.onmessage = function(event) {
var data = JSON.parse(event.data);
rawAsks = data['asks']
rawBids = data['bids']
const asks = rawasks.map(x => x.map(y => parseFloat(y))) //DATA TO USE ON THE CHART
const bids = rawbids.map(x => x.map(y => parseFloat(y))) //DATA TO USE ON THE CHART
};
Highcharts.chart('container', {
chart: {
type: 'area',
zoomType: 'xy'
},
title: {
text: 'ETH-BTC Market Depth'
},
xAxis: {
minPadding: 0,
maxPadding: 0,
},
yAxis: [{
lineWidth: 1,
gridLineWidth: 1,
title: null,
tickWidth: 1,
tickLength: 5,
tickPosition: 'inside',
labels: {
align: 'left',
x: 8
}
}, {
opposite: true,
linkedTo: 0,
lineWidth: 1,
gridLineWidth: 0,
title: null,
tickWidth: 1,
tickLength: 5,
tickPosition: 'inside',
labels: {
align: 'right',
x: -8
}
}],
legend: {
enabled: false
},
plotOptions: {
area: {
fillOpacity: 0.2,
lineWidth: 1,
step: 'center'
}
},
tooltip: {
headerFormat: '<span style="font-size=10px;">Price: {point.key}</span><br/>',
valueDecimals: 2
},
series: [{
name: 'Bids',
data: Bids, //HERE GOES THE DATA
color: '#03a7a8'
}, {
name: 'Asks',
data: Asks, //HERE GOES THE DATA
color: '#fc5857'
}]
});
</script>
以下是我的图表的问题:1) 要绘制的数据是 asks 和 bids。问题是这两个变量每秒都会从 websocket 连接更新,所以它们不是静态值。 2) 如何将asks 和bids 传递给Highcharts 图表,如何在每次刷新数据时刷新图表?提前致谢!
这是我每秒收到的数据样本,需要绘制:
var sampleData = [
[7062.24, 0.402181],
[7062.56, 2.472812],
[7062.59, 0.006595],
[7063.01, 1.2001],
[7063.27, 0.4],
[7063.28, 0.100615],
[7063.48, 0.4],
[7063.76, 0.086983],
[7063.83, 0.005],
[7064.19, 0.399752],
[7064.2, 1.70819],
[7064.41, 0.25],
[7064.43, 0.015026],
]
【问题讨论】:
-
类似的答案在这里详细说明了如何在套接字收到消息时添加数据点:stackoverflow.com/a/38455929/519413
标签: javascript jquery highcharts