2009-05-06 13 views
5

मैं ग्राफ़विज़ का उपयोग कर सी हेडर फ़ाइलों के बीच निर्भरताओं का ग्राफ खींचने की कोशिश कर रहा हूं।ग्राफविज़ एज लेबल

असल में, मैं जो कर रहा हूं वह सभी # शामिल है जो दिखाई देता है और स्थिति (#if स्थितियों का मतलब है)। अगर एक फ़ाइल में एक और शामिल है, तो यह ग्राफ में अपने पिता बन जाता है और संभावित स्थिति एज लेबल है।

मुझे एक बहुत बड़ा ग्राफ प्राप्त होता है। समस्या किनारे के लेबल से उत्पन्न होती है जो हमेशा क्षैतिज होती हैं (आप इसे बदल नहीं सकते हैं) और हमेशा बाएं-संरेखित लगते हैं (मैंने लैबेलोक और लेबल समायोजित करने की कोशिश की है लेकिन यह कुछ भी नहीं बदलेगा। "केंद्र" का सही तरीका क्या है एक किनारे का लेबल।

इस समस्या से बचने के लिए, मैंने शर्तों को नोड्स के रूप में प्रस्तुत करने का प्रयास किया है। अगर आह में एएनएसआई की स्थिति के तहत बी शामिल है, तो आह से एएनएसआई और फिर एएनएसआई से भ में एक लिंक है .. यह दिखता है ठीक है, लेकिन समस्या यह है कि यदि च में एक ही शर्त के तहत ध शामिल है, तो मुझे आह से एएनएसआई, एक से च से एएनएसआई का एक लिंक दिखाई देगा, एएनएसआई से भ तक और एक एएनएसआई से ढ तक। समस्या यह है कि मैं नहीं करता पता नहीं है कि यह आह या च है जिसमें भ शामिल है। क्या नोड्स के माध्यम से जाने के लिए कुछ तरीका है (आह से भ का एक लिंक जो एएनएसआई के तहत चला जाता है, शायद पारदर्शिता का लाभ उठा सकता है।)

+0

आप डिफ़ॉल्ट rankdir (= टीबी?) कब तक कर रहे हैं का उपयोग कर रहे किनारे लेबल? –

+0

हाँ मैं डिफ़ॉल्ट रैंकडियर का उपयोग कर रहा हूं ... जब आपके पास कई कॉन्फ़िगरेशन विकल्प संयुक्त होते हैं तो लेबल बहुत लंबे समय तक हो सकते हैं। यह भी एक समस्या है (लेकिन मैं \ l या \ n के साथ नई लाइन जोड़ सकता हूं ..) – LB40

उत्तर

4

लैबेलोक और लेबल समायोजन किनारों के लिए व्यर्थ हैं। here देखें, यह ग्राफ, क्लस्टर या "एन" के रूप में "जीसी" क्रमशः नोड के रूप में कहता है।

हालांकि, आप प्रत्येक स्थिति लेबल के साथ अद्वितीय नोड्स उत्पन्न करने पर विचार कर सकते हैं। फिर अलग-अलग "डॉट आईडी" के साथ कई नोड्स होंगे, लेकिन एक ही लेबल (हालत का टेक्स्ट) होगा, इसलिए यह स्पष्ट होगा कि यह A.h या C.h था जो B.h से निकला था। मुझे लगता है कि आप परिणामों से प्रसन्न होंगे, क्योंकि आपने पहले ही कहा है कि यह ठीक दिखता है।

शुभकामनाएं!

+0

उत्तर के लिए धन्यवाद ... यह एक अच्छा विचार प्रतीत होता है ... मैं यह कोशिश करूँगा – LB40

2

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

आपको लगता है कि यह भी एक का उपयोग शामिल होने के बिंदु प्रदान करने के लिए कर सकते हैं - करने के लिए या सादा पाठ नोड से जा रहा किनारों की एक संख्या है जिन्हें आप नीचे देख:

digraph joins { 

node [shape=box weight=bold fontsize=18 color=black fontcolor=black] 
edge [color=black fontcolor=black ] 
graph[size="6,4",ratio=fill,center=1] 

tblXXMaster[shape=record label="tblXXMaster | <f0>intMasterXXNumber | <f1>boolXXsPrinting"] 
set[shape=plaintext label="sets flag"] 
setandclear[shape=plaintext label="sets next value\nand clears flag"] 
setandclear->tblXXMaster:f0 
setandclear->tblXXMaster:f1 

set->tblXXMaster:f1 
use[shape=plaintext label="uses current\nnumber"] 
tblXXMaster:f0->use 
XX[shape=plaintext label="XXs\nflag"] 
tblXXMaster:f1->XX 

"wndManualReceipt\n.procOne"->setandclear 
"wndManualDebit\n.procOne"->setandclear 
"wndApproveXXs\n.procOne\n.d005TempSetBitToZero"->setandclear 
"wndPrintXXs\n.procZero\n.procOne"->setandclear 
"wndUnapproveXXs\n.procZero\n.procOne"->setandclear 
"wndWriteXXForMultipleInvoices\n.procOne\n.d005TempSetBitToZero"->setandclear 
"wndWriteManualXX\n.procOne\n.procZero"->setandclear 

"wndConfirmXXPrint\n.applyLock"->set 
"wndConfirmMultiInvoiceXXPrint\n.applyLock"->set 

use->"wndConfirmXXPrint\n.nextNumber" 
use->"wndConfirmManualXXPrint\n.nextNumber" 
use->"wndConfirmMultiInvoiceXXPrint\n.nextNumber" 
XX->"wndConfirmManualXXPrint\n.doPrint" 
XX->"wndConfirmMultiInvoiceXXPrint\n.doPrint" 
} 
+0

समस्या यह है कि मेरे पास है एक संबंध संबंध जहाज। यदि एसी में एएच शामिल है यदि मेरे पास CONFIG_X है और बीसी में एक ही CONFIG_X के साथ बीएच शामिल है ... मेरे पास एसी से CONFIG_X तक एक लिंक होगा, एक बीसी से CONFIG_X और CONFIG_X से आह और बीएच के दो लिंक ... देखकर ग्राफ मुझे कैसे पता चलेगा कि यह एसी या बीसी है जिसमें आह और बीएच शामिल है? – LB40

+0

इस मामले में मैं या तो केवल CONFIG_X का उपयोग करता हूं क्योंकि किनारे पर लेबल को a.c से a.h तक शामिल किया गया है या यदि आप सादा टेक्स्ट दृष्टिकोण का उपयोग कर रहे हैं, तो लेबल = "CONFIG_X" दोनों के साथ दो सादे टेक्स्ट नोड CONFIG_X_A और CONFIG_X_B हैं। –