2011-03-28 16 views
5

que tienen un gráfico flotante que ya está prestando una serie de datos, es decirTerreno una nueva serie sobre un gráfico flot jQuery prestado ya-

var plot = $.plot($('#placeholder'), [data1], options); 

En un momento posterior, que recibirá algunos datos nuevos que quiero también trazar en este mismo gráfico, como una serie de datos separada. ¿Hay alguna forma de que pueda agregar esta nueva serie de datos al gráfico existente y no tener que construir todo el gráfico nuevamente? Es decir, que quiero evitar tener que realizar otra llamada así:

var plot = $.plot($('#placeholder'), [data1, data2], options); 

y en lugar de hacer una llamada como esta:

plot.addSeries([data2], option); 

Gracias!

Respuesta

1

Crea una llamada ajax que extrae tu información y la envía a un método capaz de manejar múltiples gráficos al restablecer la información del gráfico. Primero, tome el elemento que contiene su gráfico y guárdelo en una variable, luego cree una llamada ajax que extraiga la información que necesita para crear su gráfico. En caso de éxito, llame a resetGraph y pase la información.

var dataview = $("#placeholder"); 
$.ajax({ 
    url: "index.php", 
    data: "stuff&junk&things", 
    method: 'GET', 
    dataType: 'json', 
    success: function(msg){ 
     resetGraph(msg.dataview, msg.data, msg.data_ticks, msg.) 
    } 
}); 

function resetGraph(dataview, data, data_ticks){ 

    plot = $.plot(dataview, data, { 
     points: { show: true, radius: 5 }, 
     xaxis: { ticks: data_ticks, tickSize: 7 }, 
     yaxis: {labelHeight: 2} 
    }); 

} 

Ahora, cuando usted necesita cambiar su gráfico, simplemente disparar una llamada a su script, agarra la información, lo envía a resetGraph en caso de éxito, y se actualizará en consecuencia.

2

@Black Box Operations tiene los detalles generales bastante bien. Hay algunos problemas antes de la última versión (0.7) con fugas de memoria cuando llama repetidamente al $.plot(...). O actualizar a la última versión, o mirar en hacer plot.setData(), plot.setupGrid() y plot.draw()

Usted puede obtener los detalles de la setData, setupGrid, y dibujar los métodos de la API.txt

+0

Gracias @Black Caja de Operaciones y @Ryley. Entonces, estoy interpretando sus respuestas diciendo que * do * tengo que volver a dibujar la trama completa, con potencialmente la ruta más eficiente que es: var newResult = plot.getData() –

+0

Sí, definitivamente no hay forma de agregar una serie sin volver a dibujar todo ... usted * puede * omitir setupGrid si sabe que los nuevos datos no están cambiando los valores max/min x/y. – Ryley

+0

Gracias @Black Box Operations y @Ryley. Por lo tanto, estoy interpretando sus respuestas diciendo que 'tengo que * tengo que volver a dibujar toda la trama, con potencialmente la ruta más eficiente siendo algo así como: plot.setData(plot.getData().push(data2)); plot.draw()

Cuestiones relacionadas