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

在已渲染的jquery flot图上绘制新系列,jquery,flot,Jquery,Flot,我有一个浮点图,它已经呈现了一个数据系列,即 var plot = $.plot($('#placeholder'), [data1], options); 稍后,我将收到一些新数据,这些数据也将作为单独的数据系列绘制在同一个图上。有没有一种方法可以将这个新的数据系列添加到现有的图形中,而不必再次构建整个图形?也就是说,我不想再打这样的电话: var plot = $.plot($('#placeholder'), [data1, data2], options); plot.addSeri

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

var plot = $.plot($('#placeholder'), [data1], options);
稍后,我将收到一些新数据,这些数据也将作为单独的数据系列绘制在同一个图上。有没有一种方法可以将这个新的数据系列添加到现有的图形中,而不必再次构建整个图形?也就是说,我不想再打这样的电话:

var plot = $.plot($('#placeholder'), [data1, data2], options);
plot.addSeries([data2], option);
而是打这样的电话:

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

谢谢

创建一个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,它就会相应地更新

@黑箱操作的一般细节非常清楚。在最新版本(0.7)之前,当您反复调用
$.plot(…)
时,内存泄漏会出现一些问题。升级到最新版本,或者研究执行
plot.setData()
plot.setupGrid()
plot.draw()


您可以从

中获得setData、setupGrid和draw方法的详细信息,感谢@Black Box Operations和@Ryley。所以,我将你的回答解释为我必须重新绘制整个绘图,最有效的方法可能是:var newResult=plot.getData()是的,如果不重新绘制所有内容,肯定无法添加一个系列。。。如果您知道新数据没有改变最大/最小x/y值,则可以跳过setupGrid。感谢@Black Box Operations和@Ryley。因此,我将您的回答解释为我必须重新绘制整个绘图,可能最有效的路径是:
plot.setData(plot.getData().push(data2));plot.draw()