重用jqplot对象来加载或重新绘制数据

Hun*_*unt 14 javascript jquery jqplot

我正在使用JqPlot图表,我的问题是我想在不同的点击事件上加载不同的数据.

但是一旦创建了图表并首次加载了数据; 我不知道当另一个事件触发时如何加载数据意味着我想重用图表对象并希望在事件被触发时加载/重新绘制数据...

chartObj.data = [graphData]
Run Code Online (Sandbox Code Playgroud)

gri*_*lix 19

这似乎有助于重新绘制数据.

chartObj.series[0].data = [[0, 4], [1, 7], [2, 3]];
chartObj.replot();
Run Code Online (Sandbox Code Playgroud)

此外,您可以查看以下内容: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,希望它有所帮助.

  • http://stackoverflow.com/a/19471949 - 测试的最佳答案:)更快的是破坏情节并用新数据重新利用它. (2认同)

Mor*_*ler 17

虽然这是一个老问题.

由于接受的答案对我不起作用,我也无法在jqPlot文档中找到解决方案.我来到这个解决方案

var series = [[1,2],[2,3]];
chartObj.replot({data:series});
Run Code Online (Sandbox Code Playgroud)

Src:看一下这个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")
}
Run Code Online (Sandbox Code Playgroud)

该行 if (ap || !L.isEmptyObject(an)) { this.reInitialize(ap, an) }
告诉我们,它需要一个真值才能将ap作为第一个参数传递给内部重新初始化函数.被定义为var ap = an.data || null;

它很简单,但遗憾的是没有记录在任何地方我都能找到它


请注意,如果要重新绘制jqPlot选项中定义的某些内容,例如图例标签,则可以将任何选项传递给重绘图函数.只记得重新绘制的实际系列必须命名为"数据"

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)
Run Code Online (Sandbox Code Playgroud)