在已经渲染的jquery flot图上绘制一个新系列

时间:2011-03-28 05:51:06

标签: jquery flot

我有一个已经呈现一个数据系列的浮点图,即

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

稍后,我将收到一些我想在同一图表上绘制的新数据,作为单独的数据系列。有没有办法可以将这个新数据系列添加到现有图形中,而不必再次构建整个图形?也就是说,我想避免像这样打另一个电话:

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

而是拨打这样的电话:

plot.addSeries([data2], option);

谢谢!

2 个答案:

答案 0 :(得分:2)

@Black Box Operations的一般细节非常好。重复调用$.plot(...)时,在最新版本(0.7)之前存在一些问题,内存泄漏。升级到最新版本,或者考虑做plot.setData()plot.setupGrid()plot.draw()

您可以从API.txt

获取setData,setupGrid和draw方法的详细信息

答案 1 :(得分:1)

创建一个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,然后相应地更新。