использовать jqplot объект для загрузки или replot данных
Я использую JqPlot для диаграмм, моя проблема в том, что я хочу загружать разные данные по разным событиям щелчка.
но как только диаграмма создается и загружается с данными в первый раз; я не знаю, как загружать данные, когда другое событие срабатывает, что означает, что я хочу повторно использовать объект диаграммы и хочу загрузить/replot данные, когда события запускаются что-то вроде...
chartObj.data = [graphData]
5 ответов
это, похоже, работает для репликации данных.
chartObj.series[0].data = [[0, 4], [1, 7], [2, 3]];
chartObj.replot();
кроме того, вы можете проверить это: 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Надеюсь, это поможет.
хотя это старый вопрос.
поскольку принятый ответ не работал для меня,и я не мог найти решение в документах jqPlot. Я пришел к этому решению
var series = [[1,2],[2,3]];
chartObj.replot({data:series});
Src: взглянув на .
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")
}
линия
if (ap || !L.isEmptyObject(an)) {
this.reInitialize(ap, an)
}
показывает нам, что ему нужно истинное значение для ap, чтобы передать его в качестве первого параметра внутренней функции повторной инициализации. который определяется как var ap = an.data || null;
его так просто, как это, но к сожалению, нигде не документировано, я мог найти его
обратите внимание, что если вы хотите перерисовать некоторые вещи, определенные в параметрах jqPlot, например метки легенд, вы можете просто передать любую опцию функции replot. Просто помните, что фактическая серия для replot должна быть названа "data"
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)
jqplot позволяет быстро обновлять динамические данные.
по словам документация (раздел данных), " данные не должны указываться в объекте options ..." (скрипка)
plot1.replot({data: [storedData]}); // data should not be passed this way
"... но передайте в качестве второго аргумента $.jqplot (функция)."
if (plot1) plot1.destroy();
plot1 = $.jqplot('chart1', [storedData]); // similar speed to replot
на скрипка показывает, что это можно сделать с аналогичной производительностью.
пустой граф div, перед рендерингом графика
$('#graphDiv').empty();
plot = $.jqplot('graphDiv', [graphValues], graphOptions);
API имеет метод replot / redraw
перерисовывать это позволяет изменить данные и свойства графика, а затем полностью очистить участок и перерисовать.