hgraph[layers_]:=Module[{inf,extra,gg,coordinates,recenter,twist},If[layers<3,Return[Graph[UndirectedEdge@@@Flatten[Table[Sort/@(Partition[Table[2kPi/(2^n),{k,0,2^n-1}],2,1,1]/Pi),{n,1,layers+1}],1],VertexSizeSmall]]];inf=Flatten[Table[Sort/@(Partition[Table[2kPi/(2^n),{k,0,2^n-1}],2,1,1]/Pi),{n,1,layers+1}],1];extra=Select[Union[Flatten[inf]],Denominator[#]2^layers&];gg=Graph[UndirectedEdge@@@Join[inf,{#,2Numerator[#]}&/@extra,Partition[2Numerator/@extra,2,1,1]],GraphLayout"TutteEmbedding",VertexSize(1/6)^Sqrt[layers],EdgeStyle(#White&/@UndirectedEdge@@@Join[{#,2Numerator[#]}&/@extra,Partition[2Numerator/@extra,2,1,1]]),VertexStyle(#{White,EdgeForm[White]}&/@(2Numerator/@extra))];coordinates=Take[Transpose[{VertexList[gg],GraphEmbedding[gg]}],Length[Union[Flatten[inf,1]]]];recenter=Mean[{coordinates[[1,2]],coordinates[[2,2]]}];coordinates={#[[1]],#[[2]]-recenter}&/@coordinates;twist=RotationMatrix[3Pi/2+Arg[coordinates[[1,2]].{1,I}]];coordinates={#[[1]],Chop[#[[2]].twist]}&/@coordinates;Graph[UndirectedEdge@@@inf,VertexCoordinatesRule@@@coordinates,VertexSizeSmall]]