Ajout de données à un highchart graphique à l'aide d'un tableau avec des Id
Je veux ajouter une série à un highchart nuage de points où je suis en nommant chaque point de la série. J'ai créer un graphique de la manière suivante:
var chart; //globally available
makeCharts = function(){
chart = new Highcharts.Chart({
chart: {
renderTo: 'container1',
type: 'scatter'
},
series: [{
name: 'a',
data: [{
'id': 'point1',
'x': 1,
'y': 2
}, {
'id': 'point2',
'x': 2,
'y': 5
}]
}]
});
}
Je voudrais être en mesure de mettre à jour les points sur la carte en utilisant quelque chose comme:
chart.series[0].setData([{id:['point3', 'point4', 'point5'], y:[0,1,2], x:[1,2,3]}])
mais ce n'est pas correct. Est-il possible de mettre à jour un tableau à l'aide de cette approche où chaque point a une ID?
EDIT:
Juste pour clarifier, je voudrais être en mesure de passer les tableaux directement, plutôt que d'ajouter les données point par point à l'aide addPoint()
. J'ai pu parcourir un tableau et utiliser addPoint()
de faire quelque chose comme ceci:
id:['point3', 'point4', 'point5'];
y:[0,1,2];
x:[1,2,3];
for (i=0; i<x.length; i++)
{
chart.series[0].addPoint({
x: x[[i],
y: y[i],
id: id[i]
});
}
Cependant, c'est très lent. C'est beaucoup plus rapide pour ajouter des données à l'aide de l'approche suivante:
chart.series[0].setData([[1,0],[2,1],[3,2]]);
J'ai trouvé que je peux ajouter des données comme ceci:
chart.series[0].setData([[1,0, 'point3'],[2,1, 'point4'],[3,2, 'point5']]);
mais alors, la seule façon que je peux accéder à la id
lorsque le point est sélectionné, c'est par this.point.config[2]
. Avec l'approche suivante, je suis incapable d'utiliser chart.get('pointID')
pour identifier un point que je n'ai pas le ID
. Je veux être en mesure d'identifier le point à l'aide seulement de la ID
.
- veuillez mettre à jour sur l'état du problème, si l'une des solutions a aidé à marquer en conséquence, s'il y avait quelque chose de bien vouloir envisager la possibilité de laisser un commentaire en moins.
- Il y a une fonction addSeries à cette fin
Vous devez vous connecter pour publier un commentaire.
Bien, généralement parlant, il y a deux façons dans laquelle vous pouvez modifier les données du graphique dynamiquement
Dans votre cas, puisque vous voulez ajouter un peu de points de manière dynamique, mais en conservant les points existants, vous devriez aller avec la méthode 2. Mais vous avez besoin de l'utiliser à l'intérieur d'une boucle, avec le redessiner être définie sur false (donc de résoudre le problème de lenteur) et puis après la boucle, appelez le redessiner méthode explicitement
Code
Ajout de plusieurs points de manière dynamique | Highcharts et Highstock @ jsFiddle
Essayez d'utiliser de la série.addPoint.
Mais si vous avez besoin de définir les données de la série, l'utilisation
addpoint()
pour parcourir un tableau qui serait aussi travailler.x=[1,2,3]; y=[0,1,2];id=['point3', 'point4', 'point5'];
Dès que vous le pouvez transmettre vos données comme ceci:
(comme vous l'avez indiqué dans la question), je peux vous suggérer d'utiliser un peu de bidouille.
Nous aurons besoin d'ajouter une autre déclaration à la méthode
applyOptions
de Highcharts.Point de prototype.Ici vous pouvez le voir en action.