you have multiple possibilities to do that
- box node in cluster in cluster
- plaintext node in cluster in cluster in cluster
- node with HTML like label and HTML tables
box in clusters:
graph "graph A"
{
label="\G"
subgraph "cluster A"
{
subgraph "cluster B"
{
c[shape=box];
}
}
}
plaintext in clusters:
graph "graph A"
{
label="\G"
subgraph "cluster A"
{
subgraph "cluster B"
{
subgraph "cluster C"
{
d[shape=none];
}
}
}
}
both variants have the labels set to their names which is default for nodes but not for graphs (and all included subgraphs). as the graph label is inherited you can either set all labels manually or use the name palceholder as I did.
for HTML like lables
graph "graph A"
{
label="\G"
a [shape=none label=<<table><tr><td><table><tr><td><table><tr><td>node a</td></tr></table></td></tr></table></td></tr></table>>];
}
you have a lot more of freedom in formatting (margin, padding, border, ...)