Highcharts动态添加/更改yAxis plotLines

时间:2013-05-21 18:25:35

标签: javascript highcharts

我试图让我的用户可以将最大plotLine添加到图表中,如果图表超出该行,则可以更改图表的背景颜色。我似乎无法获得更新情节线的方法。我试过了:

chart.yAxis[0].update({
    plotLines: [{
        id: 'limit-max',
        color: 'blue',
        dashStyle: 'LongDashDot',
        width: 1,
        value: 45000,
        zIndex: 0
    }]
});

但是我收到了错误:

  

TypeError:a未定义

     

... dBands,函数(){a.render()}); N(this.series,函数的(a){!a.isDirty = 0})},... setCat

     

highcharts.js(第136行)

4 个答案:

答案 0 :(得分:5)

您只能销毁和创建新的plotLins,因为update()函数不可用。

答案 1 :(得分:2)

只需添加此代码,然后就可以使用plotline.update方法

    //Add support for update method
    Highcharts.PlotLineOrBand.prototype.update = function (newOptions){
        var plotBand = this;
        Highcharts.extend(plotBand.options, newOptions);
        if (plotBand.svgElem) {
            plotBand.svgElem.destroy();
            plotBand.svgElem = undefined;
            plotBand.render();
        }
    }

答案 2 :(得分:1)

这对我有用http://jsfiddle.net/tx1kt0bj/2/

var plotBand = tempAxis.plotLinesAndBands[0];

$.extend(plotBand.options, {
    color: '#000',
    to: 10,
    from: 2
});
plotBand.svgElem.destroy();
plotBand.svgElem = undefined;
plotBand.render();

答案 3 :(得分:0)

我试图为plotLine分配一个id,

首先通过removePlotLine(id)完全删除情节线,然后将其添加回addPlotLine。它对我很有用。

function upgradePlotLine(new_line) {
    chart.yAxis[0].removePlotLine('my_line');
    chart.yAxis[0].addPlotLine(new_line);
}