1

我想向社区寻求帮助,以使用 Mathematica 中的颜色图创建类似 Matlab 的 3D 冲浪图。为了使问题更具体,假设我们在 3D 空间中有一组数字,并且为每个点分配了一些函数值 c:

{{x1,y1,z1,c1},{x2,y2,z2,c2},...,{xN,yN,zN,cN}} 

这些点位于 3D 表面上,例如球体。现在在 matlab 中,如果这些点被正确地表示为矩阵X, Y, ZC我们可以简单地绘制这个表面

k = 5;
n = 2^k-1;
[x,y,z] = sphere(n);
c = magic(2^k);
surf(x,y,z,c);
colormap gray
axis equal

这里重要的是可以通过颜色条读取绘图的函数值。

现在社区的问题是:

我们可以在 Mathematica 中制作这样的图吗(带有颜色条 - 这是重要的部分)???

我在网上搜索了一个没有运气的解决方案。我查看了 , 之类的东西ListPlot3D,但是对于这些函数ListSurfacePlot3DListPointPlot3D您只能传递一个没有相应点值的表面(除非有一些我不明白的东西)。

有谁知道解决方案,一种在 Wolfram Mathematica 中创建此类图的方法?

4

1 回答 1

2

您可以使用ColorFunction指定颜色函数:

ParametricPlot3D[{Sin[t] Cos[f], Sin[t] Sin[f], Cos[t]}, {t, 0, Pi}, {f, 0, 2 Pi} , 
 ColorFunction -> Function[{x, y, z, t, f}, RGBColor[z]]]

阴谋

另一种方法是使用纹理;我将使用您通过其他软件生成的数据。

{x, y, z, c} = Import["/tmp/sphere.mat"];

我们要应用的纹理是c(实际旋转了90度)

ArrayPlot[c]

质地

ParametricPlot3D[{Sin[t] Cos[f], Sin[t] Sin[f], Cos[t]}, {t, 0, Pi}, {f, 0, 2 Pi}, 
  PlotStyle -> Texture[ Rotate[ArrayPlot[c], Pi/2]], Lighting -> "Neutral"]

球体M

于 2013-01-10T20:33:57.920 回答