J'utilise AmCharts v4 pour créer un XYChart avec 3 séries. Lorsque chaque série est créée, j'attribue une info-bulle:
series.tooltipText = "{name}: [bold]{valueY}[/]";
Cependant, le graphique finit par n'afficher qu'une seule info-bulle (Température: -50).
Il y a de nombreuses questions sur StackOverflow sur le problème inverse: les utilisateurs voient plusieurs info-bulles affichées par défaut, quand ils le souhaitent voir une seule info-bulle combinée. Par exemple, je veux que mon graphique ressemble à celui de cette question:
Amcharts 4, xychart, limitant le nombre d'infobulles et combinant les infos dans une infobulle
Comment est-il possible que je avez créé 3 séries, chacune est affichée correctement, chacune a une info-bulle attribuée, mais je ne vois qu'une seule info-bulle en survolant?
3 Réponses :
D'accord, l'explication est la suivante: je créais un graphique et je transmettais mes données directement à chart.data.
Il s'avère que je dois pousser les points de données spécifiques à la série vers series.data individuellement pour chaque série. Ensuite, j'obtiens une info-bulle distincte pour chaque série. Ce concept est expliqué ici:
Im face au même problème, pouvez-vous poster le code de votre solution?
@NestorPerez désolé, c'était pour un travail précédent donc c'est propriétaire. Faites-vous ce que je suggère dans cet article? Créer d'abord le graphique et pousser les points de données individuellement?
J'ai eu le même problème et je le résolve en ajoutant
widget.chart.data = datas;
au lieu de
widget.chart.series.getIndex(j).data = datas;
Je trouve une solution peut-être que cela aide a été écrite dans le cadre angulaire. J'ai écrit une fonction générale qui télécharge les données du graphique une par une.
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); }