Создайте новую серию на уже отрисованном графике jquery - PullRequest
5 голосов
/ 28 марта 2011

У меня есть плавающий график, который уже отображает один ряд данных, т.е.

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

Позже я получу некоторые новые данные, которые я хочу также отобразить на этом же графике, в видеотдельный ряд данных.Есть ли способ, которым я могу просто добавить этот новый ряд данных к существующему графику, и мне не придется снова строить весь график?То есть я хочу избежать повторного вызова, например:

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

, и вместо этого сделать вызов следующим образом:

plot.addSeries([data2], option);

Спасибо!

Ответы [ 2 ]

2 голосов
/ 28 марта 2011

@ Black Box Operations довольно хорошо разбирается в деталях. Перед последней версией (0.7) возникают некоторые проблемы с утечками памяти при повторном вызове $.plot(...). Либо обновитесь до последней версии, либо посмотрите на plot.setData(), plot.setupGrid() и plot.draw()

Подробную информацию о методах setData, setupGrid и draw можно получить из API.txt

1 голос
/ 28 марта 2011

Создайте ajax-вызов, который извлекает вашу информацию и отправляет ее в метод, способный обрабатывать несколько графиков путем сброса информации о графике.Сначала возьмите элемент, содержащий ваш график, и сохраните его в переменной, затем создайте ajax-вызов, который извлекает информацию, необходимую для создания вашего графика.В случае успеха вызовите resetGraph и передайте ему информацию.

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}
    });

}

Теперь, когда вам нужно изменить свой график, просто отключите вызов вашего скрипта, захватите информацию, отправьте ее в resetGraph в случае успеха ион будет обновляться соответственно.

...