Matlab在mathematica中使用色彩图进行冲浪

时间:2013-01-10 20:20:22

标签: matlab wolfram-mathematica

我想请求社区帮助创建一个带有色彩图的类似Matlab的3D冲浪图,但在Mathematica中。为了使问题更具体,可以说我们在3D空间中有一组数字,并且每个点都有一些函数值c被赋值:

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

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

绘制这个表面
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中制作这样的情节(用彩条 - 这是重要部分)???

我在网上搜索了一个没有运气的解决方案。我查看了ListPlot3DListSurfacePlot3DListPointPlot3D等内容,但是对于这些函数,您只能传递没有相应点值的曲面(除非有一些我不理解的东西)。 / p>

有没有人知道一个解决方案,一种在Wolfram Mathematica中创建这样的图的方法?

1 个答案:

答案 0 :(得分: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]]]

plot

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

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

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

ArrayPlot[c]

texture

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"]

sphereM