मैं ग्राफविज़ का उपयोग कर एक साधारण फिनिट स्टेट मशीन ग्राफ को देखने की कोशिश कर रहा हूं। ग्राफवीज़ द्वारा बनाया गया लेआउट मेरी पसंद के लिए पूरी तरह से नहीं है। मैं छोटे किनारों के साथ एक और कॉम्पैक्ट परिणाम की उम्मीद कर रहा था।ग्राफ आइटम के लेआउट को कैसे प्रभावित करें?
अब तक, मैंने समूहों का उपयोग करने और किनारों के वजन को बदलने की कोशिश की है, लेकिन बहुत भाग्य नहीं है। यह मुझे स्पष्ट नहीं है कि ग्राफविज़ ग्राफ को जिस तरह से करता है और मेरी पसंद के लिए अपने एल्गोरिदम को कैसे समायोजित करता है। क्या कोई ऐसा पैरामीटर है जिसे मैं प्राप्त करने के लिए सेट कर सकता हूं? या मुझे dot
से दूसरे कमांड का उपयोग करना चाहिए? मैं neato
कोशिश की, लेकिन परिणाम पूरी तरह से में गड़बड़ लग रहा था और फिर से, मैं वास्तव में समझ में नहीं आता मैं क्या कर रहा हूँ ...
यह मेरा सबसे अच्छा परिणाम अब तक है:
कल्पना करने के लिए कोशिश कर रहा है इस तुलना में एक बेहतर रखना-आउट, मुझे लगता है कि ग्राफ उदाहरण के लिए अगर लाल बक्से अलग ढंग से गठबंधन कर रहे थे अच्छे विचार करेंगे, अधिक कॉम्पैक्ट इस चित्र में तीर द्वारा संकेत की तरह:
मैं ग्राफ़ बनाने के लिए dot
का इस्तेमाल किया और वह इस प्रकार है स्रोत कोड है:
1 digraph JobStateDiagram
2 {
3 rankdir=LR;
4 size="8,5";
5
6 node [style="rounded,filled,bold", shape=box, fixedsize=true, width=1.3, fontname="Arial"];
7 Created [fillcolor=black, shape=circle, label="", width=0.25];
8 Destroyed [fillcolor=black, shape=doublecircle, label="", width=0.3];
9 Empty [fillcolor="#a0ffa0"];
10 Announced [fillcolor="#a0ffa0"];
11 Assigned [fillcolor="#a0ffa0"];
12 Working [fillcolor="#a0ffa0"];
13 Ready [fillcolor="#a0ffa0"];
14 TimedOut [fillcolor="#ffa0a0"];
15 Failed [fillcolor="#ffa0a0"];
16
17 {
18 rank=source; Created Destroyed;
19 }
20
21 edge [style=bold, fontname="Arial" weight=2]
22 Empty -> Announced [ label="announce" ];
23 Announced -> Assigned [ label="assign" ];
24 Assigned -> Working [ label="start" ];
25 Working -> Ready [ label="finish" ];
26 Ready -> Empty [ label="revoke" ];
27
28 edge [fontname="Arial" color="#aaaaaa" weight=1]
29 Announced -> TimedOut [ label="timeout" ];
30 Assigned -> TimedOut [ label="timeout" ];
31 Working -> TimedOut [ label="timeout" ];
32 Working -> Failed [ label="error" ];
33 TimedOut -> Announced [ label="announce" ];
34 TimedOut -> Empty [ label="revoke" ];
35 Failed -> Announced [ label="announce" ];
36 Failed -> Empty [ label="revoke" ];
37
38 edge [style=bold, fontname="Arial" weight=1]
39 Created -> Empty [ label="initialize" ];
40 Empty -> Destroyed [ label="finalize" ];
41 Announced -> Empty [ label="revoke" ];
42 Assigned -> Empty [ label="revoke" ];
43 Working -> Empty [ label="revoke" ];
44 }
इसके अलावा, किसी को भी मुझे पता है कि अगर मैं Graphviz में किसी भी विचित्र बातें ऊपर दायर करते हैं तो कृपया - किसी भी प्रतिक्रिया की सराहना की है।
अद्यतन:
अधिक प्रयोग और बंदरगाहों, उपयोगकर्ता marapet द्वारा दिए गए जैसे कुछ सुझावों को आज़माने, मेरे भ्रम की स्थिति में वृद्धि हुई है उदाहरण के लिए ..., नीचे चित्र में, क्यों ये अजीब आकर्षित करने के लिए चुनें dot
है Working->Failed
और Failed->Announced
के लिए स्ट्राइटर लाइनों के विरोध में?
निर्देशित लेआउट (डॉट, ट्विपी, सर्को, पैचवर्क, ओसेज) के लिए कई ग्राफविज़ टूल हैं https://graphviz.gitlab.io/_pages/pdf/dot.1.pdf वे कोशिश करने लायक हो सकते हैं। – qneill