2012-02-06 13 views
13

मैं ग्राफ़विज़ का उपयोग करके वृक्ष संरचना को देखने की कोशिश कर रहा हूं, समस्या यह है कि ग्राफ को बड़ा ग्राफविज़ नोड्स के क्रम को पुनर्व्यवस्थित करना शुरू कर देता है।ग्राफिक्स को नोड्स को पुन: व्यवस्थित करने से रोकना

A 
/| \ 
B C D 

यह हो जाता है,

A 
/| \ 
B D C 

यह शायद इस जगह को बचाने लेकिन नोड्स बात मैं जोड़ने की कोशिश की है की मेरी संदर्भ क्रम में करने के लिए है, मैं निम्नलिखित है कहो,

graph [ordering="out"]; 

लेकिन यह आउटपुट नहीं बदला।

संपादित करें: प्रश्न में

digraph bt { 
graph [ordering="out"]; 
node [style="rounded", shape=box] 
N_2386 -> N_2387 
N_2387 -> N_2388 
N_2388 -> N_2389 
N_2388 -> N_2390 
N_2387 -> N_2391 
N_2386 -> N_2392 
subgraph cluster_2393 { 
labeljust = "l"; 
style=dashed;color="#B0B0B0" 
N_2392 -> N_2394 
N_2394 -> N_2395 
N_2395 -> N_2396 
N_2396 -> N_2397 
N_2397 -> N_2398 
N_2397 -> N_2399 
N_2396 -> N_2400 
N_2400 -> N_2401 
N_2400 -> N_2402 
N_2395 -> N_2403 
N_2403 -> N_2404 
N_2404 -> N_2405 
N_2405 -> N_2406 
N_2403 -> N_2407 
N_2407 -> N_2408 
N_2408 -> N_2409 
N_2409 -> N_2410 
N_2410 -> N_2411 
N_2411 -> N_2412 
N_2412 -> N_2413 
N_2412 -> N_2414 
N_2412 -> N_2415 
N_2411 -> N_2416 
N_2416 -> N_2417 
N_2416 -> N_2418 
N_2416 -> N_2419 
N_2408 -> N_2420 
N_2408 -> N_2421 
N_2403 -> N_2422 
N_2395 -> N_2423 
N_2392 -> N_2424 
} 
} 

ग्राफ मैं क्या जरूरत है, N_2387 सही N_2392 पर होना चाहिए बाईं तरफ होना चाहिए। ऑर्डर मैं उन्हें किस क्रम में डालता हूं।

+1

क्या आपने कभी इस समस्या को हल करने का मौका दिया था? मुझे दुर्भाग्य से एक ही समस्या है। – tantrev

उत्तर

5

मैंने कोशिश की निम्नलिखित

digraph g { 
    ordering=out ; 
    node [shape=box] ; 

    a -> b ; a -> c ; a -> d ; a -> e ; a -> f ; 
    a -> g ; a -> h ; a -> i ; a -> j ; a -> k ; 
    a -> l ; a -> m ; a -> n ; a -> o ; a -> p ; 
    a -> q ; a -> r ; a -> s ; a -> t ; a -> u ; 
    a -> v ; a -> w ; a -> x ; a -> y ; a -> z ; 
} 

और सभी नोड्स b - z सही क्रम में एक ही स्तर पर कर रहे हैं। आप किस संस्करण का उपयोग कर रहे हैं?

+0

मैंने हाल ही में एक ही चीज़ को अपडेट किया है, मैंने प्रश्न में प्रश्न में आलेख जोड़ा है। –

1

यदि आप पहली शाखा को उपग्राफ में बदलते हैं तो दो उपग्राफों को फ़ाइल में लिखित के रूप में आदेश दिया जाएगा।

ऐसा लगता है कि एक सामान्य नोड के रूप में उच्च प्राथमिकता के रूप में उपग्राफ और ordering=out के लिए सम्मानित नहीं किया जाना प्रतीत होता है।

यह काम करता है:

