Javascript NGX图表气泡图如何重新加载显示的数据
我有一张ngx图表中的气泡图(用它作为散点图,但不管怎样)。HTML设置为,当用户单击页面的某个元素时,图表的内容会根据Javascript NGX图表气泡图如何重新加载显示的数据,javascript,angular,typescript,ngx-charts,Javascript,Angular,Typescript,Ngx Charts,我有一张ngx图表中的气泡图(用它作为散点图,但不管怎样)。HTML设置为,当用户单击页面的某个元素时,图表的内容会根据updateTitleData()函数进行更改。然而,在测试中,当我点击元素时,scatterData数组的数据会发生变化,但这不会改变实际显示的图表。所以我的问题是如何让图表在运行时动态地重新加载 我在网上读过一些关于它的文章,人们说你需要改变实际的散点数据数组,而不仅仅是它的“series”元素,我尝试在updateTitleData中创建一个数组值,保存整个数组,然后执行
updateTitleData()
函数进行更改。然而,在测试中,当我点击元素时,scatterData
数组的数据会发生变化,但这不会改变实际显示的图表。所以我的问题是如何让图表在运行时动态地重新加载
我在网上读过一些关于它的文章,人们说你需要改变实际的散点数据
数组,而不仅仅是它的“series”
元素,我尝试在updateTitleData
中创建一个数组值,保存整个数组,然后执行这个操作代码>在函数末尾,该函数再次正确设置了数据,但仍然没有导致图表更新
我还了解到,您需要在html代码中添加一个[update$]=“update$”
,然后在typescript代码中定义图表变量时使用update$:Subject=new Subject()
之后定义函数updateChart(){this.update$.next(true);}
以便在需要更新图表时调用updateChart()
。我尝试过这样做,但是由于构造函数中包含了[update$]=“update$”
元素,因此在最初加载时它只会抛出一个错误
public scatterData = [{
"name" : "LQArray",
"series" : [{
"name" : "a",
"x" : 1,
"y" : 2,
"r" : 1
}]
}];
private updateTitleData() {
if(this.regionData && this.regionData.location_quotient){
this.scatterData["series"] = [];
this.jobTitles.forEach((value) => {
var newScatterData = [{
"name":value,
"x":parseFloat(this.regionData.x_axis[value]),
"y":parseInt(this.regionData.y_axis[value]),
"r":1
}];
this.scatterData["series"].push(newScatterData);
});
}
}
这是有问题的代码。图表确实显示了开始时定义的“a”
元素,但单击该元素后应立即删除并替换该元素。我找到了它。
我错误地填充了“series”元素
我所拥有的:
this.jobTitles.forEach((value) => {
var newScatterData = [{
"name":value
"x":parseFloat(this.regionData.x_axis[value]),
"y":parseInt(this.regionData.y_axis[value]),
"r":1
}];
this.scatterData["series"].push(newScatterData);
});
我需要的是:
this.jobTitles.forEach((value) => {
var newScatterData = {
"name":value
"x":parseFloat(this.regionData.x_axis[value]),
"y":parseInt(this.regionData.y_axis[value]),
"r":1
};
this.scatterData[0]["series"].push(newScatterData);
});
this.scatterData=[...this.scatterData];
基本上需要[0]
在[“series”]
前面,并且需要从newScatterData中删除数组元素。我找到了答案。
我错误地填充了“series”元素
我所拥有的:
this.jobTitles.forEach((value) => {
var newScatterData = [{
"name":value
"x":parseFloat(this.regionData.x_axis[value]),
"y":parseInt(this.regionData.y_axis[value]),
"r":1
}];
this.scatterData["series"].push(newScatterData);
});
我需要的是:
this.jobTitles.forEach((value) => {
var newScatterData = {
"name":value
"x":parseFloat(this.regionData.x_axis[value]),
"y":parseInt(this.regionData.y_axis[value]),
"r":1
};
this.scatterData[0]["series"].push(newScatterData);
});
this.scatterData=[...this.scatterData];
基本上需要[0]
在[“series”]
前面,并且需要从newScatterData中删除数组元素