如何动态更改jqplot渲染器?

5
基本上,我希望用户能够通过单击下拉菜单来更改图表类型:BarRenderer、PieRenderer等。数据是相同的。我知道我可以再次在同一元素上调用$.jqplot(),但那样我就必须再次传递所有设置。而我的页面有可变数量的图表,这使得那个选项成为一个非常糟糕的选择。
我发现了一个关于此问题的链接:http://groups.google.com/group/jqplot-users/browse_thread/thread/efe6511cd9496f16/5c625baf78d3b0ae,但似乎我仍然需要再次调用$.jqplot()。
有没有更好的方法?还有一个小问题:只有我觉得jqplot的文档很差吗?我不得不查看多个地方才能找到我想要的选项(有时,该选项未记录在文档中,或者我无法找到它)。您如何学习使用jqplot?

更新数据并重新绘制:plot1.series[0].data = newData; plot1.resetAxesScale(); plot1.replot();。参考链接:https://dev59.com/AG435IYBdhLWcg3w1z8t#10901538。 - KCD
1个回答

5

我认为这些文档还不错,但你会发现其中隐藏的功能或未记录的问题。 如果我没记错(已经过了一段时间),你需要再次调用$.jqplot(),但首先需要清空(empty())目标,否则会出现额外/混乱的画布。

真正需要做的是保存数据并允许后续调用:

//This isn't real jqplot syntax but it should give you a good idea of what I'm explaining

var charts = [{name:"chart1",renderer:"pie",data:[[1,2],[2,3]]}]
$('#graph').jqplot(charts[0]);

//later
charts[0].renderer = "bar";
$('#graph').empty().jqplot(charts[0]);

2
在调用empty()之前,请确保在图表上调用destroy(),否则会导致内存泄漏。将第一次调用jqplot返回的图表保存到一个变量中,然后在“later”部分调用chart.destroy()以重建绘图之前销毁图表。 - Irongaze.com

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接