digraph bt { 
    graph [ordering="out"]; 
    node [style="rounded", shape=box] 
    N_2386 -> N_2387 
    subgraph cluster_first { 
    N_2387 -> N_2388 
    N_2388 -> N_2389 
    N_2388 -> N_2390 
    N_2387 -> N_2391 
    } 
    N_2386 -> N_2392 
    subgraph cluster_2393 { 
    labeljust = "l"; 
    style=dashed;color="#B0B0B0" 
    N_2392 -> N_2394 
    N_2394 -> N_2395 
    N_2395 -> N_2396 
    N_2396 -> N_2397 
    N_2397 -> N_2398 
    N_2397 -> N_2399 
    N_2396 -> N_2400 
    N_2400 -> N_2401 
    N_2400 -> N_2402 
    N_2395 -> N_2403 
    N_2403 -> N_2404 
    N_2404 -> N_2405 
    N_2405 -> N_2406 
    N_2403 -> N_2407 
    N_2407 -> N_2408 
    N_2408 -> N_2409 
    N_2409 -> N_2410 
    N_2410 -> N_2411 
    N_2411 -> N_2412 
    N_2412 -> N_2413 
    N_2412 -> N_2414 
    N_2412 -> N_2415 
    N_2411 -> N_2416 
    N_2416 -> N_2417 
    N_2416 -> N_2418 
    N_2416 -> N_2419 
    N_2408 -> N_2420 
    N_2408 -> N_2421 
    N_2403 -> N_2422 
    N_2395 -> N_2423 
    N_2392 -> N_2424 
    } 
} 
+0

समस्या यह है कि मैं इन ग्राफों को प्रोग्रामेटिक रूप से उत्पन्न कर रहा हूं, मुझे हाथ से पहले पता नहीं है कि यह कैसा दिखाई देगा। –

2

आप की विशिष्ट वस्तुओं उन दोनों के बीच एक अदृश्य किनारे का उपयोग आदेश नियंत्रित करना चाहते हैं। रैंक निर्देश के साथ इसका संयोजन आपको बहुत अधिक नियंत्रण देता है।

जैसे:

/* 
Using a graph and relationships just to push things onto different lines. 
Two layout rules: 
1) all items on a given line go into a "rank=same" phrase 
2) a relationship is needed between the first word on each line and the next line down to 
    force the vertical alignment. 
*/ 
digraph { 
    edge[style=invisible] 
    node[shape=none] 

    fred [fontsize=18] 
    harry [fontsize=8] 
    jack [fontsize=12] 
    sally [fontsize=12] 
    mika 
    amy 
    jan 
    jack -> fred 
    fred -> mika 
    {rank=same;fred;harry} 
    {rank=same;mika amy; jan} 
} 
0

Graphviz मनभावन उपस्थिति के साथ ग्राफ़ बनाने में बनाया गया है: यहाँ एक नमूना tagcloud Graphviz से लेआउट है। लेआउट को मजबूर करने की कोशिश करना टूल के मूल्य के अधिकांश को हरा देता है।

के रूप में बताया गया है, अदृश्य किनारों कुछ लेआउट लागू करने के लिए इस्तेमाल किया जा सकता है, और कोषगत आदेश (पहले नोड्स करते हैं और अधिक बाईं रखा जाना) भी वरीयता का उल्लेख कर सकते हैं।

सामान्य रूप से, लेआउट में अधिक बाधाओं को जोड़ना विकृत लेआउट उत्पन्न करता है जो समस्या निवारण के लिए अविश्वसनीय रूप से कठिन होते हैं।

एक उम्मीद लेआउट से कुछ विचलन स्वचालित रूप से परिणाम के लिए मजबूर करने की कोशिश करना कारण नहीं होना चाहिए। कम बाधाओं से जेनरेट किए गए ग्राफ अच्छे दिखते रहते हैं क्योंकि वे समय के साथ बदलते हैं, भले ही वे उपस्थिति में मूल रूप से बदल सकें।

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