如何从一组2D点绘制2D密度图并显示连接这些顶点的网络

And*_*dry 1 wolfram-mathematica mathematica-8

我的问题如下.

目的

在平面上绘制一组2D点,其具有用于为每个点提供强度的函数.

fun(x,y):=x+y
Run Code Online (Sandbox Code Playgroud)

另外,我有一个图表连接这些点.我需要在密度图上显示图形,这绝对是必要的.

问题

不知道怎么做.我搜索了一下Mathematica文档,但我找不到多少.

一些笔记

每当有人找到解决方案时,我也有一个问题.如何在密度图上使用图形功能是不可能的?例如,如果我想在顶点上显示标签,是否可以使用某种参数化解决方案.也许我要求太多,这只是一个小小的注意事项,如果花费太多时间就跳过它.

最后的笔记

我需要2D图.不是3D的.只是2D很好.

Hei*_*ike 5

Graph有一个选项VertexCoordinates,您可以使用该选项指定顶点的坐标,因此您可以绘制a ListDensityPlot和a 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]] &)];
Run Code Online (Sandbox Code Playgroud)

然后你可以做类似的事情

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]
Run Code Online (Sandbox Code Playgroud)

Mathematica图形