चार्ट.जेएस - स्वरूपण वाई अक्ष


79

मैं एक सरल बार प्लॉट खींचने के लिए Chart.js का उपयोग कर रहा हूं और मुझे इसके Y अक्ष को प्रारूपित करने की आवश्यकता है

123456.05 से 123 456,05 $

मुझे समझ में नहीं आता कि कैसे उपयोग करना है scaleLabel : "<%=value%>"

मैंने किसी को " जेएस माइक्रो-टेंपलेटिंग " की ओर इशारा करते हुए देखा ,
लेकिन हमारे scaleLabelविकल्प के साथ इसका उपयोग करने का कोई सुराग नहीं मिला ।

क्या कोई जानता है कि इस वाई अक्ष को कैसे प्रारूपित करें, और शायद मुझे एक उदाहरण दें?


1
ओपी: कृपया चुने हुए उत्तर पर फिर से विचार करें
vsync

जवाबों:


163

मेरे पास एक ही समस्या थी, मुझे लगता है कि चार्टजेएस 2.xx में दृष्टिकोण नीचे की तरह थोड़ा अलग है।

ticks: {
    callback: function(label, index, labels) {
        return label/1000+'k';
    }
}

विवरण में अधिक

var options = {
    scales: {
        yAxes: [
            {
                ticks: {
                    callback: function(label, index, labels) {
                        return label/1000+'k';
                    }
                },
                scaleLabel: {
                    display: true,
                    labelString: '1k = 1000'
                }
            }
        ]
    }
}

3
यह सुनकर अच्छा लगा कि।
जैसन

4
यह कोणीय-चार्ट के साथ करने का सही तरीका भी प्रतीत होता है ।js
user1576978

3
इस Ans को स्वीकार किया जाना चाहिए। मुझे लगता है कि यह नए संस्करणों पर 2.xx और इसके बाद के संस्करण की संभावना पर काम करेगा। मेरे पास एक नया संस्करण है और मैंने वेब में पाए गए कई अन्य समाधानों की कोशिश की, लेकिन कुछ भी काम नहीं किया। मेरे लिए यही एकमात्र काम है ..
जस्टिन

2
यह अच्छा काम करता है। इसे उत्तर के रूप में स्वीकार किया जाना चाहिए। इसे खोजने के लिए मुझे एक घंटे का समय लगा। यह दस्तावेज में क्यों नहीं है, मेरे से परे है। यह आपको कैसी लगी, जैसन?
Jay

2
इस उत्तर के लिए धन्यवाद, मुझे अपनी परियोजना के साथ बहुत मदद मिली।
mikey242

56

चार्टजेएस लाइब्रेरी की एक अनैच्छिक सुविधा यह है कि यदि आप एक स्ट्रिंग के बजाय एक फ़ंक्शन में पास होते हैं, तो यह आपके फ़ंक्शन का उपयोग y- अक्ष के स्केललैबेल को प्रस्तुत करने के लिए करेगा।

इसलिए जब "<%= Number(value).toFixed(2).replace('.',',') + ' $' %>"आप काम करते हैं, तो आप भी कर सकते हैं:

scaleLabel: function (valuePayload) {
    return Number(valuePayload.value).toFixed(2).replace('.',',') + '$';
}

यदि आप कुछ भी दूर से जटिल कर रहे हैं, तो मैं इसके बजाय ऐसा करने की सलाह दूंगा।


यह सबसे अच्छा जवाब है। एक साधारण IF के कारण एंबेडेड टेम्प्लेट पार्सर को चलाने के बजाय फ़ंक्शन को सीधे कॉल किया जाता है, जो अप्रत्यक्ष रूप से JS कोड को कॉल करता है।
schlingel


5

जैसा कि नेवरकॉम ने कहा कि स्केलबल में जावास्क्रिप्ट होना चाहिए ताकि y मान में हेरफेर हो सके बस आवश्यक स्वरूपण लागू हो।

नोट मान एक स्ट्रिंग है।

var options = {      
    scaleLabel : "<%= value + ' + two = ' + (Number(value) + 2)   %>"
};

jsFiddle उदाहरण

यदि आप मैन्युअल y स्केल सेट करना चाहते हैं तो आप scaleOverride का उपयोग कर सकते हैं

var options = {      
    scaleLabel : "<%= value + ' + two = ' + (Number(value) + 2)   %>",

    scaleOverride: true,
    scaleSteps: 10,
    scaleStepWidth: 10,
    scaleStartValue: 0

};

jsFiddle उदाहरण


1
बहुत स्पष्ट है, मैं उलझन में था कि कस्टम वैल्यू वाले स्केललैब का उपयोग कैसे किया जाए धन्यवाद +1
MasoodRehman

5

चार्ट .js 2.XX

मुझे पता है कि यह पोस्ट पुरानी है। लेकिन अगर किसी को अधिक लचीले समाधान की तलाश है, तो यहां यह है

var options = {
        scales: {
            yAxes: [{
                ticks: {
                    beginAtZero: true,
                    callback: function(label, index, labels) {
                        return Intl.NumberFormat().format(label);
                        // 1,350

                        return Intl.NumberFormat('hi', { 
                            style: 'currency', currency: 'INR', minimumFractionDigits: 0, 
                        }).format(label).replace(/^(\D+)/, '$1 ');
                        // ₹ 1,350

                        // return Intl.NumberFormat('hi', {
                            style: 'currency', currency: 'INR', currencyDisplay: 'symbol', minimumFractionDigits: 2 
                        }).format(label).replace(/^(\D+)/, '$1 ');
                        // ₹ 1,350.00
                    }
                }
            }]
        }
    }

'हाय' हिंदी है। यहाँ अन्य के लिए जाँच करें स्थानों तर्क
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl#Locale_identification_and_negotiation#locales_argument

अधिक मुद्रा प्रतीक के लिए
https://www.currency-iso.org/en/home/tables/table-a1.html


आकर्षण की तरह काम किया! ty!
मोहम्मद ए। फादिल

2

यहां आप वाई-एक्सिस मान को प्रारूपित करने का एक अच्छा उदाहरण पा सकते हैं।

इसके अलावा, आप उपयोग कर सकते हैं scaleLabel : "<%=value%>"कि आप उल्लेख किया है, यह मूल रूप से इसका मतलब है कि <%=और %>टैग के बीच सब कुछ जावास्क्रिप्ट कोड के रूप में माना जाएगा (यानी आप ifमूर्तियों का उपयोग कर सकते हैं ...)

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.