2013-02-02 14 views
14

मैं एक निर्देशित ग्राफ मुद्रित करने की कोशिश कर रहा हूं, और मैं रंग और आकार जैसे विभिन्न नोड विशेषताओं को बदलता रहता हूं। क्या एक चर का उपयोग करने का कोई तरीका है जिसे एक बार परिभाषित किया जाता है और एकाधिक नोड्स के लिए उपयोग किया जाता है? आदर्श रूप में मुझे ऐसा कुछ चाहिए:क्या डीओटी भाषा समर्थन चर/उपनाम है?

digraph g { 

building_color = "red" 
land_color = "green" 

farm [ fillcolor=land_color] 
barn [ fillcolor=building_color] 
house [ fillcolor=building_color] 

} 

तो मैं प्रत्येक नोड पर जाने के बिना एक बार इमारत रंग बदल सकता हूं। क्या यह संभव है?

उत्तर

14

आप क्रम में पुनरावृत्ति से बचने की मूलभूत मूल्यों परिभाषित कर सकते हैं:

digraph g{ 
    node[fillcolor=red]; 
    barn; 
    house; 
    ... 
    node[fillcolor=green]; 
    farm; 
    ... 

    edge[color=red]; 
    barn -> house; 
    edge[color=green]; 
    barn --> farm; 
    house --> farm; 
} 

रियल चर समर्थित नहीं हैं। ग्राफ़ पैटर्न स्कैनिंग और प्रसंस्करण भाषा -


एक और अधिक जटिल समाधान है gvpr उपयोग करने के लिए किया जाएगा।

gvpr ग्राफ को पढ़ता है और आउटपुट करता है और ग्राफ, नोड्स और विशेषताओं को जोड़ने और संशोधित करने की अनुमति देता है।

उदाहरण के लिए आप comment विशेषता में कस्टम जानकारी संग्रहीत कर सकते हैं और इस विशेषता की सामग्री के आधार पर आपकी स्क्रिप्ट कार्य कर सकते हैं।

This और this SO उत्तर में gvpr स्क्रिप्ट के उदाहरण शामिल हैं।

8

सबसे आसान समाधान m4 - generic text-to-text preprocessor का उपयोग करना सबसे आसान समाधान है।

SampleGraph.dot.m4:

digraph g { 

    define(`building_style',`style=filled, fillcolor = "red"') 
    define(`land_style',`style=filled, fillcolor = "green"') 

    farm [label="Farm", land_style] 
    barn [building_style] 
    house [label="House", building_style] 
} 

भागो m4 SampleGraph.dot.m4 > SampleGraph.dot

SampleGraph.dot परिणामस्वरूप:

digraph g { 




    farm [label="Farm", style=filled, fillcolor = "green"] 
    barn [style=filled, fillcolor = "red"] 
    house [label="House", style=filled, fillcolor = "red"] 
} 
संबंधित मुद्दे