2013-05-21 3 views
6

Я пытаюсь, чтобы мои пользователи могли добавить max plotLine в диаграмму и изменить цвет фона диаграммы, если график идет выше этой строки. Кажется, я не могу получить метод обновления сюжетных линий. Я пробовал:Highcharts динамически добавлять/изменять yAxis plotLines

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

, но я получаю сообщение об ошибке:

TypeError: a is undefined

...dBands,function(a){a.render()});n(this.series,function(a){a.isDirty=!0})},setCat...

highcharts.js (line 136)

+1

Поскольку я не могу найти код, который я использовал, я просто оставлю комментарий. Попробуйте удалить plotLine, а затем повторно добавить его с новым значением. – wergeld

+0

Это трюк - я просто не начинал с одного, а затем использовал обновление, чтобы добавить его. – jbolanos

ответ

4

Вы можете только уничтожить и создавать новый plotLins, потому что функция обновления() не доступна.

+0

Я удалил plotLines из исходного кода и разрешил пользователю добавлять его после создания диаграммы. – jbolanos

+5

Вы можете использовать функцию addPlotLine для этого.http: //api.highcharts.com/highcharts#Axis.addPlotLine() –

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(); 
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(); 
 
     } 
 
    }

+0

Спасибо, что отлично работает. Просто перейдите в свойство, которое вам нужно обновить, и оно будет работать: 'chart.series [0] .xAxis.plotLinesAndBands [0] .update ({" color ":" #eeeeee "});' – Mark

0

Я пытался присвоить идентификатор to plotLine,

Сначала полностью удалите сюжетную линию на removePlotLine(id), а затем добавьте ее обратно addPlotLine. Это отлично работает для меня.

function upgradePlotLine(new_line) { 
    chart.yAxis[0].removePlotLine('my_line'); 
    chart.yAxis[0].addPlotLine(new_line); 
} 
Смежные вопросы