如何绘制从一组点开始的3d图形作为地面XY基础

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

这个问题可能看起来有点奇怪,但出于我的目的并不那么疯狂.它很容易,但我需要你跟着我.

目的

我的目标是绘制三维图.

问题

问题是我手中的材料开始构建此图表.实际上我在2D空间中有一组点(因此有两个实数有序值的元组).考虑将这些点集合存储到数组中的时刻,现在考虑将它们绘制在2D图上.您将对这些点有一个很好的稀疏视图.

那么,第二步是这样的:考虑具有这些点的表面并创建与绘制这些点的平面正交的第三轴.目标是为每个点分配一个数字标量值(使用接受该对并返回数值的函数).因此,图表应显示从每个点开始的条形图,并根据赋值函数具有特定值.

我怎样才能在Mathematica中实现这一目标?

一点点说明

基本上我在2D空间中的点也通过图形连接.是否可以将条形顶部连接到其基点在2d图形中连接在一起的其他条形图的顶部?

其他一些说明

我的图形不必是一个表面,而只是放置在一个平面上的一组条形图,它们位于它们所指的对应点所在的确切位置.但如果你有一个很好的提示如何绘制除了酒吧以外的表面,它将很乐意接受.

我希望我很清楚.我想指出我有Mathematica 8所以所有功能都可用.谢谢.

Hei*_*ike 6

这可以使用Graphics3D基元来完成.让我们从一些数据开始

(* a list of 2D coordinates *)
points2D = RandomReal[{0, Pi}, {50, 2}];

(* some edges as a list of pairs of vertex indices *)
edges = Union[Flatten[MapIndexed[Sort /@ Thread[{#2[[1]], 
     Nearest[points2D -> Automatic, #, 4]}] &, points2D], 1]];

(* constructing list of 3D coordinates *)
f[{x_, y_}] := 2 + Sin[x y]
points3D = {##, f[{##}]} & @@@ points2D;
Run Code Online (Sandbox Code Playgroud)

然后可以如下构造实际绘图(宽度是条的宽度的一半)

With[{width = .02},
  Graphics3D[{{LightBlue, EdgeForm[None],
    Cuboid[{#1, #2, 0} - width {1, 1, 0}, {##} + width {1, 1, 0}] & @@@ points3D},
   {Orange,
    GraphicsComplex[points3D, Line[edges]]}}, 
  Lighting -> "Neutral", 
  BoxRatios -> {1, 1, .6}]]
Run Code Online (Sandbox Code Playgroud)

Mathematica图形