2013-05-21 6 views
6

मैं अपने उपयोगकर्ताओं के लिए एक चार्ट में अधिकतम प्लॉटलाइन जोड़ने के लिए इसे संभव बनाने की कोशिश कर रहा हूं और यदि कोई प्लॉट उस रेखा से ऊपर हो तो चार्ट के पृष्ठभूमि रंग को बदल देता है। मुझे प्लॉटलाइन अपडेट करने का कोई तरीका नहीं मिल रहा है। मैं कोशिश की है:हाइचार्ट्स गतिशील रूप से 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

चूंकि मैं उपयोग किए गए कोड को नहीं ढूंढ पा रहा हूं, इसलिए मैं केवल एक टिप्पणी छोड़ दूंगा। प्लॉटलाइन को हटाने का प्रयास करें और फिर इसे नए मान के साथ दोबारा जोड़ दें। – wergeld

+0

यह चाल है - मैंने अभी एक के साथ शुरू नहीं किया था और फिर इसे जोड़ने के लिए अद्यतन का उपयोग किया था। – jbolanos

उत्तर

4

आप केवल नष्ट करने और नए plotLins बना सकते हैं, क्योंकि अद्यतन() फ़ंक्शन उपलब्ध नहीं है।

+0

मैंने प्लॉटलाइन को स्रोत कोड से बाहर कर दिया है और चार्ट को बनाए जाने के बाद उपयोगकर्ता को इसे जोड़ने की अनुमति दे रहा हूं। – 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.plotLinesAnd बैंड [0] .update ({" color ":" #eeeeee "});' – Mark

0

मैं एक आईडी असाइन करने की कोशिश की साजिश के लिए,

सबसे पहले removePlotLine(id) द्वारा प्लॉटलाइन को पूरी तरह हटा दें, फिर इसे addPlotLine द्वारा वापस जोड़ा गया। यह मेरे लिए बहुत अच्छा काम करता है।

function upgradePlotLine(new_line) { 
    chart.yAxis[0].removePlotLine('my_line'); 
    chart.yAxis[0].addPlotLine(new_line); 
} 
संबंधित मुद्दे