dot graph: subgraph - chunhualiao/public-docs GitHub Wiki

dot graph

digraph subgraph_demo {
    // Graph attributes
    rankdir=TB;
    
    // Main nodes
    MainNode1 [label="Main Node 1", color="lightblue", shape="box"];
    MainNode2 [label="Main Node 2", color="lightgreen", shape="box"];
    
    // Subgraph for Group A
    subgraph cluster_groupA {
        // Subgraph attributes
        label="Group A";
        color="lightcoral";
        style="filled";
        fillcolor="lightyellow";
        
        // Nodes in subgraph A
        A1 [label="Node A1", color="lightpink", shape="ellipse"];
        A2 [label="Node A2", color="lightpink", shape="ellipse"];
        A3 [label="Node A3", color="lightpink", shape="ellipse"];
        
        // Edges within subgraph A
        A1 -> A2 [label="Internal A", color="red"];
        A2 -> A3 [label="Internal A", color="red"];
    }
    
    // Subgraph for Group B
    subgraph cluster_groupB {
        // Subgraph attributes
        label="Group B";
        color="lightblue";
        style="filled";
        fillcolor="lightcyan";
        
        // Nodes in subgraph B
        B1 [label="Node B1", color="lightgreen", shape="diamond"];
        B2 [label="Node B2", color="lightgreen", shape="diamond"];
        
        // Edges within subgraph B
        B1 -> B2 [label="Internal B", color="blue"];
    }
    
    // Nested subgraph example
    subgraph cluster_groupC {
        // Subgraph attributes
        label="Group C (with nested subgraph)";
        color="lightgray";
        style="filled";
        fillcolor="whitesmoke";
        
        C1 [label="Node C1", color="orange", shape="box"];
        
        // Nested subgraph
        subgraph cluster_nestedD {
            label="Nested Group D";
            color="purple";
            style="filled";
            fillcolor="lavender";
            
            D1 [label="Node D1", color="purple", shape="ellipse"];
            D2 [label="Node D2", color="purple", shape="ellipse"];
            
            D1 -> D2 [label="Nested", color="purple"];
        }
        
        C1 -> D1 [label="To Nested", color="orange"];
    }
    
    // Edges between main nodes and subgraphs
    MainNode1 -> A1 [label="To Group A", color="green", weight="2.0"];
    MainNode1 -> B1 [label="To Group B", color="blue", weight="1.5"];
    A3 -> MainNode2 [label="From Group A", color="red", weight="1.8"];
    B2 -> MainNode2 [label="From Group B", color="blue", weight="1.2"];
    MainNode1 -> C1 [label="To Group C", color="gray", weight="1.0"];
}