Graph
имеет опцию VertexCoordinates
, с помощью которой вы можете указать координаты вершин, чтобы вы могли нанести ListDensityPlot
и Graph
друг на друга.Например, предположим, что ваши данные имеют вид
f[x_, y_] := x + y
pts = RandomReal[1, {40, 2}]; (* xy coordinates *)
edges = Flatten[Table[{i -> Position[pts, #][[1, 1]]} & /@
Rest[Nearest[pts, pts[[i]], 4]], {i, Length[pts]}]];
edges = Union[edges, SameTest -> (SameQ[#1, #2] || SameQ[#1, Reverse[#2]] &)];
Тогда вы можете сделать что-то вроде
densPlot = ListDensityPlot[{##, f[##]} & @@@ pts];
graph = Graph[Range[Length[pts]], edges,
VertexCoordinates -> pts,
VertexShapeFunction -> "Square",
VertexSize -> 1.5, VertexLabels -> "Name",
EdgeStyle -> Directive[Opacity[1], White]];
Show[densPlot, graph]