为什么我的 AmChart XYChart 只显示多个系列的单个工具提示?
Why is my AmChart XYChart only showing a single tooltip for multiple series?
我正在使用 AmCharts v4 创建一个包含 3 个系列的 XYChart。创建每个系列时,我分配一个工具提示:
series.tooltipText = "{name}: [bold]{valueY}[/]";
但是,图表最终只显示一个工具提示(温度:-50)。
Whosebug 上有很多关于相反问题的问题:用户看到默认显示的多个工具提示,而他们想看到一个组合的工具提示。例如,我希望我的图表看起来像这个问题中的图表:
我怎么可能创建了 3 个系列,每个都正确显示,每个都分配了一个工具提示,但悬停时我只看到一个工具提示?
好的,解释是:我正在创建一个图表并将我的数据直接推送到 chart.data。
事实证明,我需要将每个系列的特定系列数据点单独推送到 series.data。然后我得到每个系列的单独工具提示。这个概念在这里解释:
我遇到了同样的问题,我通过添加
解决了它
widget.chart.series.getIndex(j).data = datas;
而不是
widget.chart.data = datas;
我发现一个解决方案可能有帮助,它是用 Angular 框架编写的。我写了一个通用函数,就是把图表数据一个一个上传。
private uploadChartData(readings: Reading[], dataFieldX: string, dataFieldY: string): void {
const seriesIndex: number = this.findSeriesIndex(dataFieldY);
for (const reading of readings) {
const chartData = {
[dataFieldX]: reading.timeStamp,
[dataFieldY]: reading.value
};
this.addOneChartData(chartData, seriesIndex);
}
}
private findSeriesIndex(seriesName: string): number {
for (let i = 0; i < this.chart.series.values.length; i++) {
if (this.chart.series.values[i].dataFields.valueY === seriesName) {
return i;
}
}
return 0;
}
private addOneChartData(chartData: any, seriesIndex: number): void {
this.chart.addData(chartData);
this.chart.series.getIndex(seriesIndex).addData(chartData);
}
我正在使用 AmCharts v4 创建一个包含 3 个系列的 XYChart。创建每个系列时,我分配一个工具提示:
series.tooltipText = "{name}: [bold]{valueY}[/]";
但是,图表最终只显示一个工具提示(温度:-50)。
Whosebug 上有很多关于相反问题的问题:用户看到默认显示的多个工具提示,而他们想看到一个组合的工具提示。例如,我希望我的图表看起来像这个问题中的图表:
我怎么可能创建了 3 个系列,每个都正确显示,每个都分配了一个工具提示,但悬停时我只看到一个工具提示?
好的,解释是:我正在创建一个图表并将我的数据直接推送到 chart.data。
事实证明,我需要将每个系列的特定系列数据点单独推送到 series.data。然后我得到每个系列的单独工具提示。这个概念在这里解释:
我遇到了同样的问题,我通过添加
解决了它widget.chart.series.getIndex(j).data = datas;
而不是
widget.chart.data = datas;
我发现一个解决方案可能有帮助,它是用 Angular 框架编写的。我写了一个通用函数,就是把图表数据一个一个上传。
private uploadChartData(readings: Reading[], dataFieldX: string, dataFieldY: string): void {
const seriesIndex: number = this.findSeriesIndex(dataFieldY);
for (const reading of readings) {
const chartData = {
[dataFieldX]: reading.timeStamp,
[dataFieldY]: reading.value
};
this.addOneChartData(chartData, seriesIndex);
}
}
private findSeriesIndex(seriesName: string): number {
for (let i = 0; i < this.chart.series.values.length; i++) {
if (this.chart.series.values[i].dataFields.valueY === seriesName) {
return i;
}
}
return 0;
}
private addOneChartData(chartData: any, seriesIndex: number): void {
this.chart.addData(chartData);
this.chart.series.getIndex(seriesIndex).addData(chartData);
}