为什么我的 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。然后我得到每个系列的单独工具提示。这个概念在这里解释:

https://www.amcharts.com/docs/v4/concepts/series/

我遇到了同样的问题,我通过添加

解决了它
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);
}