What about 3d fractals? Apart from finding a graph embedding in with 3d coordinates, one may also use high degree field extensions. By joining functional graph from multiple reduction directions, fractal surfaces may be obtained.
Consider field extension of degree 2. Let p > 3 be a prime number, let q = p^2. Since p^2 == 1 (mod 3), F_q would always have 3rd roots (now without requirement of being 3n+1 form). Let (x,y) be an element of F_q. if we define two iterative maps:
u(x,y) = reduce(x-1, y)
v(x,y) = reduce(x, y-1)
Merging functional graph of u(.) and v(.) gives new interesting manifold-like structure.
Needs["FiniteFields`"];
POWER = 3;(*power degree for reduction during iteration*)
EXTPWR = \
2;(*field extension degree*)
p = RandomPrime[{150, 210}];
q = p^EXTPWR;
Fq = GF[p, EXTPWR];
nVert = (q - 1)/POWER; nEdge = nVert - 1;
pr = Fq[{0, 1}];
w = Power[pr, (q - 1)/POWER];
pwrlist = Table[Power[w, i], {i, 0, POWER - 1}];
pwrlist[[1]] =
Fq[{1, 0}];(*fix integer 1*)
Clear[reduce, ifn, fieldElemSize];
(*this will allow some unique ording among elements of F_q*)
fieldElemSize[1] := 1;
fieldElemSize[GF[p_, _][{i_Integer, j_Integer}]] := i + j*p;
reduce[x_] := MinimalBy[x*pwrlist, fieldElemSize][[1]];
ifn[i_] := reduce[i - 1];
ifn2[i_] := reduce[i - Fq[{0, 1}]];
xlist = Table[reduce[Power[pr, i]], {i, 0, nEdge}];
ixmap = Association@Table[xlist[[i]] -> i, {i, Length@xlist}];
ixmap[0] = 0;
graph = {};
Do[
If[i[[1, 1]] != 0, AppendTo[graph, ixmap[i] -> ixmap[ifn[i]]]];
If[i[[1, 2]] != 0, AppendTo[graph, ixmap[i] -> ixmap[ifn2[i]]]]
, {i, xlist}];
graphMap = Association@graph;
graph = graph /. Rule -> UndirectedEdge;
Rasterize[
GraphPlot3D[graph,
GraphLayout -> {"SpringElectricalEmbedding",
"MaxIteration" -> 100000, "Tolerance" -> 0.0001},
Background -> Black], ImageSize -> 1000]