2010-12-23 14 views
14

Estoy usando JqPlot para gráficos, mi problema es que quiero cargar datos diferentes en diferentes eventos de clic.reutilizar objeto jqplot para cargar o recuperar datos

Pero una vez que se crea el cuadro y se carga con los datos por primera vez; No sé entonces cómo cargar datos cuando otro desencadena el evento que eso significa que quieren volver a utilizar el objeto de gráfico y quieren cargar/Replot los datos cuando los eventos son despedidos algo así como ...

chartObj.data = [graphData] 
+0

¿Me podría decir cómo utilizar el trazado en el caso de que yo tenga un gráfico circular? No parece la respuesta de grilix a trabajar para yo. – Sohaib

Respuesta

19

Parece que funciona para volver a copiar los datos.

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

Además, se puede comprobar esto: 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=en, espero que ayude.

+2

http://stackoverflow.com/a/19471949 - gran respuesta con la prueba :) Más rápido es destruir la trama y reinícielo con nuevos datos –

+0

De acuerdo con la documentación, NO se deben especificar los datos en el objeto de opciones. http://www.jqplot.com/docs/files/jqplot-core -js.html # jqPlot.data. No siempre funciona como se muestra en http://jsfiddle.net/ZqCXP/602/ en comparación con http://jsfiddle.net/ZqCXP/601/ o http://jsfiddle.net/ZqCXP/600/ – PaulH

0

The API has a replot/redraw method

Redraw Esto permite cambiar los datos y las propiedades de la trama y luego a borrar completamente la trama y volver a dibujar.

+3

Bueno, el problema es que no sé cómo usarlo, ¿podría darme el ejemplo? – Hunt

17

Aunque esta es una vieja pregunta.

Como la respuesta aceptada no funcionó para mí y tampoco pude encontrar una solución en los documentos jqPlot. Vine a esta solución

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

Src: Echando un vistazo a la función 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 línea if (ap || !L.isEmptyObject(an)) { this.reInitialize(ap, an) }
nos muestra que necesita un valor Truthy para ap a pasarlo como primer parámetro a la función reinitialize interna. que se define como var ap = an.data || null;

Es tan simple como esto, pero por desgracia no documentado en cualquier lugar que podría encontrar que


Tenga en cuenta que si desea volver a dibujar algunas cosas definidas en las opciones de jqPlot, como etiquetas de leyenda, se puede simplemente pasar cualquier opción a la función de repuesta. Sólo recuerde la serie real a Replot tiene que ser llamado "datos"

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) 
+1

MUCHAS GRACIAS para esto. estado buscando toda la mañana cómo pasar estos datos. Lo único que funcionó en la red. – briansol

+1

De nada =) Sí, eso es exactamente lo que me obligó a echar un vistazo a la fuente ... – C5H8NNaO4

+0

Esto es increíble. ¡Gracias! – Boyang

1

vacío div gráfica, antes de representar el gráfico

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

jqplot permite una actualización rápida de datos dinámico.

De acuerdo con el (sección de datos) documentation, "datos no deben ser especificados en las opciones del objeto ..." (fiddle)

plot1.replot({data: [storedData]}); // data should not be passed this way 

" ... pero se pasa como el segundo argumento para la función $ .jqplot()."

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

Los fiddle espectáculos esto se puede hacer con un rendimiento similar.

Cuestiones relacionadas