2012-04-16 11 views
6

के साथ लाइन चार्ट श्रृंखला में शून्य (या नकारात्मक) मानों को संभालने और प्रदर्शित करने का सबसे अच्छा तरीका मेरे हाई चार्ट लाइन ग्राफ़ में, श्रृंखला डेटा को मेरे रूबी से गतिशील रूप से खिलाया जा रहा है। कभी कभी श्रृंखला मान शून्य या उससे कम जो Highcharts के लिए एक समस्या है और यह निम्न अपवाद फेंकता है:हाइचार्ट्स - लॉगरिदमिक वाई अक्ष

Highcharts Error #10 
Can't plot zero or subzero values on a logarithmic axis 

तो एक काम के आसपास के रूप में, मैं अपने गहरे लाल रंग का सरणी सशर्त एक साथ कम मूल्य का एक शून्य को बदलने के लिए की प्रक्रिया महत्वहीन सकारात्मक संख्या, .eg 0.00001 जिन्हें आप नीचे देख:

oil_vol_array = d_array[1].map { |e| (e < 0.0001) ? 0.0001 : e.round(3) } 

यह फेंके जाने अपवाद से बचाता है, लेकिन प्रदर्शन (, जाहिर है इतने के बाद से मैं यह करने के लिए कहा) यदि प्रारंभिक मूल्य शून्य है ग्राफ 0.0001 पर शुरू पता चलता है। एक और अधिक वांछनीय प्रदर्शन शून्य पर ग्राफ शुरू करने के लिए होगा, लेकिन HighChart यह :(

पसंद नहीं है वहाँ एक रास्ता है कि इस प्राप्त किया जा सकता है?

उत्तर

9

आप एक label formatter?

उपयोग करने की कोशिश है
var chart = new Highcharts.Chart({ 
    yAxis: {   
     labels: { 
      formatter: function() { 
       if(this.value === 0.00001){ 
        return 0; 
       } else { 
        return this.value; 
       } 
      } 
     } 
    } 
}); 
+0

धन्यवाद। इसके बारे में नहीं पता था। हाईचर्ट्स के साथ यह मेरा दूसरा दिन है :) – Bharat

1

बड़ी संख्या से निपटने के दौरान, 0 से अधिक मानों के लिए मानक लेबल फॉर्मेटर का उपयोग करना बेहतर है, अन्यथा आपके लेबल इस तरह प्रदर्शित किए जाएंगे: 1000000000 ... इसे बदलने के लिए 'else' कथन को कॉल पर बदलें नीचे मूल लेबल फॉर्मेटर विधि:

var chart = new Highcharts.Chart({ 
    yAxis: {   
     labels: { 
      formatter: function() { 
       if(this.value === 0.00001){ 
        return 0; 
       } else { 
        return Highcharts.Axis.prototype.defaultLabelFormatter.call(this); 
       } 
      } 
     } 
    } 
}); 
संबंधित मुद्दे