2012-08-18 28 views
12

में निर्दिष्ट राशि से ओवरलैप करने के लिए नोड्स को कैसे बल दें I ग्राफ़विज़ में डॉट लेआउट में नौसिखिया हूं। मैं डॉट भाषा में एक ग्राफ निर्दिष्ट करने की कोशिश कर रहा हूं, और मैं चाहता हूं कि नोड्स के कुछ सेटों को एक निश्चित राशि से ओवरलैप करने के लिए मजबूर किया जाए (उनके क्षेत्र का 70% या उस प्रभाव के साथ कुछ कहें)। मुझे पता है कि मैं नोड्स के एक्स और वाई पदों को मजबूर कर सकता हूं और इस प्रकार ओवरलैप को प्रेरित कर सकता हूं, लेकिन इस मामले में, मैं एक सी # प्रोग्राम लिख रहा हूं जिसमें कुछ इनपुट ग्राफ़ के लिए प्रासंगिक डॉट स्क्रिप्ट को थूकता है, इसलिए नोड्स की संख्या आदि हैं हार्डकोड नहीं किया गया है और इसलिए मैं सभी नोड्स के हार्ड-कोड एक्स और वाई पदों के लिए एक योजना के साथ नहीं आ सकता। इसमें कोई भी मदद की सराहना की जाएगी!डॉट भाषा (ग्राफ़विज़)

बहुत बहुत धन्यवाद!

+0

आप लगभग डीओटी के लिए अपना खुद का लेआउट इंजन लिखना चाहते हैं, जो तुच्छ नहीं है। हालांकि इसे प्राप्त करने के अन्य तरीके हो सकते हैं, शायद उप-अनुच्छेद "क्लस्टर" कीवर्ड (जैसे सबग्राफ क्लस्टरफू {...}) के साथ खेलें। यह मदद कर सकता है यदि आप उल्लेख करते हैं कि आप उन्हें ओवरलैप क्यों करना चाहते हैं, तो आप किस चीज का प्रतिनिधित्व करने की कोशिश कर रहे हैं? –

+0

हां, ये ओवरलैपिंग नोड्स 'क्लस्टर' की तरह हैं, और मेरे ग्राफ में मैं ऐसे कई क्लस्टर दिखाना चाहता हूं। ओवरलैपिंग नोड्स का प्रत्येक सेट एक समूह से संबंधित है, और मेरे विज़ुअलाइज़ेशन में उन्हें ओवरलैपिंग के रूप में दिखाने के लिए मानक है। तो, मैं यह – assassin

+0

प्राप्त करना चाहता था, मैंने सोचा था कि 'डॉट' का पूरा बिंदु एज और नोड ओवरलैप से बचने के लिए था? – ninjalj

उत्तर

3

जैसा कि @ निंजलज बताता है, ग्राफविज़ के बारे में साफ-सुथरी चीजों में से एक यह है कि यह आपको ग्राफ को अच्छी तरह से प्रदर्शित करने और "त्रुटियों" या "अपूर्णताओं" से छुटकारा पाने की अनुमति देता है जैसे कि ओवरलैप्स - उदा। overlap और overlap_scaling जैसे गुणों का उपयोग करके।

हालांकि, अगर आप का कहना है कि:

मैं जानता हूँ कि मैं एक्स और नोड्स के y स्थितियां और मजबूर कर सकते हैं इस प्रकार ओवरलैप प्रेरित है, लेकिन इस मामले में, मैं एक सी # प्रोग्राम है जो कुछ इनपुट spits दिया लिख ​​रहा हूँ ग्राफ के लिए प्रासंगिक डॉट स्क्रिप्ट को बाहर निकालें, इसलिए नोड्स की संख्या, आदि हार्डकोड नहीं हैं और इसलिए मैं सभी नोड्स के हार्ड-कोड x और y पदों के लिए एक योजना के साथ नहीं आ सकता।

तो, जैसा कि मैंने इसे देखा, आप क्या कहते हैं कि आप जानते हैं कि जब आपको एक निश्चित इनपुट दिया जाता है, तो आप एक निश्चित ग्राफ उत्पन्न करने जा रहे हैं - दूसरे शब्दों में, आप नोड्स की संख्या जानते हैं (और क्लस्टर) इनपुट के एक समारोह के रूप में। इससे मुझे लगता है कि @ डैनियल किन्समैन का सुझाव आपके लिए जाने का तरीका हो सकता है - यानी, उस विशेष उद्देश्य के लिए अपने स्वयं के डीओटी लेआउट इंजन को लागू करना।

मुझे नहीं लगता कि यह आसान है, हालांकि, यह असंभव नहीं है और निश्चित रूप से आवश्यक तर्क आपके आवेदन के लक्ष्य पर निर्भर करता है।

लेकिन किसी भी कार्यान्वयन करने से पहले, मुझे लगता है कि आप पहले से ही cluster functionality Graphviz (जो @Daniel Kinsman यह भी बताता है) में बनाया पर एक नजर है और यदि यह वास्तव में एक कस्टम डॉट लेआउट करने के लिए अतिरिक्त प्रयास के लायक है बारे में सोचना चाहिए इंजन कार्यान्वयन या क्लस्टर कार्यक्षमता आपके लिए पर्याप्त हो सकती है।

1

यह उपयोग में हो सकता है: आप ग्राफविज़ के dot आउटपुट प्रारूप का उपयोग कर सकते हैं, जो नोड्स और उनकी स्पष्ट परत वाली स्थिति को आउटपुट करता है। फिर आप इसे वापस पढ़ सकते हैं, और अपने आकार बदल सकते हैं। यह कहना मुश्किल है कि क्या यह आपकी विशिष्ट आवश्यकता को बिना किसी प्रदर्शन छवियों के आपकी मदद करेगा। यह भी सबसे अच्छा समाधान नहीं हो सकता है। बस सोचा कि मैं इसे इस्तेमाल करने वाले उपकरणों के शस्त्रागार में जोड़ दूंगा।