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

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

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

chartObj.data = [graphData] 

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

 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:看一下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") } 

if (ap || !L.isEmptyObject(an)) { this.reInitialize(ap, an) }
向我们展示了它需要一个真值才能将ap作为第一个参数传递给内部重新初始化函数。 其定义为var ap = an.data || null; 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) 

jqplot允许快速动态数据更新。

根据文档 (数据部分), “不应在选项对象中指定数据……” ( 小提琴 )

 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具有重新绘制/重绘方法

重绘这样可以更改绘图数据和属性,然后完全清除绘图和重绘。