मुझे एक डेटासेट मिला है जिसे मैं d3.js. के साथ ग्राफिंग कर रहा हूं। एक्स अक्ष समय (मिनटों में) का प्रतिनिधित्व करता है। मैं इस अक्ष को hh:mm
प्रारूप में प्रदर्शित करना चाहता हूं, और मुझे इसे डी 3 के भीतर साफ करने का कोई तरीका नहीं मिल रहा है।मैं d3.js में घंटों और मिनटों के लिए कस्टम अक्ष फॉर्मेटर कैसे बना सकता हूं?
मेरे अक्ष कोड की तरह दिखता है:
svg.append('g')
.attr('class', 'x axis')
.attr('transform', 'translate(0,' + height + ')')
.call(d3.svg.axis()
.scale(x)
.orient('bottom'));
कौन सा मिनट कि [100, 115, 130, 140]
तरह लग रहा है में लेबल उत्पन्न करता है, आदि
मेरे वर्तमान समाधान के बाद वे उत्पन्न किया गया है text
तत्वों का चयन करने के लिए है , और उन्हें फ़ंक्शन के साथ ओवरराइड करें:
svg.selectAll('.x.axis text')
.text(function(d) {
d = d.toFixed();
var hours = Math.floor(d/60);
var minutes = pad((d % 60), 2);
return hours + ":" + minutes;
});
यह धुरी को आउटपुट करता है [1:40, 1:55, 2:10]
, आदि जैसे
लेकिन यह जंकी महसूस करता है और d3.format
के उपयोग से बचाता है। क्या इन लेबलों को बनाने का कोई बेहतर तरीका है?
मुझे लगता है मैंने कहा जाना चाहिए था, मेरी उपयोग के मामले एक हिस्टोग्राम (समय का प्रतिनिधित्व binned वस्तुओं के साथ) है। जैसा कि मुझे पूरा यकीन है कि यह एक सामान्य पैमाने पर स्थापित करता है, मैं यह काम करने में सक्षम नहीं हूं। शायद मैं सिर्फ असंगत अवधारणाओं को मिला रहा हूं? यहां मेरा कोड है (नीचे धुरी): http://pastebin.com/Wkcexcgr – matthewsteele
मैंने अपना जवाब संपादित किया और एक उदाहरण जोड़ा जो दिखाता है कि दूसरी तकनीक का उपयोग अवधि के हिस्टोग्राम के साथ संयोजन में किया जाता है। – mbostock
यह किया। आपकी सभी मदद का धन्यवाद! आपने जो बनाया है उस पर वास्तव में आश्चर्यचकित। – matthewsteele