我正在努力理解更新highcharts的正确方法。假设我已经呈现了一个图表,然后我想以某种方式更新它。例如,我可能想要更改数据序列的值,或者我可能想要启用dataLabels。
目前,我唯一能想到的办法就是修改图表选项,并使用new Highcharts.chart
告诉highcharts重绘。
然而,我想知道这是不是有点过头了,也许可以“就地”改变图表,而不必使用new Highcharts.chart
从头开始。我注意到有一个redraw()
方法,但是我似乎不能让它工作。
任何帮助都是非常感谢的。
谢谢,
罗宾
示例代码如下所示,在底部有一个jsFiddle
$(document).ready(function() {
chartOptions = {
chart: {
renderTo: 'container',
type: 'area',
},
series: [{
data: [1,2,3]
}]
};
chart1 = new Highcharts.Chart(chartOptions);
chartOptions.series[0].data= [10,5,2];
chart1 = new Highcharts.Chart(chartOptions);
//The following seems to have no effect
chart1.series[0].data = [2,4,4];
chart1.redraw();
});
编辑
对于这个问题的任何未来读者来说,值得注意的是,没有任何方法可以隐藏和显示dataLabels。下面展示了如何执行此操作:http://jsfiddle.net/supertrue/tCF8Y/
发布于 2013-03-15 18:40:16
chart.series[0].setData(data,true);
setData
方法本身将调用redraw方法
发布于 2018-04-04 22:31:02
@RobinL如前面的评论所述,您可以使用chart.seriesn.setData()。首先,您需要确保已为chart变量分配了一个chart实例,这样它就会采用访问和操作该图表所需的所有属性和方法。
我还使用了setData()的第二个参数,并将其设为false,以阻止图表的自动呈现。这是因为我有多个数据序列,所以我宁愿用render=false更新每个数据序列,然后运行chart.redraw()。这种倍增的性能(我有10,000-100,000个数据点,每50毫秒刷新一次数据集)。
https://stackoverflow.com/questions/14100011
复制相似问题