javascript - Apex 蜡烛图未更新
问题描述
我正在使用角度顶点图表来创建蜡烛图。
我的 html 看起来像这样:
<apx-chart
[series]="chartOptions.series"
[chart]="chartOptions.chart"
[xaxis]="chartOptions.xaxis"
[title]="chartOptions.title"
></apx-chart>
我用示例数据初始化图表,这样我就可以看到它工作了。当我尝试从我的 websocket 动态更新图表时,没有任何反应(示例数据仍然存在)component.ts:
this.chartOptions = {
series: [{
name: "My-series",
data: this.getSampleData()
}],
chart: {
height: 350,
type: "candlestick"
},
title: { text: "BTC SMA Chart"},
xaxis: { type: 'datetime' }
};
this.connection.on("candlesReceived", (candleJson) => {
var candle = JSON.parse(candleJson);
console.log("open: " + candle.open + " high: "
+ candle.high + " low:" + candle.low + " close:" + candle.close);
this.data.push({ x:Date.parse(candle.timeStamp), y: [candle.open, candle.high, candle.low, candle.close]})
this.chartOptions.series = [{ data: this.data }]
})
根据文档,您更新所需要做的就是重新分配系列。然而,这是行不通的。
如何动态更新我的图表以使其实时运行?
解决方案
很难说为什么它不适用于您提供的有限代码,但我创建了您提供的链接示例的分支,我通过单击按钮将其附加到图表系列。
代码:
let data = this.chartOptions.series[0].data;
data.push({
x: new Date(1538894800000),
y: [6669.81, 6660.5, 6663.04, 6663.33]
});
this.chartOptions.series = [
{
data: data
}
];
另外Date.parse(candle.timeStamp)
返回一个 int 值,而不是我认为您想使用日期,因此您应该执行以下操作:
new Date(Date.parse(candle.timeStamp));
如果您在 websocket 事件上执行此操作,只需确保您访问的是正确的 chartOptions 实例,它应该可以正常工作。
推荐阅读
- javascript - GRT 修复了响应式菜单 - jQuery 插件 - 关闭菜单的问题(点击链接后)
- google-apps-script - 获取表索引
- javascript - ReactJS 在生产中没有缩小错误
- javascript - 如何在嵌套对象中推送响应
- python - 如何在python中使用自己的键对数组进行排序
- r - 在 R 中使用卡方检验 (GOF) 的正确方法
- android - 我想压缩图像
- c# - 如何在 C# 中以编程方式在 Windows 窗体上激活上下文帮助模式
- makefile - 内核配置无效 - raspberry rtl8812au 驱动程序
- python - 使用科学刻度python时的pyplot数量级字体大小修改