मुझे एक कस्टम डी 3 लेआउट बनाना है जो कुछ हद तक एक ट्रेमैप के करीब है लेकिन त्रिकोणीय शैली में है। यहाँ एक स्क्रीनशॉट है, ताकि आप समझ सकते हैं: Pyramid layoutएक कस्टम डी 3 लेआउट बनाना
आप देख सकते हैं, यह बहुत साफ काम करता है और मेरी जरूरत फिट बैठता है। यह कोड के लिए, मैं ट्री-मैप लेआउट कोड पर कोड आधारित है:
d3.layout.pyramid= function() {
var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = 0;
function populate (nodes, currentHeight, currentHeightPadded, currentBase, currentSumedWeight) {
...
}
function populate_layers (layer, nodes,currentHeight,currentLength, currentSumedArea,currentSumedWeight) {
...
}
function pyramid(d) {
var nodes = hierarchy(d), root = nodes[0];
populate(root.children.slice(),0,0,0,0);
return nodes;
}
pyramid.padding = function(x) {
if (!arguments.length) return padding;
padding = x;
return pyramid;
};
pyramid.size = function(x) {
if (!arguments.length) return size;
size = x;
return pyramid;
};
return d3_layout_hierarchyRebind(pyramid, hierarchy);
};
मेरे समस्या है, ऐसा करने के लिए, मैं सीधे d3.v2.js
फ़ाइल को संपादित करने, क्योंकि कुछ निजी कार्यों के लिए सुलभ नहीं हैं लिया है outisde से, मेरे मामले में d3_layout_hierarchyRebind
। स्पष्ट रूप से मुझे पता है कि यह सबसे अच्छा अभ्यास नहीं है लेकिन मैं अपनी फ़ाइल को एक अलग स्क्रिप्ट में d3_layout_hierarchyRebindis
बाहरी रूप से दिखाई नहीं दे रहा हूं।
मुझे नहीं पता कि यह एक डी 3- या जावास्क्रिप्ट से संबंधित मुद्दा है, लेकिन मैं जानना चाहता हूं कि क्या आप इस छोटी सी समस्या को हल करने में मेरी मदद कर सकते हैं।
अग्रिम धन्यवाद!
ऐसा लगता है कि d3.js को बाहरी रूप से परिभाषित लेआउट के लिए डिज़ाइन नहीं किया गया था। आप d3.js. के कस्टम निर्माण में लिखे गए लेआउट को शामिल कर सकते हैं। मुझे ऐसा करने का कोई और तरीका नहीं दिख रहा है। – fuzic
अच्छा प्रश्न और टिप्पणी- एक ही समस्या देखी गई। यह पहले से ही d3_identity प्राप्त करने से शुरू होता है ... – andig
जैसा कि @ZachB ने इंगित किया है, आप डी 3 नेमस्पेस का उपयोग किये बिना लेआउट बना सकते हैं। एक लेआउट केवल एक कॉन्फ़िगर करने योग्य फ़ंक्शन है जो डेटा प्राप्त करता है और परिवर्तित डेटा लौटाता है, यह वही है जो आपका कार्य करता है। –