2013-02-10 11 views
8

यह मंडली, पैक लेआउट उदाहरण (http://bl.ocks.org/4063269) एक परियोजना मैं पर काम कर रहा हूँ के लिए एकदम सही है, लेकिन यह एक दूसरे के लिए सभी हलकों सापेक्ष आकार:निश्चित सर्कल आकार के साथ d3.js में एक सर्कल पैक लेआउट का उपयोग करना संभव है?

enter image description here

वहाँ तय त्रिज्या निर्दिष्ट करने के लिए एक आसान तरीका है प्रत्येक सर्कल के लिए?

मैं स्रोत कोड, उदाहरण, गूगल, और stackoverflow घूमते हैं और कुछ भी मददगार नहीं कर पा रहे।

मंडलियों का सटीक आकार मेरे लिए महत्वपूर्ण है।

+0

उपयोगकर्ता 2058412, क्या आप कृपया मेरा उत्तर देख सकते हैं? क्या यह आपके लिए उपयोगी है? – VividD

उत्तर

1

आप उदाहरण आप दे दी है में कोड का पालन करते हैं, तो <circle> तत्वों का आकार यहां का फैसला किया जा रहा है:

node.append("circle") 
    .attr("r", function(d) { return d.r; }) 
// ... 

मंडलियों के लिए कहते हैं, 50, तो आप ऐसा कर सकते हैं के आकार ठीक करने के लिए:

node.append("circle") 
    .attr("r", function(d) { return 50; }) 
// ... 

अद्यतन

हो जाएगा ताकि, Howeve आर, टिप्पणी में बताए गए लेआउट को तोड़ दें। कि ठीक करने के लिए, एक ही value प्रत्येक नोड के लिए प्रदान कर सकते हैं:

// Returns a flattened hierarchy containing all leaf nodes under the root. 
function classes(root) { 
    var classes = []; 

    function recurse(name, node) { 
    if (node.children) node.children.forEach(function(child) { recurse(node.name, child); }); 
    else classes.push({packageName: name, className: node.name, value: node.size}); 
    } 

    recurse(null, root); 
    return {children: classes}; 
} 

रहे हैं:

// Returns a flattened hierarchy containing all leaf nodes under the root. 
function classes(root) { 
    var classes = []; 

    function recurse(name, node) { 
    if (node.children) node.children.forEach(function(child) { recurse(node.name, child); }); 
    else classes.push({packageName: name, className: node.name, value: 1}); 
    } 

    recurse(null, root); 
    return {children: classes}; 
} 
+0

उत्तर देने के लिए धन्यवाद! मैंने वास्तव में कोशिश की, लेकिन यह लेआउट तोड़ता है: http://cl.ly/image/2M3o1T2n2k1V। जिस तरह से इसे देखना चाहिए: http://cl.ly/image/1U1b3v3m152W – user2058412

+0

किसी संभावित फ़िक्स के साथ उत्तर अपडेट किया गया है। –

6

यह संभव है, और सरल बात करने के लिए। पहला जवाब सटीक है, लेकिन मेरा मानना ​​है कि मेरा सरल, अधिक स्पष्ट है, इसलिए मैं इसे भी संलग्न कर रहा हूं।

कृपया इस उदाहरण पर एक नज़र डालें:

enter image description here

कुंजी कोड लाइन यह है:: jsfiddle

जब आप "लगातार" बटन दबाते हैं, आप कुछ इस तरह देखेंगे

pack.value(function(d) { return 100; }) 

यह मंडली, दायरों के डेटा की लगातार regardles कर देगा। 100 निश्चित रूप से निरंतर हो सकता है। आप इस लाइन को सर्कल पैक प्रारंभिकरण में लागू कर सकते हैं (संभवतः यह आपका मामला होगा), या पुनर्मूल्यांकन (जैसे कि मेरे उदाहरण में)।

उम्मीद है कि इससे मदद मिलती है।

संबंधित मुद्दे