में परिवर्तनीय परिशुद्धता डी 3.svg.axis.tickFormat के साथ d3.format ("s") का उपयोग कर एसआई इकाइयों (इकाइयों की अंतर्राष्ट्रीय प्रणाली से) के साथ टिक लेबल को अच्छी तरह से प्रारूपित करने के लिए उपयोग कर रहा है। यह अधिकांश हिस्सों के लिए खूबसूरती से काम करता है, कुछ मानों को छोड़कर जो गोल करने वाली त्रुटि में चलते हैं और दशमलव स्थानों का एक टन लौटाते हैं (उदाहरण के लिए, 1400 * 0.001 = 1.4000000000000001)।d3.format
इस के आसपास पाने के लिए मैं एक परिशुद्धता निर्दिष्ट कर सकता हूं, जैसे d3.format ("। 2s") लेकिन यह उन मामलों में 2 महत्वपूर्ण अंक बलों को लागू करता है जहां 1 बेहतर होगा। उदाहरण के लिए, यदि मेरे पास टिक [5000, 10000, 15000] हैं तो मैं अब [5.0k, 10k, 15k] देखूंगा। मूल रूप से जब मैंने सटीकता निर्दिष्ट नहीं की तो मुझे [5k, 10k, 15k] मिला।
मुझे आश्चर्य है कि अधिकतम सटीकता निर्दिष्ट करना संभव है जैसे कि यह केवल तभी लागू होगा जब महत्वपूर्ण अंकों की संख्या निर्दिष्ट संख्या से अधिक हो? तो 5000 5k होगा और 5.0k नहीं होगा।
उत्तर के लिए धन्यवाद। दुर्भाग्यवश, मैं d3.svg.axis सहायक का उपयोग कर रहा हूं, इसलिए जिन प्रारूपों को मैं स्वरूपित कर रहा हूं वे मान मान हैं, डेटा मान नहीं। स्वरूपण आंतरिक रूप से किया जाता है क्योंकि टिक लेबल उत्पन्न होते हैं। मैं मूल्यों को रोकने के लिए अपने स्वयं के फ़ंक्शन में d3.format से वापस फ़ंक्शन को लपेट सकता हूं लेकिन एसआई फॉर्मेटर से लौटाई गई स्ट्रिंग को फिर से पार्स करना बहुत साफ नहीं लगता है। मैं सोच रहा था कि इसे कोडिंग किए बिना इसका समर्थन करने के लिए फॉर्मेटर में कुछ बनाया जा सकता है। –
आह सही। मेरा कोड डेटा लेबल के लिए है, लेबल पर टिकटें नहीं। आशा है कि मैंने आपको गलत रास्ते का नेतृत्व नहीं किया है। क्या आप कुछ ऐसा ही कर सकते हैं, लेकिन टिक लेबलिंग फ़ंक्शंस के साथ (यानी उन्हें अज्ञात func में पास करें)? – tatlar