As a side note in #6 we need to set some attributes when defining the Graph for later rendering. We have covered this for Vertice and Edge but not for Graph.
Why not mimic the GraphViz way to set global aka Graph level stuff?
$viz->setLayout(GraphViz::LAYOUT_VERTEX, 'style', 'filled');
This way we can define general Vertice and Edge attributes in one go.