Still loving graphviz

I first encountered graphviz during my master thesis a long time ago (15+ years). It used it to visualize network traffic data into big and beautiful graphs. Today I used it again to quickly show data model dependencies. It's really a joy using - if you are interested you can try it online.

digraph G {
    graph [fontname = "Helvetica", fontsize=8];
    node [fontname = "SF Compact Rounded", fontsize=14];
    edge [fontname = "SF Compact Rounded", fontsize=10];

    subgraph cluster_req {
    color=lightgrey;
    fontcolor=lightgrey;
        "Req 3" [color=lightgrey,fontcolor = lightgrey];
        "Req 2" [color=lightgrey,fontcolor = lightgrey];
        "Req 1";
        label = "REQ";
        labelloc = "b";

    }

    subgraph cluster_tr {
    color=lightgrey;
    fontcolor=lightgrey;
        "Test Run 3" [color=lightgrey,fontcolor = lightgrey]
        "Test Run 2" [color=lightgrey,fontcolor = lightgrey]
        "Test Run 1" 
        label = "RUNS";
        labelloc = "b";
    }

    subgraph cluster_ti {
        color=lightgrey;
        fontcolor=lightgrey;
        "Test Instance 3" [color=lightgrey,fontcolor = lightgrey];
        "Test Instance 2" [color=lightgrey,fontcolor = lightgrey];
        "Test Instance 1";
        label = "TESTCYCL"
        labelloc = "b";
    }

    subgraph cluster_tc {
        color=lightgrey;
        fontcolor=lightgrey;
        "Test Case 3" [color=lightgrey,fontcolor = lightgrey];
        "Test Case 2" [color=lightgrey,fontcolor = lightgrey];
        "Test Case 1" [color = red];
        label = "TEST"
        labelloc = "b";
    }

    subgraph cluster_cycle {
        color=lightgrey;
        fontcolor=lightgrey;
        "Cycle 3" [color=lightgrey,fontcolor = lightgrey];
        "Cycle 2" [color=lightgrey,fontcolor = lightgrey];
        "Cycle 1" [color = red];
        label = "CYCLE"
        labelloc = "b";
    }

    subgraph cluster_bugs {
        color=lightgrey;
        fontcolor=lightgrey;
        "Bug 1" [color = red];
        "Bug 2";
        "Bug 3";
        label = "BUGS"
        labelloc = "b";
    }

    subgraph cluster_runsteps {
        color=lightgrey;
        fontcolor=lightgrey;
        "Run Step 1" ;
        "Run Step 2" [color=lightgrey,fontcolor = lightgrey];
        "Run Step 3" [color=lightgrey,fontcolor = lightgrey];
        label = "STEPS"
        labelloc = "b";
    }

    subgraph cluster_link {
        color=lightgrey;
        fontcolor=lightgrey;
        "Link 6";
        "Link 5";
        "Link 4" [color = red];
        "Link 3";
        "Link 2";
        "Link 1";
        label = "LINK"
        labelloc = "b";
    }

    "Req 1" [color = red];
    "Req 1" -> "Test Case 1" [ label = "covered by", color=red ];
    "Req 1" -> "Test Case 2" [ color = lightgrey];
    "Req 1" -> "Test Case 3" [ color = lightgrey];
    "Req 1" -> "Link 6" [ label = "linked with" ];

    "Test Case 1" -> "Cycle 1" [ label = "planned in", color = red ];
    "Test Case 1" -> "Cycle 2" [ color = lightgrey];
    "Test Case 1" -> "Cycle 3" [ color = lightgrey];
    "Test Case 1" -> "Link 5" [ label = "linked with" ];

    "Cycle 1" -> "Test Instance 1" [ label = "planned as" ];
    "Cycle 2" -> "Test Instance 2" [ color = lightgrey];
    "Cycle 3" -> "Test Instance 3" [ color = lightgrey];
    "Cycle 1" -> "Link 4" [ label = "linked with", color = red];

    "Test Instance 1" -> "Test Run 1" [ label = "executed during" ];
    "Test Instance 1" -> "Link 3" [ label = "linked with" ];

    "Test Run 1" -> "Link 2" [ label = "linked with" ];
    "Test Run 1" -> "Run Step 1" [ label = "consists of" ];

    "Run Step 1" -> "Run Step 2" [ color = lightgrey];
    "Run Step 2" -> "Run Step 3" [ color = lightgrey];
    "Run Step 1" -> "Link 1" [ label = "linked with" ];

    "Link 1" -> "Bug 2";
    "Link 2" -> "Bug 2";
    "Link 3" -> "Bug 1";
    "Link 4" -> "Bug 1" [color = red];
    "Link 5" -> "Bug 3";
    "Link 6" -> "Bug 3";

}
2019-05-27