2013-05-21 17 views
6

Próbuję umożliwić moim użytkownikom dodanie max wykresu do wykresu i zmienić kolor tła wykresu, jeśli wykres przekroczy ten wiersz. Nie mogę uzyskać metody aktualizacji plot. Próbowałem:Highcharts dynamicznie dodaj/zmień yAxis plotLines

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

ale pojawia się błąd:

TypeError: a is undefined

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

highcharts.js (line 136)

+1

Ponieważ nie mogę znaleźć kodu, którego użyłem, zostawię komentarz. Spróbuj usunąć lineLine, a następnie dodaj ją ponownie z nową wartością. – wergeld

+0

To wystarczyło - po prostu nie wystartowałem z jednym, a następnie użyłem aktualizacji, aby go dodać. – jbolanos

Odpowiedz

4

Można jedynie zniszczyć i stworzyć nowe plotLins, ponieważ zmiana function() nie jest dostępna.

+0

Usunąłem plotines z kodu źródłowego i pozwoliłem użytkownikowi dodać go po utworzeniu wykresu. – jbolanos

+5

Możesz użyć funkcji addPlotLine, aby to zrobić.http: //api.highcharts.com/highcharts#Axis.addPlotLine() –

1

Oto co pracował dla mnie 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

prostu dodać ten kod, a następnie można użyć metody 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

Dzięki temu działa świetnie. Wystarczy przekazać właściwość, którą potrzebujesz zaktualizować i zadziała: 'chart.series [0] .xAxis.plotLinesAndBands [0] .update ({" color ":" #eeeeee "});' – Mark

0

Próbowałem przypisać identyfikator do plotowaniaLine,

Najpierw usuń całą linię roboczą przez removePlotLine(id), a następnie dodaj ją ponownie przez addPlotLine. Działa świetnie dla mnie.

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