For completeness's sake, let me repeat @kglr's idea here:
For this specific graph, we can use MultipartiteEmbedding. Observing that the size of the "graph layers" (also obtainable by First@GraphDistanceMatrix[g]
) as successive integers up to 6,
Graph[rules,
GraphLayout -> {"MultipartiteEmbedding", "VertexPartition" -> Range[6]}
]
Rotating the layout is most easily performed with my IGraph/M package (which, in my admittedly very biased opinion, is an absolute must for working with graphs in Mathematica ;-).
Graph[rules,
GraphLayout -> {"MultipartiteEmbedding", "VertexPartition" -> Range[6]}
] // IGVertexMap[RotationTransform[-Pi/2], VertexCoordinates]
You may want an extra scaling transform:
Graph[rules,
GraphLayout -> {"MultipartiteEmbedding", "VertexPartition" -> Range[6]}
] // IGVertexMap[RotationTransform[-Pi/2] /* ScalingTransform[{1, 1/2}], VertexCoordinates]
P.S. I took the rules
from your notebook:
rules = {{0, 0} -> {1, 0}, {0, 0} -> {0, 1},
{1, 0} -> {2, 0}, {1, 0} -> {1, 1}, {0, 1} -> {1, 1}, {0, 1} -> {0,
2},
{2, 0} -> {3, 0}, {2, 0} -> {2, 1}, {1, 1} -> {2, 1}, {1, 1} -> {1,
2}, {0, 2} -> {1, 2}, {0, 2} -> {0, 3},
{3, 0} -> {4, 0}, {3, 0} -> {3, 1}, {2, 1} -> {3, 1}, {2, 1} -> {2,
2}, {1, 2} -> {2, 2}, {1, 2} -> {1, 3}, {0, 3} -> {1, 3}, {0,
3} -> {0, 4},
{4, 0} -> {5, 0}, {4, 0} -> {4, 1}, {3, 1} -> {4, 1}, {3, 1} -> {3,
2}, {2, 2} -> {3, 2}, {2, 2} -> {2, 3}, {1, 3} -> {2, 3}, {1,
3} -> {1, 4}, {0, 4} -> {1, 4}, {0, 4} -> {0, 5}}