Réutiliser l'objet jqplot pour charger ou déplacer des données

J'utilise JqPlot pour les graphiques, mon problème est que je veux charger des données différentes sur différents événements de clic.

Mais une fois que le graphique est créé et chargé avec les données pour la première fois; Je ne sais pas alors comment charger des données lorsqu'un autre événement se déclenche, ce qui veut dire que je souhaite réutiliser l'objet graphique et je veux charger / replacer les données lorsque des événements sont déclenchés comme …

chartObj.data = [graphData] 

Cela semble fonctionner pour replacer les données.

 chartObj.series[0].data = [[0, 4], [1, 7], [2, 3]]; chartObj.replot(); 

Vous pouvez également vérifier ceci: https://groups.google.com/group/jqplot-users/browse_thread/thread/59df82899617242b/77fe0972f88aef6d%3Fq%3D%2522Groups.%2BCom%2522%2377fe0972f88aef6d&ei=iGwTS6eaOpW8Qpmqic0O&sa=t&ct=res&cd= 71 & source = groups & usg = AFQjCNHotAa6Z5CIi_-BGTHr_k766ZXXLQ? Hl = fr , j'espère que cela vous aidera.

Bien qu'il s'agisse d'une ancienne question.

Comme la réponse acceptée ne fonctionnait pas pour moi et je ne pouvais pas trouver une solution dans les documents jqPlot non plus. Je suis venu à cette solution

 var series = [[1,2],[2,3]]; chartObj.replot({data:series}); 

Src: Regardez la fonction de replot .

 function (am) { var an = am || {}; var ap = an.data || null; var al = (an.clear === false) ? false : true; var ao = an.resetAxes || false; delete an.data; delete an.clear; delete an.resetAxes; this.target.trigger("jqplotPreReplot"); if (al) { this.destroy() } if (ap || !L.isEmptyObject(an)) { this.reInitialize(ap, an) } else { this.quickInit() } if (ao) { this.resetAxesScale(ao, an.axes) } this.draw(); this.target.trigger("jqplotPostReplot") } 

La ligne if (ap || !L.isEmptyObject(an)) { this.reInitialize(ap, an) }
Nous montre qu'il a besoin d'une valeur de vérité pour pouvoir passer comme premier paramètre de la fonction de réinitialisation interne. var ap = an.data || null; est défini comme var ap = an.data || null; var ap = an.data || null;

C'est aussi simple que cela, mais malheureusement pas documenté partout où je pourrais le trouver


Notez que si vous souhaitez redessiner certaines choses définies dans vos options jqPlot, comme les étiquettes de légende, vous pouvez simplement passer n'importe quelle option à la fonction replot. Rappelez-vous simplement que la série réelle à replot doit être nommée "données"

 var options = { series : [{ label: 'Replotted Series', linePattern: 'dashed' }], //^^^ The options for the plot data : [[1,2],[2,3]] //^^^ The actual series which should get reploted } chartObj.replot (options) 

Graphique vide div, avant de rendre le graphique

 $('#graphDiv').empty(); plot = $.jqplot('graphDiv', [graphValues], graphOptions); 

Je cherchais une mise à jour rapide des données dynamiques.

Selon la documentation , les données NE DOIVENT PAS être spécifiées dans l'objet d'options ( violon ),

 plot1.replot({data: [storedData]}); // not recommended 

Mais passez comme deuxième argument à la fonction $ .jqplot ().

 if (plot1) plot1.destroy(); plot1 = $.jqplot('chart1', [storedData]); // similar speed to replot 

Le violon montre que cela peut se faire avec des performances similaires.

L'API a une méthode de repli / redessiner

Redessiner Cela permet de modifier les données et les propriétés du diagramme, puis de nettoyer clairement l'intrigue et de redessiner.