Highcharts - 重绘()与新Highcharts.chart(Highcharts -

2019-07-17 17:21发布

我努力理解更新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();

});​

http://jsfiddle.net/sUXsu/18/

[编辑]:

对于未来这个问题的观众,值得注意的是没有方法来隐藏和显示dataLabels。 下面介绍如何做到这一点: http://jsfiddle.net/supertrue/tCF8Y/

Answer 1:

chart.series[0].setData(data,true);

setData方法本身将调用再拉法



Answer 2:

你必须调用集合 ,并呼吁重绘之前图表对象上添加功能。

chart.xAxis[0].setCategories([2,4,5,6,7], false);

chart.addSeries({
    name: "acx",
    data: [4,5,6,7,8]
}, false);

chart.redraw();


Answer 3:

var newData = [1,2,3,4,5,6,7];
var chart = $('#chartjs').highcharts();
chart.series[0].setData(newData, true);

说明:
可变newData包含要在图表更新值。 可变chart是一个图表的一个目的。 setData是通过highchart更新数据的方法。

方法使用setData包含两个参数,在第一个参数,我们需要通过新值作为阵列和第二参数是布尔值。 如果true那么海图更新自身,如果false ,然后我们必须使用redraw()方法来更新图表(即chart.redraw();

http://jsfiddle.net/NxEnH/8/



Answer 4:

@RobinL在以前的评论中提到,你可以使用chart.series [N] .setData()。 首先,你需要确保你已经分配的图表实例的图表变量,它采用了所有你需要访问和处理图表的属性和方法的方式。

我也用使用setData的第二个参数(),把它假,以防止图表的自动绘制。 这是因为我有多个数据系列,所以我会更新,而他们每个人,与渲染= false,然后运行chart.redraw()。 这个相乘的性能(我在10,000-100,000数据点和刷新数据每50毫秒为单位)。



文章来源: Highcharts - redraw() vs. new Highcharts.chart