Search code examples
graphgraphvizgraph-visualization

Showing Arbitrary Graph Nodes and Edges for a Network in GraphViz


I'd like to draw a network, as a fully connected directed graph, with arbitrary number of nodes and edges as shown in the pic. enter image description here What would be the easy way to draw this with GraphViz?


Solution

  • graphviz gallery has a very similar entry, with fancy graphic: it's as easy as replacing the names start, etc... with your own in the generating script. Feed it to dot program.

    digraph G {bgcolor="red:cyan" gradientangle=0
    
        subgraph cluster_0 {
            style=filled;
            color=lightgrey;
            fillcolor="blue:yellow";
            gradientangle=90;
            node [fillcolor="yellow:green" style=filled gradientangle=270] a0;
            node [fillcolor="green:red"] a1;
            node [fillcolor="red:cyan"] a2;
            node [fillcolor="cyan:blue"] a3;
    
            a0 -> a1 -> a2 -> a3;
            label = "process #1";
        }
    
        subgraph cluster_1 {
            node [fillcolor="yellow:magenta" 
                 style=filled gradientangle=270] b0;
            node [fillcolor="magenta:cyan"] b1;
            node [fillcolor="cyan:red"] b2;
            node [fillcolor="red:blue"] b3;
    
            b0 -> b1 -> b2 -> b3;
            label = "process #2";
            color=blue
            fillcolor="blue:yellow";
            style=filled;
            gradientangle=90;
        }
        start -> a0;
        start -> b0;
        a1 -> b3;
        b2 -> a3;
        a3 -> a0;
        a3 -> end;
        b3 -> end;
    
        start [shape=Mdiamond ,
            fillcolor="yellow:brown",
            gradientangle=90,
            style=radial];
        end [shape=Msquare,
            fillcolor="orange:blue",
            style=radial,
            gradientangle=90];
    }